Книга: Основы объектно-ориентированного программирования
По обе стороны океана
По обе стороны океана
Следующий пример позволит нам промоделировать ситуацию дублируемого наследования и изучить возникающие проблемы. Пусть класс DRIVER имеет атрибуты:
age: INTEGER
address: STRING
violation_count: INTEGER -- Число записанных нарушений
и методы:
pass_birthday is do age := age + 1 end
pay_fee is
-- Оплата ежегодной лицензии.
do ... end
Класс наследник, US_DRIVER учитывает налоговое законодательство США, другой, FRENCH_DRIVER, - налоговое законодательство Франции.
Рассмотрим категорию людей, которым в течение года приходится водить машину в обеих странах. Нужного класса у нас еще нет, и простым решением этой проблемы кажется множественное наследование. Опишем класс FRENCH_US_DRIVER как порожденный от US_DRIVER и FRENCH_DRIVER. Налицо дублируемое наследование.
Рис. 15.16. Типы водителей
- Общие предки
- По обе стороны океана
- Совместное использование и репликация
- Ненавязчивое дублирующее наследование
- Правило переименования
- Конфликт переопределений
- Конфликт при совместном использовании: отмена определения и соединение компонентов
- Конфликты при репликации: выделение
- Выделение всех компонентов
- Сохранение исходной версии при переопределении
- Пример повышенной сложности
- Дублируемое наследование и универсальность
- Правила об именах
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Выбор аппаратного обеспечения для InterBase
- Особенности системы защиты данных в InterBase
- Особенности InterBase 6.5
- Отличительные особенности сервера Yaffil
- Системное программное обеспечение
- Отличительные особенности новой версии
- 4.9 Обеспечение взаимодействия устройств Fibre Channel
- 9.3 Обеспечение избыточной отказоустойчивости
- Особенности оформления текста книги
- Обеспечение безопасности библиотеки
- Внутреннее устройство системы и обеспечение её целостности