Один из ключевых "столпов" ООП - наследование. Основная идея в наследовании интерфейсов или реализации базового класса. Я в своей жизни сталкивался с двумя идеями реализации наследования:
Истинное наследование (в стиле C++, Delphi) Агрегация или включение (в стиле Visual Basic и COM вообще) Рассматриваю случай, когда класс-наследник обязан предоставлять те же интерфейсы, что и родительский, потому пишу только про агрегацию.
Итак, наследование и агрегация.
У каждого из них есть достоинства и недостатки. Наследование обычно прямо поддерживаеться языковыми средствами (сам язык, IDE, отладчики) и естественно воспринимается разрабочиками, а агрегирование приходится "привязывать" сбоку (хотя в расширяемых языках, например Лисп, эту задачу можно решать только один раз) и, что хуже, - объяснять идею многим разработчикам. В двух словах, идею агрегации можно свести к созданию обертки вокруг класса, в каждом методе которой мы вызываем соответствующий метод наслед
Коментарі