Урок:

Елементи теорії об’єктно-орієнтованого програмування

15.11.2023
0 0
Вміст уроку:
1
2
3

Урок не містить жодного завдання. Додайте завдання.

Щоб додати завдання, оберіть категорію завдання на панелі запитань.

1

1 з 12 балів

ООП

Обʼєктно-орієнтоване програмування - один з найефективніших підходів до написання програмного забезпечення.

В обʼєктно-орієнтованому програмуванні ви пишете класи, що є абстракцією реальних предметів і ситуацій, та створюєте на їх основі обʼєкти. Клас визначає загальну поведінку цілої категорії обʼєктів. Коли ви створюєте індивідуальні обʼєкти класу, кожен з них буде автоматично наділений спільними характеристиками, а потому ви зможете надати їм будь-яких індивідуальних рис.

Створення обʼєкта з класу називається «створення екземпляра» (instantiation). У цьому розділі ви писатимете класи та створюватимете екземпляри; задаватимете, яка інформація може в них зберігатися, визначатимете доступні дії. Також можна писати класи, що розширюють функціонал наявних класів, - так схожі класи зможуть ефективно використовувати спільний код. Ви зберігатимете ваші класи в модулях, а написані іншими програмістами імпортуватимете у власний код.

Розуміння обʼєктно-орієнтованого програмування допоможе вам бачити світ по програмістськи - пізнати власний код, себто не просто знати перебіг подій від рядка до рядка, але й осягнути глобальніші концепції. Опанувавши логіку, що стоїть за класами, ви зможете писати програми, що ефективно працюють з будь якою проблемою. Що складніші завдання стоятимуть перед вами, то кориснішими будуть класи.

Коли ви та інші члени команди пишете код на основі спільної логіки, вам легше буде розуміти роботу одне одного, колеги швидко читатимуть ваші програми і ви досягнете значніших результатів.

Створення та використання класу

За допомогою класів можна створити модель будь-чого. Почнімо з маленького класу, Dog, що представлятиме собаку - не якогось конкретного пса, а будь-якого. Що ми знаємо про домашніх улюбленців? По-перше, всі вони мають імʼя та вік; більшість песиків вміють виконувати команди «сидіти» (sit) та лежати (roll over). Ці дві характеристики, імʼя й вік, та дві поведінки (сидіти та лежати) увійдуть до нашого класу Dog, позаяк вони здебільшого притаманні собакам. Цей клас проінструктує Python, як створити обʼєкт, що зображає собаку. Після того, як клас написаний, можна змоделювати його окремі екземпляри, кожен з яких представлятиме конкретного песика.

Створення класу Dog

Кожен екземпляр класу До міститиме імʼя та вік і наділить собак здатністю сидіти - функція sit () та лежати - oll_over ().

0500xyec-a192-686x385.png

Цей код виглядає трохи заплутано, та не хвилюйтеся - працюючи з цим розділом, ви встигнете звикнути до такої структури. На кроці ми визначаємо клас Dog. 3а домовленістю імена класів у Python починаються з великої літери. У визначенні класу немає дужок, позаяк ми створюємо його з нуля. На кроці наведений docstring, що описує функціонал класу.

Метод _ _init_ _()

Функція, що є частиною класу, називається методом. Усе, що ви знаєте про функції, стосується і методів; єдина практична різниця полягає в тому, як ми викликаємо методи. Метод __ init __ ( ) на кроці- це спеціальний метод, який Python запускає автоматично щоразу, коли ми створюємо новий екземпляр класу Dog. Імʼя цього методу виокремлюється подвійним нижнім підкреслюванням - це такий запобіжник, щоб Python не переплутав уставний метод з одним з ваших. Зверніть увагу: з обох боків від __init __( ) має стояти подвійне нижнє підкреслювання. Якщо поставите одинарне, метод не буде викликано автоматично при використанні класу, що призведе до неочевидних помилок.

Згідно з нашим визначенням, метод __ init __ ( ) має три параметри: self, name та age. Параметр self обовʼязковий при визначенні методу, він завжди передує іншим параметрам, його треба додати у визначення, бо коли метод викликається (створюється екземпляр Dog), йому автоматично передається аргумент self. Кожен виклик методу, повʼязаний з окремим екземпляром класу, автоматично передає йому self, що є вказівником на сам екземпляр; така система дає окремому екземплярові доступ до атрибутів та методів класу. Коли ми створюємо екземпляр Dog, Python викличе метод __ init __ ( ) класу Dog. Ми передамо Dog () імʼя та вік, а self буде переданий автоматично. Щоразу при створенні екземпляра класу Dog ми передаватимемо значення лише для двох останніх параметрів - name та age.

