Читайте также:
|
|
Наследование часто используется не по назначению. В действительности неправильное применение наследования может привести к проблемам. Например, студент может учиться очно или заочно. Создадим суперкласс студент (Student) и два подкласса - студент очного отделения (FulltimeStudent) и студент заочного отделения (ParttimeStudent) Во время работы такой структуры наверняка возникнут определенные проблемы. Что случится, если
• студент очного отделения решит перейти на заочное? Это значит, что объекту придется сменить класс,
• будет добавлена еще одна размерность (например, студент, получающий стипендию и не получающий стипендию)? Здесь понадобятся новые подклассы для представления информации о стипендии, а также множественное наследование для поддержки всех комбинаций (студент очного отделения, получающий стипендию, студент заочного отделения, получающий стипендию и т.д.)
Наследование должно служить для отделения общности от специфики Агрегация - для отражения комбинированных отношений. Часто оба типа отношений используются вместе. Класс студент имеет классификацию (агрегацию), которая, в свою очередь, делится на классы студент-очник и студент-заочник (наследование) - см рис 6.4.
Рис.6.4
РЕЗЮМЕ
Наследование позволяет создавать иерархию классов, когда общая структура и поведение разделяются между ними. Термин "суперкласс" характеризует класс, содержащий общую информацию. Классы-потомки называются подклассами. Подкласс наследует все атрибуты, операции и отношения, определенные во всех его суперклассах.
Есть два способа определения наследования в любой системе: обобщение и специализация. Обобщение обеспечивает возможность создания суперклассов, объединяющих общие для нескольких классов структуру и поведение. Специализация позволяет создавать подклассы, которые уточняют или дополняют структуру и поведение, определенные в суперклассе.
Дата добавления: 2015-08-09; просмотров: 82 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Иерархии наследования. | | | СОСТОЯНИЯ |