Re: "Включение" vs "Наследование" интерфейсов
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 28.09.04 12:18
Оценка:
Здравствуйте, S.Yu.Gubanov, Вы писали:

SYG>"Включение" vs "Наследование" интерфейсов


Разрешите сперва скорректировать термины.
"Включение" — агрегация (мне так удобнее).
"Наследование" — статическое наследование (именно о нём вы говорите в своём посте).
Наследование — механизма разделения ресурсов между объектами связанными отношением потомок-предок.

Итак. Агрегация и статическое наследование могут выступать в качестве различных реализаций механизма наследования в ООП, как способа разделения ресурсов между объектами связанными отношением потомок-предок. На этом сходство исчерпывается и идут отличия.
Статическое наследование по-сути есть статическое копирование реализации предка в реализацию клиента, выполняемое на этапе компиляции. На базе языковой поддержки оно присуще языкам с классической реализацией объектно-ориентированного подхода. Другой отличительной чертой этих языков (как правило), тесно связанной со статическим наследование, является статическая типизация (исключение составляет, разве что, Smalltalk).
Агрегация + делегирование — это более продвинутая реализация механизма разделения ресурсов между предком и потомком. На уровне языковой поддержки она реализована, например, в языке Self.
Агрегация и делегирования — механизмы периоды исполнения (динамический подход). Статическое наследование — механизм периода компиляции (статический подход).
Очень часто статического наследования для реализации полноценной объектно-ориентированной архитектуры в таких языках как C++, Pascal не хватает, поэтому на программном уровне оно дополняется агрегацией с делегированием (добрая половина паттернов банды четырёх решает именно такие задачи). Но смешивать эти подходы на языковом уровне не имеет смысла. Почему — чистая философия без какой либо конкретики, основанная на том принципе, что статическая типизация призвана облегчить процесс программирования и поиска ошибок, добавление агрегации — механизма, динамического по сути, может извести на нет все благие начинания.
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.