Поиск

Иерархия объектов с единым корнем

Как я уже говорил, важная характеристика CTS — иерархия объектов с единым корнем. В .NET Framework каждый тип системы происходит от базового класса System.Object. Подход, использующий единый базовый класс, — важное отличие от языка C++, в котором нет базового класса для всех классов. Он рекомендован теоретиками ООП и реализован в большинстве объектно-ориентированных языков, формирующих главное направление этой технологии. Возможно, вы не увидите всех преимуществ иерархии с единым корнем сразу. Но со временем вы задумаетесь: как же велась разработка языков до того, как была введена поддержка этого типа иерархии?

Иерархия объектов с единым корнем является ключевой для унифицированной системы типов, поскольку гарантирует наличие общего интерфейса у каждого объекта в иерархии, и поэтому всякая сущность в составе этой иерархии в конечном счете принадлежит к одному базовому типу. Один из самых серьезных минусов C++ — отсутствие поддержки подобной иерархии. Рассмотрим простой пример.

Допустим, создав иерархию объектов на C++ на основе собственного базового класса CFoo, вы хотите интегрировать ее с другой иерархией, все объекты которой происходят от базового класса СВаг. В этом примере интерфейсы иерархий объектов несовместимы, поэтому их интеграция заставит попотеть. Чтобы справиться с этой задачей, вам придется использовать класс-оболочку или множественное наследование. В случае иерархии с одним корнем совместимость не проблема, так как интерфейс объектов един (унаследованный от System.Object). В результате вы знаете, что у любого и каждого объекта вашей иерархии — и, что важнее всего, в иерархиях кода .NET сторонних разработчиков — всегда будет минимальный набор функциональности.