Тема: поняття об'єкта у мові програмування, його властивостей і методів. Створення програми, її виконання та налагодження мовою Python.
Мета: сформувати визначення об'єкта у мові програмування, ознайомити учнів з його властивостями та методами, навчити створювати програми мовою Python.
По завершенню вивчення учень:
Обладнання: ПК із встановленим ОС і середовищем програмування мовою Python або стійким сполученням з Інтернетом для роботи з середовищем програмування мовою Python у режимі online.
Структура уроку
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.
Мотивація навчання: на цьому уроці ви ознайомитеся з основами об'єктно-орієнтованого програмування (ООП) мовою Python. Ви дізнаєтеся про принципи ООП і навчитеся писати простенькі програми мовою Python.
Найчастіше об'єкти, що створюються за допомогою ООП, відображають реальні предмети. Наприклад, при створенні форуму сайту доречно мати клас Member для збереження даних про кожного учасника форуму (ім'я, обліковий запис, електронна адреса, пароль тощо). Для цього класу потрібно означити (описати) методи опрацювання даних: реєстрація, авторизація, вихід із системи тощо.
2. Актуалізація опорних знань
Завдання. Назвати поняття, виділені жирним шрифтом, і порівняти з поданим описом у тексті щодо об'єктно-орієнтованого програмування (ООП).
Python — об'єктно-орієнтована мова програмування — потужний інструмент для створення програм різноманітного призначення, доступний навіть для новачків. З його допомогою можна вирішувати завдання різних типів.
Переваги й недоліки Python
Iнтерпретована мова програмування. Це значно спрощує налагодження програм, але й зумовлює низьку швидкість виконання.
Динамічна типізація: не потрібно заздалегідь оголошувати тип змінної, який можна змінювати у процесі виконання. Це дуже зручно, особливо для початківця, але може призвести до алгоритмічної помилки, яку легко виявити у випадку типізованої мови.
Підтримка модульності: можливість використовувати один модуль у різних програмах.
Вбудована підтримка Unicode у рядках. Інакше кажучи, можна використовувати абетки великої кількості мов та спеціальні символи.
Підтримка об'єктно-орієнтованого програмування в одній з найзрозуміліших реалізацій.
Автоматичне прибирання сміття, відсутність витоків пам'яті.
Інтеграція з C/C++ у випадку, коли можливостей Python недостатньо.
Зрозумілий і лаконічний синтаксис, що сприяє ясному відображенню коду. Зручна система виокремлення функцій дозволяє створювати код, в якому буде легко розібратися іншій людині в разі необхідності.
Велика кількість модулів, у стандартній поставці Python 3 і сторонніх. У деяких випадках для написання програми досить лише знайти й скомбінувати потрібні модулі. Інакше кажучи, можна складати програми на вищому рівні, працюючи з уже готовими елементами, які виконують різні дії.
Багатоплатформність: програма мовою на Python працюватиме однаково незалежно від операційної системи. Відмінності виникають лише в рідкісних випадках, які легко заздалегідь передбачити завдяки наявності докладної документації.
Області застосування Python
Це означає, що Python забезпечує щонайменше таке:
Використання мови Python практично нічим не обмежене, тому її також можна використовувати у великих проектах. У тому числі гігантів Google і Yandex. Саме простота й універсальність Python роблять цю мову однією з кращих мов програмування.
3. Вивчення нового матеріалу
Python відповідає усім принципам об'єктно-орієнтованого програмування (ООП). Це корисно при довгостроковій розробці програми декількома людьми, бо ыстотно полегшує розуміння коду. У Python все є об'єктами — і рядки, і списки, і словники, і все інше. Програміст може описати свій тип даних (клас), визначити в ньому свої методи. Хоча це не є обов'язковим: можна користуватися (лише) вбудованими об'єктами.
Створення об'єкта здійснюють таким чином:
назва_змінної = назва_класу()
Тут дужки обов'язкові! Після такої вказівки буде створено об'єкт, доступ до якого можна отримати за назвою змінної, пов'язаної з ним. При створенні об'єкт отримує властивості свого класу.
Кількість об'єктів, які можна створити на основі того чи іншого класу, не обмежено.
Об'єкти одного класу мають той самий набір властивостей (змінних, параметрів, атрибутів), а от їхні значення можуть бути різними. Інакше кажучи, об'єкти одного класу схожі в описі, але їх можна розрізнити.
Приклад створення й використання порожнього класу
class A: # Опис порожнього класу А pass a = A() # Створення представника класу А b = A() # Створення представника класу А a.arg = "A" # Створення властивості arg об'єкта а і надання їй значення print(a.arg) # Виведення значення властивості arg представника а
У результаті виконання цього коду буде виведено символ "A". Якщо останній оператор замінити на такий:
print(b.arg)
отримаємо повідомлення:
'A' object has no attribute 'arg'
Методи класу — це програми, подані в описі класу. Методу необхідно повідомити, дані якого об'єкта потрібно буде опрацьовувати. Для цього методу в якості першого (а іноді єдиного) аргументу передають назву змінної, пов'язаної з об'єктом (можна казати, передають сам об'єкт). Щоб в описі класу вказати використання своїх властивостей чи методів, використовують службове слово self.
Зверення до властивості чи методу конкретного об'єкта в основному блоці програми мають такий вигляд:
назва_об'єкта.назва_властивості
назва_об'єкта.назва_методу
Приклад опису методу
class A: def g(self): return "Вітаю!" a=A() print(a.g())
виводить рядок: "Вітаю!" Тут self — обов'язковий аргумент, що вказує на того представника класу, для якого застосовують методу. У наступному прикладі є зміна значення властивості (змінної, атрибуту, параметра) між застосуванням методу.
class B: arg = '1' def g(self): return self.arg b = B() print(b.g()) b.arg = '2' print(b.g())
Цей код виведе два рядки:
1
2
Розглянемо приклад визначення прямокутника — його властивостей та дій, які можна виконувати з ним. Важливо усвідомити — опис об'єкта не означає створення об'єкта чи виконання дій з ним. У поданому далі прикладі прямокутник має ширину x, довжину y. На основі цих даних можна обчислити його площу s й периметр p.
class Rectangle: def __init__(self, x, y): self.x = x self.y = y def s(self): # Обчислення площі return self.x * self.y def p(self): # Обчислення периметру return 2*(self.x + self.y) def describe(self, text): # Опис прямокутника self.description = text def scaleSize(self, scale): # Пропорційна зміна сторін self.x = self.x * scale self.y = self.y * scale r = Rectangle(60, 35) # Створення представника r класу Rectangle print (r.s()) # Обчислення й веведення значення площі print (r.p()) # Обчислення й веведення значення периметра r.scaleSize(0.5) # Зменшення розмірів удвічі print (r.s()) # Обчислення й веведення значення площі зменшеного прямокутника print (r.p()) # Обчислення й веведення значення периметра зменшеного прямокутника
У поданому вище прикладі:
функція __init__ створює представника класу Rectangle;
службове слово self використано для звертання до методів (функцій) та властивостей (атрибутів) класу всередині опису класу;
у коді класу доступ до змінних та функцій цього класу здійснено записом слова self і через крапку — назви властивості чи функцію класу;
при виконанні вказівки створення представника r класу Rectangle:
r = Rectangle(60, 35)
функція __init__ надає значення 60 і 35 його властивостям відповідно x та y.
Виконання програми призводить до виведення таких чисел.
2100 190 525.0 95.0
Немає обмежень у кількості представників класу — створити їх можна скільки завгодно. Наприклад, вставити такі рядки у код програми після опису класу Rectangle:
r_long = Rectangle(120, 10) r_short = Rectangle( 30, 10)
Створені таким чином довгий і короткий прямокутники матимуть свої власні набори функцій та змінних всередині, повністю незалежні один від одного.
4. Інструктаж з ТБ
5. Закріплення вивченого матеріалу
Завдання 1. Написати програму, у якій (у вказаному порядку):
Записати програму у файл з назвою Ваше_прізвище_2.py у вказану вчителем теку. Порівняти з демостраційним розв'язанням.
6. Підбиття підсумків уроку
Виставлення оцінок.
7. Домашнє завдання
До коду в першому завданні додати опис ще однієї властивості та ще одного методу, що дозволить її змінювати. Створити третій об'єкт і змінити всі його властивості.
Текст упорядкувала Ірина Валеріївна Перова, учитель спеціалізованої школи № 329 «Логос» Дарницького району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 16.01.2017 по 20.01.2017.