История изменений
Исправление AndreyKl, (текущая версия) :
Далее мы пишем программу, рисующую окружность. Далее в ней заменяем виджет «окружность» виджетом «круг». И - вуаля! Мы по определению нарушили принцип Лисков, потому что поведение программы не должно было измениться от замены класса на подкласс (см. формулировку принципа Лисков).
По-моему бредовенько. Это ты сам выдумал или в книжке какой прочитал?
И да, на мой взгляд, конкретно в этом случае проблема с твоим рассуждением в том что метод draw обещает нам отрисовать объект так как положено отрисовывать объект. И именно это и будет ожидать любой нормальный человек. И это и есть контракт draw - отрисовать правильно объект. Так что ничего тут не нарушается.
Исправление AndreyKl, :
Далее мы пишем программу, рисующую окружность. Далее в ней заменяем виджет «окружность» виджетом «круг». И - вуаля! Мы по определению нарушили принцип Лисков, потому что поведение программы не должно было измениться от замены класса на подкласс (см. формулировку принципа Лисков).
По-моему бредовенько. Это ты сам выдумал или в книжке какой прочитал?
Да, конкретно в этом случае проблема с твоим рассуждением в том что метод draw обещает нам отрисовать объект так как положено отрисовывать объект. И именно это и будет ожидать любой нормальный человек. И это и есть контракт draw - отрисовать правильно объект. Так что ничего тут не нарушается.
Исходная версия AndreyKl, :
Далее мы пишем программу, рисующую окружность. Далее в ней заменяем виджет «окружность» виджетом «круг». И - вуаля! Мы по определению нарушили принцип Лисков, потому что поведение программы не должно было измениться от замены класса на подкласс (см. формулировку принципа Лисков).
По-моему бредовенько. Это ты сам выдумал или в книжке какой прочитал?