6.4. Наслідування

Views:
 
Category: Education
     
 

Presentation Description

Python. Тема 6. Класи, об'єкти, наслідування Тема уроку: Наслідування (п.6.4. за підручником Руденко В.Д.)

Comments

Presentation Transcript

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

Профільна інформатика 10 клас Тема 6 . Класи , об'єкти, наслідування

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

6.4. наслідування 02.12.2018 2

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

Наслідування в мові Python У різних частинах програмного коду часто використовуються одні й ті самі атрибути , що суттєво впливає на загальний обсяг програми . Наслідування в мові Python — це здатність об'єктів класу застосовувати атрибути цього ca мого класу , а також здатність одними класами застосовувати атрибути інших класів . Розглянемо спочатку здатність об'єкта класу наслідувати атрибути цього самого класу . 02.12.2018 3

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

Приклад 1. Програма обчислення площ двох прямокутних трикутників із відомими катетами . class K17_10: # клас К17_10 def _ init _(self,a1,a2,a3): # конструктор self.p1=a1 # змінна p1 набуває значення параметра a1 self.p2=a2 # змінна р2 набуває значення параметра a2 self.p3=a3 # змінна р3 набуває значення параметра a3 self.func1() # звернення до функції func1 def func1(self): # функція func1 з параметром self s=(self.p2*self.p3)/2 # обчислення площі трикутника print(self.p1,s) # виведення площі трикутника ob1=K17_10(" площа першого =",3,4) # екземпляр класу ob1 з 3 ap гументами ob2=K17_10(" площа другого = ",5,6) # екземпляр класу ob2 з 3 ap гументами ob1.form=" перший зафарбований " # властивість екземпляра класу ob1 print(ob1.form) # виведення властивості екземпляра класу ob1 02.12.2018 4

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

Виконання програми з наслідуванням об'єктами атрибутів одного класу У програмі обидва екземпляри класу ob1 і ob2 наслідують властивості р1, р2 і p3, а екземпляр класу ob2 наслідує ще й властивість form. Екземпляр класу ob2 цієї властивості не має , оскільки атрибути класу наслідуються об'єктами , створеними лише на його основі . Атрибути конкретного об'єкта не залежать від атрибутів інших об'єктів і мають власний простір імен об'єкта . Це означає . що об'єкти одного класу можуть мати різні значення атрибутів . Результат виконання програми площа першого = 6.0 площа другого = 15.0 перший зафарбований 02.12.2018 5

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

приклад програми з наслідуванням атрибутів одного класу іншим класом Розглянемо тепер приклад програми з наслідуванням атрибутів одного класу іншим класом . Клас , від якого наслідується інший клас , називають суперкласом , а клас , що унаслідується , - підкласом . В оголошенні підкласу в круглих дужках указуються ім'я суперкласу , від якого він наслідується . Приклад 2. Програма , у якій клас КІ7_11 є суперкласом , а клас K17_11a — підкласом . Клас КІ7_11а має доступ до всіх атрибутів класу K17_11. 02.12.2018 6

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

Програма з наслідуванням методів одного класу іншим класом class K17_11: # клас К17_11 def func1(self,a1,a2): # метод func1 суперкласу s=a1+a2 # сума чисел print(" сума =", s) # виведення суми def func2(self,a1,a2): # метод func1 суперкласу s=a1*a2 # добуток чисел print(" добуток =", s) # виведення добутку class K17_11a(K17_11): # клас K17_11a наслідує класК17_11 def func3(self,a1,a2): # метод func3 підкласу s=a1/a2 # ділення чисел print(" ділення =", s) # виведення результату ділення ob1=K17_11a() # екземпляр класу ob1 з 3 ap гументами ob1.func1(2,3) # звернення до методу func1 суперкласу ob1.func2(4,5) # звернення до методу func2 суперкласу ob1.func3(6,7) # звернення до методу func3 суперкласу 02.12.2018 7 У цій програмі клас К17_11а має доступ до методів funcl i func2 класу K17_11, а також до власного методу func3. Результат виконання програми : сума = 5 добуток = 20 ділення = 0.8571428571428571

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

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

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

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

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

