powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / LSP принцип.
5 сообщений из 30, страница 2 из 2
LSP принцип.
    #38593210
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,

Просто не понятно, для чего тебе точная математическая формулировка? На пальцах это не просто показать. А делать большой полноценный пример, ну его нафиг. Если есть конкретный код, по нему не так сложно прикинуть нарушение LSP.
...
Рейтинг: 0 / 0
LSP принцип.
    #38593220
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Встретил такое понятие как LSP принцип:
откуда-то с интернетаНаследуемый объект может заменить родительское пред-условие на такое же или более слабое и родительское пост-условие на такое же или более сильное.

Как-то нагугленное по этой теме не дало мне четкого представления о том, что же это за принцип, что есть пост и предусловие.

Смотри eiffel, там всё это реализовано на уровне языка. Больше такого нигде не встречал, и это очень печально.

Если погуглить по "Бертран Мейер. Объектно-ориентированное конструирование программных систем" можно почитать книгу.

С примерами на java и С++ кажется можно тут почитать.
...
Рейтинг: 0 / 0
LSP принцип.
    #38593321
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНа пальцах это не просто показать.

Да не сложно. Просто перевод неправильный. :) Уловия не бывают ослабленными и ужесточенными - эти слова относятся к ограничениям.
Если использовать термины ограничения на входе и ограничения на входе, то сразу все становится понятно.

Как я уже сказал - нет assertion нет проблемы. :)
...
Рейтинг: 0 / 0
LSP принцип.
    #38593668
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
redwhite90пролетевшийпропущено...


Предусловие ослабляем: наследник может принимать отрицательные аргументы. Все операции которые вызывают метод с положительными аргументами ничего не заметили.
Постусловие: наш класс может возвращать результат не больше Integer.MAX_VALUE.
Наследник может сосчитать большие значения. Существуюшие клиенты опять таки ничего не заметят.


хотя бррр...

давайте математически:

родитель
предусловие
принимает числа [0;100]
постусловие
возвращает числа [0; 10000]
наследник
предусловие
принимает числа [-100;100]
постусловие
возвращает числа [0;55000]


сравним предусловия:
родитель [0;100]
наследник [-100;100]
сравним постусловия
родитель [0; 10000]
наследник [0;55000]


Что в предусловии, что в постусловии мы расширили диапазон. Почему в одном случае это усиление(видимо в пост) а в другом это ослабление?


давайте ещё разок к этой части дискуссии.

насчёт постусловия.
Если мы уменьшим диапазон возвращаемых значений, то соответственно для каких то случаев, когда родитель возвращал какое-то значение предок отработает как-то не так. -нарушение принципа.


Если мы уменьшим диапазон возвращаемых значений -
авторГм. это ослабление. Его не должно быть - ибо тот кто работает с предком может не ожидать получение 10001. тоже как бы нарушение принципа.

Вот это то мне и непонятно.

Вроде бы всё логично объяснил.
...
Рейтинг: 0 / 0
LSP принцип.
    #38595033
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90насчёт постусловия.
Если мы уменьшим диапазон возвращаемых значений, то соответственно для каких то случаев, когда родитель возвращал какое-то значение предок отработает как-то не так. -нарушение принципа.
Рассматривать надо не сточки зрения предка, а с точки зрения того, кто его вызывает.

Если Вы вызываете метод класса, про который Вы знаете, что он возвращает значение от 0 до 100, то если он станет возвращать от 0 до 50 Вашу логику не нарушит (Вы знаете , что делать с этими числами - они и раньше попадались). Но возврат 101 может нарушить. Поэтому услиление разрешается, а ослабление нет.
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / LSP принцип.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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