Дві змінні, які ми визначили на кроці, мають префікс self. Будь-яка змінна з цим префіксом доступна кожному методові класу, а також і в будь-якому екземплярі цього класу. Рядок self.name = name бере значення параметра name та присвоює його змінній name , що привʼязується до екземпляра класу під час створення. Такий самий процес відтворюється і для self.age = age. Змінні, доступні в усіх екземплярах класу, називаються атрибутами.

Клас Dog має два інших методи: sit () та roll_over () . Позаяк їм для роботи не треба додаткової інформації, у їхньому визначенні стоїть лише один параметр - self. Екземпляри класу, які ми потім створимо, матимуть доступ до цих методів. Іншими словами, вони вмітимуть сидіти та лежати. Поки що методи sit() та roll_ver () не надто функціональні. Вони просто виводять на екран повідомлення, що собака сидить або лежить відповідно. Та на базі цієї концепції можна розширити код до чогось реалістичнішого: якби цей клас був частиною комп'ютерної гри, ці методи містили б код для того, щоб песик на екрані сідав або лягав. Якби цей клас керував роботом, ці методи відповідали б безпосередньо за рухи собаки-трансформера.

Створення екземпляра класу

Уявіть клас як набір інструкцій для створення його екземпляра. Клас Dog - це набір інструкцій, що вказує Python, як робити індивідуальні екземпляри конкретних песиків.

Створімо один такий екземпляр:

0500xyp6-fa3f-686x289.png

Клас Dog у цьому прикладі - той самий, що ми написали в попередньому прикладі. На кроці ми кажемо Python створити собаку на імʼя 'Willie' віком 6. Коли Python зчитує цей рядок, він викликає метод __ init __ ( ) класу Dog з аргументами 'Willie' та 6. Метод __ init __ ( ) створює екземпляр класу, що є моделлю конкретного собаки та присвоює атрибутам name та age відповідні значення. Тоді Python повертає екземпляр - нашого конкретного песика. Ми присвоюємо його у змінну my_dog. Рекомендації з оформлення імен стають тут у пригоді: ми зазвичай можемо одразу здогадатися, що Dog - це імʼя класу, бо воно починається з великої літери, а my_dog, з маленької літери, позначає окремий екземпляр цього класу.

Звернення до атрибутів

Щоб звернутися до атрибутів, скористайтеся крапкою. На кроці ми звертаємося до атрибута my_dog за іменем:

my_dog.name

Звернення за допомогою крапки доволі поширене в Python. Цей синтаксис наочно демонструє, як саме Python шукає значення атрибута - у цьому разі знаходить його за відповідним іменем в екземплярі my_dog класу Dog. Це той самий атрибут, що позначений як self.name у класі Dog. На кроці ми так само працюємо з атрибутом age.

Вивід цього коду - підсумок всього, що нам відомо про my_dog:

My dog's name is Willie. My dog is 6 years old.

Виклик методів

Створивши екземпляр класу Dog, ми можемо за допомогою крапки викликати будь-який метод, визначений в Dog. Дамо нашому собаці команди «сидіти» та «лежати»:

0500xyuo-490c-682x289.png

Щоб викликати метод, напишіть імʼя екземпляра (в цьому разі my_dog), а тоді - метод, який викликаєте; між ними поставте крапку.

Коли Python зчитує my_dog.sit (), він знаходить метод sit() у класі Dog та запускає його код; так само інтерпретується рядок my_dog.roll_over ().

Willie is now sitting. Willie rolled over!

Цей синтаксис відкриває широкі можливості. Коли атрибути та методи мають достатньо змістовні імена, такі як name, age, sit () та roll_over (), ми можемо легко здогадатися, що робить весь блок коду, навіть якщо раніше його в очі не бачили.

Створення багатьох екземплярів

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

Створімо другого песика - your_dog (твій собака):

0500xyx0-6baa-678x590.png

У цьому прикладі ми створюємо двох собак - Віллі (Willie) та Люсі (Lucy). Кожна з них - це окремий екземпляр, що має власний набір атрибутів і здатний виконувати однаковий набір дій:

0500xyxl-25d7-682x193.png

