Похожие презентации:
Объектно-ориентированное программирование в Python. Наследование
1.
Тема лекции:Объектно-ориентированное
программирование в Python.
Наследование
2.
Наследование позволяет новому классурасширять существующий класс. Новый
класс
наследует члены расширяемого класса.
3.
Обобщение и конкретизация4.
Наследование и отношение "род - вид"5.
Наследование и отношение "род - вид"Наследование связано с существованием надкласса и
подкласса.
Надкласс- это родовой класс, подкласс - это
конкретизированный
класс.
Подкласс
можно
представить, как расширенный вариант надкласса.
Подкласс наследует атрибуты и методы надкласса без
необходимости переписывать его атрибуты и методы.
Кроме того, в подкласс могут быть добавлены новые
атрибуты и методы, и именно это делает его
конкретизированным вариантом надкласса.
Надклассы также называются базовыми классами, а
подклассы - производными классами. Обе версии
6.
Пример использования наследованияНеобходимо разработать программу, которую автодилер может использовать для
управления своими складскими запасами подержанных автомашин. Складские
ресурсы автодилера включают три типа автомашин: легковые автомобили, пикапы
и джипы. Независимо от типа автомобиля автодилер о каждом автомобиле
поддерживает приведенные ниже данные:
• фирма-изготовитель;
• модель указанного года выпуска;
• пробег;
• цена.
Каждый вид автотранспортного средства, который содержится среди складских
запасов, имеет эти общие свойства плюс свои специализированные свойства. Для
легковых автомобилей автодилер поддерживает следующие дополнительные
данные: число дверей (2 или 4).
Для пикапов автодилер поддерживает следующие дополнительные данные: тип
привода (моноприводный, т. е. с приводом на два колеса, или полноприводный, т. е.
с приводом на четыре колеса);
И для джипов автодилер поддерживает следующие дополнительные данные:
пассажирская вместимость.
7.
Пример использования наследования8.
В программе приведен код класса Automobile, который содержится в модуле vehicles (автотранспортныесредства).
9.
10.
11.
В программеприведен
соответствующий
программный код для
класса Car, который
тоже находится в
модуле vehicles.
12.
13.
14.
Класс car приведен в следующей программе:15.
16.
Рассмотрим класс Truck, который тоже наследует от класса Automobile. Программный код длякласса Truck, который тоже находится в модуле vehicles, приведен в следующей программе:
Продолжение…
17.
18.
19.
Рассмотрим класс suv, который тоже наследует класс Automobile. Программный код длякласса suv, который тоже находится в модуле vehicles, представлен в следующей
программе:
Продолжение…
20.
21.
22.
Программа демонстрирует каждый из классов, которые были созданы ранее. Она создает объекты Car, Truckи suv.
Продолжение…..
23.
24.
ПолиморфизмПолиморфизм позволяет подклассам иметь методы с теми же именами, что и у
методов в их надклассах. Это дает программе возможность вызывать правильный
метод в зависимости от типа объекта, который используется для его вызова.
Термин "полиморфизм" относится к способности объекта принимать различные
формы. Эта способность является мощным механизмом объектноориентированного программирования.
Рассмотрим два важнейших компонента полиморфного поведения.
• Возможность определять метод в надклассе и затем определять метод с тем же
именем в подклассе . Когда метод подкласса имеет то же имя, что и у метода
надкласса, часто говорят, что метод подкласса переопределяет метод надкласса.
• Возможность вызывать правильный вариант переопределенного метода в
зависимости от типа объекта, который используется для его вызова. Если объект
подкласса используется для вызова переопределенного метода, то исполнится
именно вариант метода подкласса. Если для вызова переопределенного метода
используется объект надкласса, то исполнится именно вариант метода надкласса.
25.
ПолиморфизмПереопределение метода в работе демонстрировалось ранее.
Все подклассы, исследованные ранее, имеют метод __init__(),
который переопределяет метод __init__() надкласса. Когда
создается экземпляр подкласса, автоматически вызывается
метод __init__() именно этого подкласса.
Переопределение методов работает и для других методов
класса.
26.
Пример полиморфизма:В программе приведен код для
класса Mammal
(Млекопитающее), который
находится в модуле animals
(животные).
27.
28.
29.
30.
Программа демонстрирует класс Cat (Кот), который тоже находится в модулеanimals и является еще одним подклассом класса Mammal.
31.
32.
Функция isinstance33.
34.
Что произойдет, если в эту функцию передать объект, который не являетсямлекопитающим Mammal и не является подклассом Mammal?
35.
36.
В программе показан способ ее применения в функции show_mammal_info:
Продолжение..