powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / liskov's substitution principle
7 сообщений из 7, страница 1 из 1
liskov's substitution principle
    #38827794
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Разбираюсь с сабжем:

http://www.oodesign.com/liskov-s-substitution-principle.html

И не очень понимаю фразу:

авторLikov's Substitution Principle states that if a program module is using a Base class, then the reference to the Base class can be replaced with a Derived class without affecting the functionality of the program module.

Как ссылка на базовый класс может быть заменена ссылкой на наследуемый?

И ещё, я привык - что наследование - используется для переопределения функционала базового класса, например. Полиморфизм тот же.

Или главная проблема в том, что иерархия классов в примере неверная - rectangle - squere?

Поясните, пожалуйста. Спасибо.
...
Рейтинг: 0 / 0
liskov's substitution principle
    #38827810
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtusавторLikov's Substitution Principle states that if a program module is using a Base class, then the reference to the Base class can be replaced with a Derived class without affecting the functionality of the program module.
Как ссылка на базовый класс может быть заменена ссылкой на наследуемый?

Ссылка на базовый класс заменяется наследуемым классом (а не ссылкой). Переводите внимательно. В любом случае принцип стоит адаптировать к нюансам языка. Чтобы было понятно. Речь об обычном наследовании:
Код: java
1.
Base b = new Derived();



mr_virtusИ ещё, я привык - что наследование - используется для переопределения функционала базового класса, например. Полиморфизм тот же.

Полиморфизм другая тема. В том то и ошибка использование наследования для "переопределение". Лисков утверждает что при наследовании можно только расширять. Наследование заключается в том что Derived "является"(отношение is-a) Base. Но если ты меняешь поведений, то твой Derived ломает контракт Base. Так как он должен им являтся. Но его реализация "не является" Base.

mr_virtusИли главная проблема в том, что иерархия классов в примере неверная - rectangle - squere?

Главная проблема в том что square пишется через "a". А указанный вопрос не проблема. Правильное отношение rectangle - square зависит только от сценария использование этих классов. В одних сценариях такое наследование приносит пользу. В других - вред.
Принцип Лисков говорит о "поведении". В то время как rectangle и square это только "состояние".
...
Рейтинг: 0 / 0
liskov's substitution principle
    #38827815
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

:)

Спасибо большое!
...
Рейтинг: 0 / 0
liskov's substitution principle
    #38827832
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczЛисков утверждает
Может таки Лискова?)
...
Рейтинг: 0 / 0
liskov's substitution principle
    #38827837
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mkBlazkowiczЛисков утверждает
Может таки Лискова?)
Её фамилия не склоняется на сколько я знаю.
...
Рейтинг: 0 / 0
liskov's substitution principle
    #38827966
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Варвара Лискова.
...
Рейтинг: 0 / 0
liskov's substitution principle
    #38827970
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / liskov's substitution principle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]