Навіть якщо ви взяли те саме імʼя й той самий вік для другого собаки, Python все одно створить два окремі екземпляри класу Dog. Можна змоделювати як завгодно багато екземплярів одного класу, лише зважайте, що кожен з них присвоюється змінній з унікальним іменем або має унікальне розташування у списку чи словнику.

Я прочитав/прочитала теоретичну частину цього блоку і ознайомився/ознайомилась із прикладами програм, це підтверджую натисканням кнопки 0500xz3n-e237-197x47.png

2

4 з 12 балів
 Тест до уроку "Елементи теорії об’єктно-орієнтованого програмування"
15 листопада 2023
0 0
Аватар профіля Губчик Вероніка Григорівна
Аватар профіля Губчик Вероніка Григорівна
Інформатика
10 клас
1 4 29 3 55 0

3

7 з 12 балів

Вправа 1. Ресторан: Створіть клас Restaurant (Ресторан). Його метод init() має зберігати два атрибути: restaurant_name(назва ресторану) та cuisine_type (тип кухні). Напишіть метод describe_restaurant() (описати ресторан), що виводить ці дані (назву та тип кухні), і метод open_restaurant () (відкрити ресторан), який повідомляє про те, що заклад наразі працює. Зробіть екземпляр класу Restaurant. Виведіть по черзі обидва його атрибути та викличте обидва методи.

Рефлексія від 7 учнів

Сподобався:

0

Так: 4

Ні: 3

Зрозумілий:

0

Так: 4

Ні: 3

Потрібні роз'яснення:

0

Ні: 5

Так: 2

Рекомендуємо

Вправи на повторення програмування в Python

Вправи на повторення програмування в Python

182

Аватар профіля Губчик Вероніка Григорівна
Інформатика
9—11 клас

33 грн

Тематична робота до розділу «Динамічне програмування і жадібні алгоритми»

Тематична робота до розділу «Динамічне програмування і жадібні алгоритми»

193

Аватар профіля Губчик Вероніка Григорівна
Інформатика
11 клас

50 грн

Завдання "Обчислення суми значень елементів кожного рядка"

Завдання "Обчислення суми значень елементів кожного рядка"

113

Аватар профіля Губчик Вероніка Григорівна
Інформатика
9 клас

25 грн

Мова розмітки гіпертексту (HTML)

Мова розмітки гіпертексту (HTML)

193

Аватар профіля Губчик Вероніка Григорівна
Інформатика
11 клас

50 грн

Практична робота: "Розробка алгоритмів з двовимірними масивами та їх реалізація у вигляді програм"

Практична робота: "Розробка алгоритмів з двовимірними масивами та їх реалізація у вигляді програм"

138

Аватар профіля Губчик Вероніка Григорівна
Інформатика
9 клас

25 грн

Практикум "Поєднання повторення і розгалуження"

Практикум "Поєднання повторення і розгалуження"

95

Аватар профіля Губчик Вероніка Григорівна
Інформатика
8 клас

50 грн

Схожі уроки

Впорядкування, пошук і фільтрування даних.

Впорядкування, пошук і фільтрування даних.

1284

Аватар профіля Вожга Ірина Леонідівна
Інформатика
9 клас

Створення й уведення структури таблиць. Поняття таблиці, поля, запису. Створення таблиць, означення полів і ключів у середовищі СКБД. Властивості полів, типи даних.

Створення й уведення структури таблиць. Поняття таблиці, поля, запису. Створення таблиць, означення полів і ключів у середовищі СКБД. Властивості полів, типи даних.

1104

Аватар профіля Савка-Ржематорська Оксана Василівна
Інформатика
9 клас

Цикли з передумовою у вкладених циклах

Цикли з передумовою у вкладених циклах

1342

Аватар профіля Вожга Ірина Леонідівна
Інформатика
6 клас

Налаштування часових параметрів аудіо- та відеоряду.

Налаштування часових параметрів аудіо- та відеоряду.

493

Аватар профіля Солодовнікова Катерина Олексіївна
Інформатика
8 клас

Елемент керування «кнопка». Поняття об’єкту та його властивостей і методів (на прикладі елементів екранної форми). Властивості і методи елементів керування.

Елемент керування «кнопка». Поняття об’єкту та його властивостей і методів (на прикладі елементів екранної форми). Властивості і методи елементів керування.

650

Аватар профіля Пилипенко Олена Володимирівна
Інформатика
8 клас

Елемент керування кнопка

Елемент керування кнопка

278

Аватар профіля Пилипенко Олена Володимирівна
Інформатика
8 клас