|
|
|
LSP принцип.
|
|||
|---|---|---|---|
|
#18+
redwhite90, Просто не понятно, для чего тебе точная математическая формулировка? На пальцах это не просто показать. А делать большой полноценный пример, ну его нафиг. Если есть конкретный код, по нему не так сложно прикинуть нарушение LSP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2014, 18:17 |
|
||
|
LSP принцип.
|
|||
|---|---|---|---|
|
#18+
redwhite90Встретил такое понятие как LSP принцип: откуда-то с интернетаНаследуемый объект может заменить родительское пред-условие на такое же или более слабое и родительское пост-условие на такое же или более сильное. Как-то нагугленное по этой теме не дало мне четкого представления о том, что же это за принцип, что есть пост и предусловие. Смотри eiffel, там всё это реализовано на уровне языка. Больше такого нигде не встречал, и это очень печально. Если погуглить по "Бертран Мейер. Объектно-ориентированное конструирование программных систем" можно почитать книгу. С примерами на java и С++ кажется можно тут почитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2014, 18:30 |
|
||
|
LSP принцип.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНа пальцах это не просто показать. Да не сложно. Просто перевод неправильный. :) Уловия не бывают ослабленными и ужесточенными - эти слова относятся к ограничениям. Если использовать термины ограничения на входе и ограничения на входе, то сразу все становится понятно. Как я уже сказал - нет assertion нет проблемы. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2014, 20:48 |
|
||
|
LSP принцип.
|
|||
|---|---|---|---|
|
#18+
redwhite90пролетевшийпропущено... Предусловие ослабляем: наследник может принимать отрицательные аргументы. Все операции которые вызывают метод с положительными аргументами ничего не заметили. Постусловие: наш класс может возвращать результат не больше Integer.MAX_VALUE. Наследник может сосчитать большие значения. Существуюшие клиенты опять таки ничего не заметят. хотя бррр... давайте математически: родитель предусловие принимает числа [0;100] постусловие возвращает числа [0; 10000] наследник предусловие принимает числа [-100;100] постусловие возвращает числа [0;55000] сравним предусловия: родитель [0;100] наследник [-100;100] сравним постусловия родитель [0; 10000] наследник [0;55000] Что в предусловии, что в постусловии мы расширили диапазон. Почему в одном случае это усиление(видимо в пост) а в другом это ослабление? давайте ещё разок к этой части дискуссии. насчёт постусловия. Если мы уменьшим диапазон возвращаемых значений, то соответственно для каких то случаев, когда родитель возвращал какое-то значение предок отработает как-то не так. -нарушение принципа. Если мы уменьшим диапазон возвращаемых значений - авторГм. это ослабление. Его не должно быть - ибо тот кто работает с предком может не ожидать получение 10001. тоже как бы нарушение принципа. Вот это то мне и непонятно. Вроде бы всё логично объяснил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 18:40 |
|
||
|
LSP принцип.
|
|||
|---|---|---|---|
|
#18+
redwhite90насчёт постусловия. Если мы уменьшим диапазон возвращаемых значений, то соответственно для каких то случаев, когда родитель возвращал какое-то значение предок отработает как-то не так. -нарушение принципа. Рассматривать надо не сточки зрения предка, а с точки зрения того, кто его вызывает. Если Вы вызываете метод класса, про который Вы знаете, что он возвращает значение от 0 до 100, то если он станет возвращать от 0 до 50 Вашу логику не нарушит (Вы знаете , что делать с этими числами - они и раньше попадались). Но возврат 101 может нарушить. Поэтому услиление разрешается, а ослабление нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2014, 18:41 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38593220&tid=2127450]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 377ms |

| 0 / 0 |
