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


 

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