Иерархия

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

При рассмотрении абстракции вы видели, какие преимущества дает выделение объектов с определенно обозначенной функциональностью. При анализе проблемной области часто бывает, что несколько объектов обладают очевидно похожими структурами или функциональностью. Если поведение объекта или класса аналогично поведению другого класса, то мы имеем дело с простым наследованием (single inheritance). Если же в функциональности или структуре класса присутствуют черты нескольких классов, то имеет место случай множественного наследования (multiple inheritance).

Наследование часто объясняют как возможность установить отношения "принадлежности" между объектами, классами и типами данных. Дельфин "принадлежит" к млекопитающим так же, как и человек "принадлежит" к млекопитающим. И дельфины, и люди наследуют некоторые особенности класса млекопитающих, такие как живорождение. Поскольку цыплята не рождаются живыми, они не млекопитающие и, следовательно, не должны ничего наследовать у класса млекопитающих. Однако возьмем, например, утконоса: он откладывает яйца, но при этом теплокровный и покрыт шерстью. Это явный пример множественного наследования: утконос наследует характерные черты как млекопитающих, так и пернатых!

Без механизма наследования вам придется постоянно повторяться. Если вы определяете класс для дельфина, он обязательно будет содержать некоторые общие для всех млекопитающих признаки. Создавая другой класс для человека, вы будете вынуждены дублировать многие свойства, уже определенные для дельфина, добавляя излишние детали и перегружая свою разработку.

Давайте разберемся, как разглядеть иерархию в области личного бюджета — тем самым упорядочить ваше понимание проблемы — и воплотить ее на

C++.

Простое наследование. Относительно рассматриваемого предмета вам известно, что приходится иметь дело не только со сберегательным счетом, но и с чековым.

В чем их разница? При анализе задачи можно исходить из предположения, что и сберегательный, и чековый счета — оба они являются разновидностями банковского счета.