Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / liskov's substitution principle / 7 сообщений из 7, страница 1 из 1
08.12.2014, 11:12
    #38827794
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
liskov's substitution principle
Привет!

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

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
08.12.2014, 11:23
    #38827810
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
liskov's substitution principle
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
08.12.2014, 11:27
    #38827815
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
liskov's substitution principle
Blazkowicz,

:)

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


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