Розробка уроку

Тема: поняття об'єкта у мові програмування, його властивостей і методів. Створення програми, її виконання та налагодження у Ruby.

Мета:

По завершенню вивчення учень

Обладнання: ПК із встановленими ОС, текстовим редактором (бажано з підсвіткою службових слів, наприклад, Sublime Text 3), інтерпретатором мови програмування Ruby або стійким сполученням з мережею Інтенет для використання інтерпретаторів Ruby в режимі online, (дана) інструкція.

Структура уроку

  1. Організаційний момент.
  2. Актуалізація опорних знань.
  3. Вивчення нового матеріалу.
  4. Інструктаж з ТБ.
  5. Закріплення вивченого матеріалу.
  6. Підбиття підсумків уроку.
  7. Домашнє завдання.

Хід уроку

1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.

2. Актуалізація опорних знань

Завдання. Назвати поняття, виділені жирним шрифтом, і порівняти з поданим описом у тексті щодо об'єктно-орієнтованого програмування (ООП).

3. Вивчення нового матеріалу

Rubyце інтерпретована мова високого рівня для швидкого і зручного об’єктно-орієнтованого програмування.

Інтерпретована мова програмуваннямова програмування, в якій код програми не перетворюють попередньо повністю у машинний код для виконання (на відміну від компільованих мов), а виконують рядок за рядком з допомогою спеціальної програми-інтерпретатора.

Програмний код, код програми, текст програми — запис опису змінних і сталих, приєдниних бібліотек, вказівок до виконання мовою програмування.

Програма, написана з дотриманням парадигми об'єктно-орієнтованого програ­мування, має містити класи, об'єкти й опис взаємодій об'єктів між собою, в результаті яких змінюються їхні властивості. Об'єкт в програмі можна створити лише на основі якого-небудь класу. Тому об'єктно-орієнтована програма має починатися з проектування і створення класів. Опис класів можна або розташувати на початку коду програми, або імпортувати з інших файлів, у яких такий опис також потрібно розташувати на початку коду.

Ruby — мова сценаріїв, які складаються з операторів, призначених для виконання. Ці оператори виконують послідовно, у порядку їх виявлення. Коли інтерпретатор отримує визначення (опис) класу, він виконує цей оператор створення нового класу. Отримавши визначення методу, інтепретатор визначає новий метод. Пізніше, при виконанні програми, інтерпретатор, напевно, зустріне виклик цього методу. Цей виклик призведе до виконання операторів, що входять у тіло методу.

Виклик інтерпретатора Ruby можна здійснити з командного рядка (консолі, термінала), вказавши сценарій, призначений для виконання.

Наприклад: c:\>ruby d:\1.rb на ПК під керуванням ОС MS Windows.

Код програми можна створити у середовищі довільного текстового редактора. Для зручності роботи користувача створюють інтерактивне інтегроване середовище програмування, у якому об'єднано можливості:

Інтерактивним середовище називають тому, що воно працює в режимі постійного спілкування з користувачем, а інтегрованим тому, що об'єднує в собі одночасно всі згадані вище можливості.

Наразі є навіть безкоштовні online середовища програмування, що не вимагають встановлення програмного забезпечення безпосередньо на комп'ютер користувача. Наприклад, Coding Ground, яке надає можливість працювати з файлами.

Створення класів мовою Ruby здійснюють описують таким чином:

class Назва_класу
 #тіло_класу
end

Тут назва класу — це глобальна стала, запис якої потрібно розпочати з великої літери і продовжувати довільною комбінацією літер латиниці, цифр і символу підкреслення. Рекомендують використовувати осмислені назви класів. Якщо назва складається з кількох слів, то для їхнього поділу рекомендують використовувати символ підкреслення або кожне слово писати з великої літери.

Тіло класу може містити сталі й змінні класу, методи класу, змінні й методи представника (екземпляра):

Сталі стужать для зберігання незмінюваних даних, спільних для всього класу.

Змінні визначають у тілі класу. Їх використовують для зберігання змінюваних даних: стану класу і його представників. Змінні можуть існувати в двох різних областях видимості: області видимості класу і області видимості екземпляра класу.

Змінна класу — це змінна, оголошена в області видимості класу. Її можна оголосити в довільному місці тіла класу. У тому числі у тілі методу. Назву такої змінної починають з двох символів «@@». Кожна така змінна є посиланням на один і той самий об'єкт для всіх його екземплярів. Як правило змінну класу ініціалізують у тілі класу, а використовують у тілі його методів. Використання неіснуючої змінної класу вважають помилкою.

Змінна представника (екземпляра) — поле об’єкта класу — це змінна, оголошена в області видимості екземплярів класу. Її можна оголосити у тілі метода екземпляру. Назву такої змінної розпочинають з символу «@». Таку змінну можна використати у тілі будь-якого методу екземпляра. Вона посилається на різні об'єкти для різних представників. Як правило змінні екземпляра ініціалізують у тілі методу в момент його виклику. Використання неіснуючої змінної екземпляра вважають її оголошенням.

