Основы объектно-ориентированного программирования

         

По обе стороны океана


Следующий пример позволит нам промоделировать ситуацию дублируемого наследования и изучить возникающие проблемы. Пусть класс 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.  Типы водителей



Содержание раздела