Інформатика

Безкоштовно

Ніхто не записаний

П92. Наслідування

Прочитайте!

Наслідування в мові Python — це здатність об’єктів класу застосовувати атрибути цього самого класу, а також здатність одними класами застосовувати атрибути інших класів.

Приклад 1. Обчислимо  площу двох прямокутних трикутників із відомими катетами.

У  програмі  обидва  екземпляри  класу  ob1 і ob2 наслідують властивості p1, p2 і p3, а екземпляр класу ob1 наслідує ще й властивість form. Екземпляр класу ob2 цієї властивості не має, оскільки атрибути класу наслідуються об’єктами, створеними лише на його основі.

Атрибути конкретного об’єкта не залежать від атрибутів інших об’єктів і мають власний простір імен об’єкта. Це означає, що об’єкти одного класу можуть мати різні значення атрибутів.

Розглянемо тепер приклад програми з наслідуванням атрибутів одного класу іншим класом.

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

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

У цій програмі клас Kl7_11a має доступ до методів func1 і func2 класу Kl7_11, а також до власного методу func3.

Якщо ім’я методу в суперкласі збігається з іменем методу підкласу, то в процесі звернення до нього буде використовуватися метод із підкласу. Щоб викликати однойменний метод із суперкласу, слід указати також перед цим методом назву суперкласу. У першому параметрі методу необхідно вказати посилання на екземпляр класу.

Приклад 3. Відомі всі три сторони двох прямих контейнерів (паралелепіпедів), а також їх реальна вага. Обчисліть об’єм кожного контейнера, а також можливість їх використання. Контейнери можна використовувати за умови, що їх реальна вага не перевищує контрольну, значення якої уводиться з клавіатури.

У програмі використано такі змінні: vaga — реальна вага контейнера, contr — їх контрольна вага, p1, p2, p3 — розміри сторін контейнерів, m — змінна ознаки номера контейнерів, v — об’єм поточного контейнера, p4 — результат можливості використання контейнерів. Програма складається з двох класів: суперкласу Kl7_12 і підкласу Kl7_12a. Підклас наслідує обидва методи суперкласу (__init__ і func1), а також змінну contr. Екземпляр класу ob1 належить підкласу Kl7_12a і наслідує всі методи цього класу та суперкласу. Екземпляр класу оb2 на- лежить суперкласу. До підкласу Kl7_12a він жодного стосунку не має й тому не може звертатися до методів func2 і func3.

Завдання для самостійного виконання

Завдання 1. Розробіть програму без конструктора, у якій один клас наслідує атрибути іншого. У суперкласі два числа множаться, а в підкласі виводиться результат множення.

Завдання 2. Обчисліть площі двох прямокутних трикутників із відомими значеннями катетів із використанням суперкласу, підкласу та конструктора. У суперкласі обчислюються площі трикутників, а в підкласі — виведення значень обчислених площ.

Завдання 3. Розробіть програму з суперкласом і підкласом. У суперкласі за допомогою першого методу обчислюється сума значень трьох параметрів методу, а за допомогою другого — їх добуток. У підкласі від суми значень перших двох пара- метрів віднімається значення третього. Звернення до всіх методів виконується з одного об’єкта з трьома аргументами.

 

0.00 на основі 0 рейтингів

5 зірок
0%
4 зірок
0%
3 зірок
0%
2 зірок
0%
1 зірок
0%