Локальна змінна — це змінна, описана у методі класу і недосяжна за його межами.

Глобальна змінна — це змінна, доступ до яких є у всіх класів. Назву такої змінної розпочинають з символа «$».

Методи — це абстрактна сутність, що визначає дії, які може виконувати об'єкт або які можна виконувати з самим об'єктом (змінювати його стан). З точки зору синтаксису, метод — це фрагмент коду з назвою, що описує виконання певних дій.

Метод класу — це метод, що визначає поведінку класу. Його описують таким чином:

def НазваКласу.назва_методу (параметри)
 #тіло_метода
end

Метод представника (екземпляра) класу — це метод, що визначає поведінку екземпляру класу. Його описують у тілі класу таким чином:

def назва_методу (параметри)
    #тіло_методу
end

На назви методів поширюють ті самі правила, що й на наазви класів, але розпочинають їх з малої літери. Параметри можуть бути відсутні.

Тіло методуфрагмент коду, виконуваний у момент виклику методу.

Кожний метод пов'язано з тим об'єктом, для якого він визначений. Метод не можна використовувати без посилання на відповідний об'єкт. Найпростіший спосіб такого виклику виглядає таким чином:

назва_об'єкта.назва_методу

Об'єкт має існувати на час виклику методу. Тіло методу використовує область видимості об'єкта. У ній доступні оголошені параметри і змінні представника класу. У тілі методу екземпляра можна при необхідності використовувати псевдозмінну self — посилання на об'єкт, для якого метод було викликано.

Створення класу здійснюють у процесі його оголошення (опису).

Cтворення представника класу здійснюють вбудований метод класу new:

назва_змінної = НазваКласу.new

Таким чином виникає об'єкт, доступ до якого можна отримати через назву змінної, пов'язаної з ним. Кількість об'єктів, які можна створити на основі одного й того самого класу, не обмежено.

Приклад 1. Розглянемо програму, в якій:

class Animal
  def breath
    puts "Вдихнули й видихнули"
  end
end
dog = Animal.new
cat = Animal.new
dog.breath
cat.breath
Маємо такий результат виконання:
Вдихнули й видихнули
Вдихнули й видихнули

Метод new викликає метод initialize, який ініціалізує властивості об'єкта, після чого new повертає посилання на новий об'єкт. Якщо потрібно втрутитися у процес ініціалізації нового представника класу й передати йому аргументи, необхідно власноруч описати метод initalize — конструктор класу.

Приклад 2. Розглянемо програму, в якій:

class Person
  def initialize (name, age)
    @name = name
    @age  = age
  end
  def exec
  print @name," має ",@age," років"
  end
end
p1 = Person.new("Олесь",13)
p1.exec

Маємо такий результат виконання:

Олесь має 13 років

В об'єктно-орієнтованих мовах часто створюють методи для доступу до властивостей об'єктів ззовні. Можна запрограмувати такі методи «власноруч» — див. приклад:

class Person
  def initialize (name, age)
    @name = name
    @age  = age
  end
  def nameout
     @name      # повернути значення змінної
  end
  def namein(x)
     @name = x  # надати значення, отримане ззовні
  end
end
p1 = Person.new("Олесь",13)
print p1.nameout
p1.namein('Микола')
print ' ',p1.nameout
Маємо такий результат виконання:
Олесь Микола

Ruby надає можливість використати методи:

Наприклад:

class Person
  attr_reader  :name, :age # створено @name, name,        @age, age
  attr_writer  :name, :age # створено @name,       name=, @age,      age=
  attr_accesor :name, :age # створено @name, name, name=, @age, age, age=
end
Приклад 3. Програма:

class Person
  attr_accessor  :name, :age
end
p1 = Person.new 
p1.name="Олена"
p1.age=34
puts p1.age
puts p1.name
має такий результат виконання:
34
Олена

4. Інструктаж з ТБ
5. Закріплення вивченого матеріалу


Завдання 1. Перевірити коректність виконання програм, поданих у прикладах 1, 2 і 3. Для цього виконати такі дії:

  1. У середовищі текстового редактора (наприклад, Sublime Text):
    • набрати текст відповідної програми;
    • зберегти (Ctrl + S) текст у файлі *.rb.
    • внести зміни при потребі.

  2. Запустити програму на виконання:
    • або через командний рядок (термінал);
    • або використовуючи online сервіс
  3. Вносячи допустимі зміни у код (інші значення, інші властивості) пересвідчитися у коректності роботи програми.

Примітка Вказання типу rb при записі файлу призводить до підсвічування службових слів мови Ruby.

Завдання 2. Написати код програми, у якій:

6. Підбиття підсумків уроку
Виставлення оцінок.

7. Домашнє завдання
Написати код мовою Ruby, у якому cтворити клас User з властивостями login, password, e-mail, rating. Як усталено значення рейтингу встановити нульовим.


Текст упорядкувала Оніщенко Лариса Іванівна, учитель гімназії №59 імені О. М.Бойченка Голосіївського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 17.10.2017 по 20.10.2017.


У роботі використано матеріали, упорядковані учителями: