Шаг 24.
Унифицированный язык моделирования UML.
Иерархия

    На этом шаге рассмотрим иерархию абстракций.

    Абстракция — вещь полезная, но их количество всегда, кроме самых тривиальных приложений, намного превышает человеческие возможности. Инкапсуляция позволяет справиться со сложностью, скрыв внутреннее представление абстракций. Модульность также упрощает понимание проблемы, позволяя объединить логически связанные абстракции в группы.

    Определим иерархию следующим образом. Иерархия — это ранжирование, или упорядочение абстракций.

    Наиболее важными видами иерархии в сложных системах являются структура классов (иерархия "общее/частное") и структура объектов (иерархия "целое/ часть").

    Наследование представляет собой одну из наиболее важных иерархий, основанных на отношении "является" ("is а"). Оно лежит в основе многих объектно-ориентированных систем. Наследование означает такое отношение между классами, когда один класс заимствует структуру или поведение одного или нескольких других классов (одиночное и множественное наследование соответственно). Иначе говоря, наследование создает иерархию абстракций, в которой подклассы заимствуют свойства одного или нескольких суперклассов. Обычно подкласс наращивает или переопределяет существующую структуру и поведение суперкласса.

    С семантической точки зрения, наследование описывает отношение типа "является". Например, медведь — это разновидность млекопитающего, дом — это разновидность материальных активов, а метод быстрой сортировки — это разновидность алгоритма сортировки. Таким образом, наследование порождает иерархию обобщения/специализации, в которой подкласс конкретизирует более общую структуру или поведение своего суперкласса. Действительно, существует безошибочный тест для наследования: если класс В не является разновидностью класса А, то класс В не должен быть наследником класса А.

    На следующем шаге рассмотрим пример одиночного наследования.




Предыдущий шаг Содержание Следующий шаг