1 of 25

Інформатика 10 клас

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

2 of 25

Основний дефект процедурного стилю програмування полягає в тому, що він слабко пристосований для розроблення великих програм. Із часом програми стають настільки складними, що розібратися в них непросто. Одним із напрямків розв’язування цієї проблеми є об’єктно-орієнтоване програмування (ООП).

3 of 25

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

ООП базується на трьох основних принципах:

• наслідування;

• поліморфізм;

• інкапсуляція.

Ці принципи є досить абстрактними та складними для розуміння на початкових етапах ознайомлення з мовою. В ООП загалом використовується значна кількість нових термінів. Щоб свідомо опанувати їх, розглядатимемо їх поступово на прикладах.

4 of 25

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

Чим жираф схожий на тротуар? Тим, що і жираф, і тротуар - сутності, які в розмовній мові є іменниками, а в мові Python - об'єктами. Концепція об'єктів має важливе значення в світі програмування.

Об'єкти - це спосіб організації коду в програмі, а також спосіб поділу складних завдань на більш прості, що полегшує їх розв’язання.

5 of 25

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

Щоб як слід розібратися, що таке об'єкти в Python, потрібно поговорити про їх типи.

Почнемо з жирафів і тротуарів.

Жираф - це тип (або вид, як кажуть біологи) ссавців, а ссавці, в свою чергу, є одним з типів тварин. Крім того, жираф - одухотворений об'єкт, оскільки він живий.

Головне, що можна сказати про тротуар, - він неживий, а значить, відноситься до неживих об'єктів. Поняття «ссавець», «тварина», «одухотворений» і «неживий» - це способи класифікації сутностей

6 of 25

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

До основних понять об’єктно-орієнтованого програмування належать об’єкт, клас, метод.

Клас (Class) — об’єкт, що складається із сукупності методів і змінних (атрибутів), які описують цей об’єкт.

Метод (Method) — сукупність інструкцій мови опрацювання даних.

7 of 25

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

Змінна екземпляра класу (Instance variable) — змінна, що визначена всередині методу класу і яка належить тільки цьому класу.

Екземпляр класу (Instance) — окремий об’єкт класу.

Змінна класу (Class variable) — звичайна змінна, що визначається всередині класу (а не всередині методів класу), яка є доступною для всіх екземплярів цього класу.

8 of 25

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

Мова ООП має відповідати таким вимогам:

• усі дані подаються об’єктами;

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

• кожен об’єкт може мати у своєму складі інші об’єкти, і для всіх них виділяється власна частина пам’яті;

• кожен об’єкт належить одному типу (класу), який задає поведінку об’єктів, створених на їх основі;

• об’єкти одного типу можуть виконувати одні й ті са - мі дії.

9 of 25

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

Мова Python є гібридною, оскільки поєднує властивості як процедурного, так і об’єктно-орієнтованого програмування. Така особливість мови Python дала змогу на початкових етапах її вивчення основну увагу приділити синтаксичним конструкціям, функціям і модулям, без яких

не може існувати не лише процедурне, а й об’єктно-орієнтоване програмування. Розуміння цих питань допоможе тепер якісно оволодіти й методами ООП.

10 of 25

Характерними особливостями ООП мовою Python є:

1) основною складовою мови ООП є клас, головне призначення якого — створення та маніпулювання об’єктами, а також підтримка механізму наслідування як способу адаптації програмного коду для розв’язування однотипних задач і неодноразового його використання;

2)об’єкти мови Python нагадують убудовані типи, які було описано раніше;

3) програма складається з окремих, достатньо незалежних частин, що суттєво полегшує її розуміння й читання;

4) нова програма може розроблятися не «з нуля», а шляхом адаптування вже наявного програмного коду, без його зміни.

11 of 25

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

У мові Python об'єкти визначаються класами, завдяки яким об'єкти можна розділяти по смисловим групам. Ось діаграма класів, яка відповідає нашим міркуванням про жирафів і тротуарах

Сутності

Живі

Тварини

Ссавці

Жирафи

Неживі

Тротуари

12 of 25

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

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

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

13 of 25

Об'єктно-орієнтована програма

Процедури сформувалися в модулі - незалежні частини коду до рівня збірки програми

Об'єкти сформувалися в компоненти - незалежні частини коду до рівня виконання програми

Взаємодія об'єктів відбувається за допомогою повідомлень (виклик методу - процедури і функції, пов'язані з класом)

14 of 25

Проєкт Тамагочі

Простий об'єкт tama з назвою класу Tamagoci, для котрого визначено єдину функцію (метод) talk.

Клас створюється на основі вбудованого типу object або на основі іншого класу.

Прийнято у наступному після назви рядку описати клас у коментарі.

Метод класу завжди має принаймні один параметр - self.

Результат:

15 of 25

Ініціалізація об'єкту

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

Створено 2 об'єкти, з різними атрибутами name.

Результат:

16 of 25

Атрибути класу

Клас може мати власні атрибути, наприклад, кількість об'єктів класу, створених у проекті

total=0

При створенні нового об'єкту до цієї змінної додаємо 1:

def __init__(self, name):

self.name=name

print("A new animal is born!")

Tamagoci.total += 1

17 of 25

Розглянемо проект гри, що передбачає створення тваринки-тамагочі, з початковим рівнем голоду та нудьги =0. З плином часу тваринку потрібно годувати і розважати.

Приклад початку гри:

A new animal is born!

Hello, I am Tamagochi Bobik I feel great

What would you like to do?

0 - exit

1 - check

2 - eat

3 - play

Enter the number

18 of 25

Задача 1. Ініціалізація об'єкта

19 of 25

Задача 2. Метод "пройшов час" - зростає голод та нудьга

20 of 25

Задача 3. Метод годування

21 of 25

Задача 4. Метод розважання

22 of 25

Задача 5. Метод доступу до властивості

23 of 25

Задача 6. Метод сповіщення про себе

24 of 25

Задача 7. Створення об'єкта

25 of 25

Задача 8. Ігрова логіка