Програма реалізації завдання class K17_12: # клас К17_12 contr = int (input(" увести контрольну вагу: ")) def _ init _(self,a1,a2,a3): # конструктор self.p1=a1 # змінна p1 набуває значення параметра а1 self.p2=a2 # змінна p2 набуває значення параметра а2 self.p3=a3 # змінна p3 набуває значення параметра а3 def func1(self): # функція func1 класу K17_12 v=self.p1*self.p2*self.p3 # обчислення об'єму print(" об'єм =", m,"=",v) # виведення об'єму class K17_12a(K17_12): # клас K17_12a наслідує класК17_12 def func2( self,vaga ): # функція func2 класу K17_12 if vaga <K17_12.contr: # реальна вага менше контрольної ? self.p4=" можна використовувати " else: # реальна вага більше контрольної self.p4=" використовувати не можна " def func3(self): # функція func3 класу K17_12 а print(self.p4) # виведення результату ob1=K17_12a(2,3,4) # екземпляр ob1 класу K17_12a з 3 ap гументами m=" першого " # ознака номера паралелепіпеда ob1.func1() # звернення до func1 із екзкмпляра класу ob1 ob2=K17_12(3,4,5) # екземпляр ob2 класу K17_12a m=" другого" # ознака номера паралелепіпеда ob2.func1() # звернення до функції func1 із екземпляра класу ob2 ob1.func2(5) # звернення до функції func2 із екземпляра класу ob1 ob1.func3() # звернення до функції func3 із екземпляра класу ob1 02.12.2018 10

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

Програма з наслідуванням атрибутів одного класу іншим класом У програмі використано такі змінні : vaga — реальна вага контейнера, со ntr - контрольна їх вага, р1 , р2, p3 — розміри сторін контейнерів , m — змінна ознаки номера контейнерів , v — боєм поточного контейнера , р4 - результат можливості використання контейнерів . Програма складається з двох класів : суперкласу K17_12 i підкласу К17_12а. Підклас наслідує обидва методи суперкласу (_ init _ i func1), а також змінну contr. Екземпляр класу ob1 належить підкласу К17_12а i наслідує всі методи цього класу та суперкласу . Екземпляр класу ob2 належить суперкласу . До підкласу К17_12а він ніякого стосунку не має й тому не може звертатися до методів fun с2 1 fun с3. 02.12.2018 11

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

порядок виконання програми на прикладі 1. Спочатку в суперкласі виконується i нструкція contr = і nt (…). Після уведення цілого числа виконання програми продовжується , Під час створення екземпляра класу ob1 автоматично викликається метод _ init _, y результаті чого аргумент 2 передається параметру а1 цього методу, аргумент 3 – параметру а2, аргумент 4 – параметру а3. Наступними трьома інструкціями значення цих параметрів присвоюються , відповідно змінним р1, р2 і p3 екземпляра класу ob1. 2. Далі управління передається інструкції m=" першого " і далі здійснюється звернення до функції funcl . У результаті обчислюється й виводиться на екран об'єм першого паралелепіпеда . Після цього створюється екземпляр класу ob2 і виконуються дії , аналогічні діям , що виконувалися в процесі створення екземпляра класу ob1. У результаті буде обчислено й виведено значення об’єму другого контейнера. 3. Далі управління передається інструкції ob1.func2. За допомогою методу func2 перевіряється можливість використання контейнерів і відповідне значення присвоюється змінній p4 . Після цього викликається метод func3, за допомогою якого відповідний результат виводиться на екран . Один із варіантів виконання програми може бути таким: y вести контрольну вагу: 8 Об'єм першого = 24 Об'єм другого = 60 можна використовувати 02.12.2018 12

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

Запитання для перевірки знань 02.12.2018 13

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

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