Общая таксономия
С этого момента речь пойдет о правильном использовании наследования. Список включает двенадцать различных категорий, для удобства сгруппированных в три семейства:
Рис. 6.7. Классификация допустимых категорий наследования
Классификация основана на том наблюдении, что любая программная система отражает как внешнюю модель, так и связь с реалиями в области программных приложений. В связи с этим будем различать:
- наследование модели, отражающее отношения "is-a" между абстракциями, характерными для самой модели;
- программное наследование, выражающее отношения между объектами программной системы, не имеющих очевидных двойников во внешней модели;
- наследование вариаций - специальный случай, относящийся как к моделям, так и программному наследованию, служащий для описания вариаций семейства классов.
Эти три общие категории облегчают понимание, но наиболее важные свойства задаются терминальными категориями.
Так как классификация сама по себе является таксономией, можно из любопытства задаться вопросом, как применить к ней самой идентифицируемые категории. Это является темой упражнения У6.2. |
Следующие далее определения используют имя A для родительского класса и B для наследника:
Рис. 6.8. Соглашение именования при определении категорий наследования
Каждое из определений будет устанавливать, в каких случаях A и B могут быть отложенными, а когда - эффективными. Обсуждение завершается таблицей, содержащей сводку применимых категорий для каждой комбинации отложенных и эффективных классов.