Форум
Философия программирования
Тема
Как правильно задавать вопросы
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
Здравствуйте, fmiracle, Вы писали: F>Здравствуйте, igor-booch, Вы писали: IB>>По-мойму это справедливо если классы наследники только добавляют новые методы. Если в классах наследниках происходит перекрытие методов базового класса, то такая подстановка сломает программу. Например базовый класс [b]принтер[/b], класс наследник[b] цветной лазерный принтер[/b]. Метод [b]печатать[/b]. F>Принцип говорит, что при проектировании класса принтер, у которого будет еще много наследников, спецификация на его метод Print должна описывать этот метод достаточно обще, чтобы все наследники под него подпадали. Например, просто говорится, что "изображение будет распечатано на плоском листе бумаги". И программа, если использует именно класс Printer, а не его наследника, никак не должна делать каких-либо предположений, больших чем просто что после этой операции изображение попадет на бумагу. Не должно быть предположений, что оно будет цветным или чернобелым, высокой детализации или низкой, устойчивым к воде или нет. Если нужны какие-то более точные гарантии на получившийся результат, - используй другие базовые классы (или интерфейсы). F>А если вдруг нужно что-то, что делает все же не в соответствии со спецификацией, ожидаемой в программе, то не надо использовать этот же базовый класс, а надо завести другой, даже если на первый взгляд поведение и сигнатура методов очень похожи. Опять же например - если для нашего принтера ожидается, что это будет распечатка на бумаге, то при необходимости создать принтер, печатающий на CD-болванках, или какой-нибудь 3D-принтер - для них надо создавать другие базовые классы.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …