Форум
Философия программирования
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, k.o., Вы писали: KO>Здравствуйте, VladD2, Вы писали: VD>>Здравствуйте, LaptevVV, Вы писали: LVV>>>Кстати о "правильности" наследования: LVV>>>[q] LVV>>> спецификация. Дочерний класс реализует поведение, описанное в родительском классе. Ясно, что в С++ эта форма реализуется простым открытым наследованием от абстрактного класса; LVV>>> конструирование. Класс-наследник использует методы базового класса, но не является его подтипом (принцип подстановки не выполняется). В С++ такую форму можно реализовать простым закрытым наследованием; LVV>>> расширение. В класс-потомок добавляют новые методы, расширяя поведение родительского класса; принцип подстановки в такой форме выполняется; LVV>>> обобщение. Дочерний класс обобщает поведение базового класса. Обычно такое наследование используется в тех случаях, когда мы не можем изменить поведение базового класса (например, базовый класс является библиотечным классом); LVV>>> ограничение. Класс-наследник ограничивает поведение родительского класса. Очевидно, что в С++ такой вид наследования реализуется простым закрытым наследованием (пример — TUniversalDeque -> TStack ); LVV>>> варьирование. Базовый класс и класс-потомок являются вариациями на одну тему, однако связь «класс-подкласс» произвольна, например, «квадрат-прямоугольник» или «прямоугольник-квадрат». Эта форма фактически не отличается от «конструирования», так как класс-наследник, очевидно, «использует методы базового класса, но не является его подтипом»; LVV>>> комбинирование. Дочерний класс наследует черты нескольких классов — это множественное наследование. LVV>>>[/q] VD>>Что только народ не придумает, чтобы оправдать использование наследования не по назначению?! VD>>А про возможность внутренние поля объявлять этот уважаемый автор не слышал? KO>А ты про empty base class optimization, не слышал? Или про ADL? В C++ наследование, всё-таки, даёт некоторые возможности, которые с помощью аггрегации не получишь. Между прочим, кто сказал, что единственное назначение наследования это выражение отношения тип - подтип согласно LSP? ;) KO>B. Liskov "Data Abstraction and Hierarchy" KO>[q] KO>We are using the words "subtype" and "supertype" here to emphasize that now we are talking about KO>a semantic distinction. By contrast, "subclass" and "superclass" are simply linguistic concepts in KO>programming languages that allow programs to be built in a particular way. They can be used to KO>implement subtypes, but also, as mentioned above, in other ways. KO>[/q]
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …