Re[2]: Принцип подстановки Лисков (LSP из SOLID)
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.11.11 21:28
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Кстати о "правильности" наследования:

LVV>

LVV> спецификация. Дочерний класс реализует поведение, описанное в родительском классе. Ясно, что в С++ эта форма реализуется простым открытым наследованием от абстрактного класса;
LVV> конструирование. Класс-наследник использует методы базового класса, но не является его подтипом (принцип подстановки не выполняется). В С++ такую форму можно реализовать простым закрытым наследованием;
LVV> расширение. В класс-потомок добавляют новые методы, расширяя поведение родительского класса; принцип подстановки в такой форме выполняется;
LVV> обобщение. Дочерний класс обобщает поведение базового класса. Обычно такое наследование используется в тех случаях, когда мы не можем изменить поведение базового класса (например, базовый класс является библиотечным классом);
LVV> ограничение. Класс-наследник ограничивает поведение родительского класса. Очевидно, что в С++ такой вид наследования реализуется простым закрытым наследованием (пример — TUniversalDeque -> TStack );
LVV> варьирование. Базовый класс и класс-потомок являются вариациями на одну тему, однако связь «класс-подкласс» произвольна, например, «квадрат-прямоугольник» или «прямоугольник-квадрат». Эта форма фактически не отличается от «конструирования», так как класс-наследник, очевидно, «использует методы базового класса, но не является его подтипом»;
LVV> комбинирование. Дочерний класс наследует черты нескольких классов — это множественное наследование.


Что только народ не придумает, чтобы оправдать использование наследования не по назначению?!

А про возможность внутренние поля объявлять этот уважаемый автор не слышал?

ЗЫ

У меня иногда складывается впечатление, что ООП придумали для того, чтобы его использовали не по назначению.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.