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


Ключевые концепции


  • Каждое использование наследования должно отражать некоторую форму отношения "is a" между двумя категориями объектов, либо из внешней моделируемой области, либо из мира самого ПО.
  • Не используйте наследование для моделирования отношения "has"; это область клиентских отношений. (Помните о CAR_OWNER.)
  • Когда наследование применимо, часто потенциально применим и клиент. Если соответствующая точка зрения может измениться, используйте клиентское отношение. Если предвидится полиморфное использование, используйте наследование.
  • Не вводите промежуточных узлов наследования, если только они не задают хорошо определенные абстракции со своими специфическими компонентами.
  • Данная классификация наследования основана на двенадцати видах, разделенных на три общие категории: наследование модели (описывающее отношения, существующие в моделируемой области), программное наследование (описывающее отношения, существующие в самом ПО) и наследование вариаций (для адаптации класса либо в модели, либо в ПО).
  • Мощь наследования происходит из комбинации специализации типа и механизма расширения модуля. Было бы немудро использовать различные механизмы языка.
  • Наследование реализации и льготное наследование требуют особой тщательности, но представляют мощную технику, которую следует использовать на стороне поставщика.
  • Наследование видов - это тонкая техника, включающая дублирующее наследование, позволяющая классифицировать типы объектов по нескольким конкурирующим критериям. Оно полезно при разработке профессиональных библиотек. Во многих случаях простая техника описателей предпочтительнее.
  • Хотя и нет теоретического идеала, фактический процесс проектирования иерархии наследования идет в двух направлениях - от абстрактного к конкретному и наоборот.
  • Наследование является главным образом техникой поставщика.



Начало  Назад  Вперед