Вопросы с тегом «liskov-substitution»

По вопросам о принципе подстановки Лисков в объектно-ориентированном дизайне.

10
Это нарушение принципа подстановки Лискова?
Скажем, у нас есть список сущностей задач и ProjectTaskподтип. Задачи могут быть закрыты в любое время, кроме тех, ProjectTasksкоторые не могут быть закрыты, если они имеют статус Запущено. Пользовательский интерфейс должен гарантировать, что опция закрытия запуска ProjectTaskникогда не будет доступна, но в домене присутствуют некоторые меры безопасности: public class Task …

8
LSP vs OCP / Замена Лискова VS Open Закрыть
Я пытаюсь понять твердые принципы ООП и пришел к выводу, что у LSP и OCP есть некоторые сходства (если не сказать больше). принцип открытого / закрытого состояния гласит, что «программные объекты (классы, модули, функции и т. д.) должны быть открыты для расширения, но закрыты для модификации». Проще говоря, LSP гласит, …

3
В чем разница между подклассом и подтипом?
Самый высокий рейтинг ответа на этот вопрос о принципе замещения Лискова изо всех сил старается различить термины подтип и подкласс . Это также указывает на то, что некоторые языки объединяют два, а другие нет. Для объектно-ориентированных языков, с которыми я больше всего знаком (Python, C ++), «тип» и «класс» являются …

14
Существует ли язык или шаблон проектирования, который позволяет * удалять * поведение объекта или свойства в иерархии классов?
Общеизвестным недостатком традиционных иерархий классов является то, что они плохи, когда дело доходит до моделирования реального мира. В качестве примера пытаемся представить виды животных с помощью классов. При этом есть несколько проблем, но я никогда не видел решения, когда подкласс «теряет» поведение или свойство, которое было определено в суперклассе, например, …

9
Что может пойти не так, если нарушится принцип подстановки Лискова?
Я следил за этим высоко оцененным вопросом о возможном нарушении принципа подстановки Лискова. Я знаю, что такое принцип подстановки Лискова, но мне все еще неясно, что может пойти не так, если я, как разработчик, не задумываюсь над этим принципом при написании объектно-ориентированного кода.

5
Не нарушают ли частные случаи с запасными вариантами принцип подстановки Лискова?
Допустим, у меня есть интерфейс, FooInterfaceкоторый имеет следующую подпись: interface FooInterface { public function doSomething(SomethingInterface something); } И конкретный класс, ConcreteFooкоторый реализует этот интерфейс: class ConcreteFoo implements FooInterface { public function doSomething(SomethingInterface something) { } } Я хотел бы ConcreteFoo::doSomething()сделать что-то уникальное, если ему передан специальный тип SomethingInterfaceобъекта (скажем, он …

3
Как усиление предусловий и ослабление постусловий нарушают принцип подстановки Лискова?
Я читал, что принцип замещения Лискова нарушается, если: Предпосылки усиливаются, или Постусловия ослаблены Но я еще не до конца понял, как эти два пункта нарушают принцип подстановки Лискова. Может кто-нибудь, пожалуйста, объясните на примере. В частности, каким образом любое из вышеперечисленных условий может вызвать ситуацию, когда объект подкласса не может …

3
Есть ли конкретное название для парадокса «Квадрат наследует от прямоугольника»?
Определенная ошибка ООП показана с классом Square, унаследованным от Rectangle, где логически Square является специализацией Rectangle и поэтому должен наследовать от него, но все рушится, когда вы пытаетесь изменить длину или ширину Square. Есть ли конкретный термин для описания того, что происходит с этим случаем?

3
Государственный паттерн нарушает принцип подстановки Лискова?
Это изображение взято из применения доменного дизайна и шаблонов: с примерами в C # и .NET Это диаграмма классов для шаблона состояний, в котором в SalesOrderтечение срока службы может быть несколько состояний. Между разными состояниями разрешены только определенные переходы. Теперь OrderStateкласс является abstractклассом, и все его методы наследуются его подклассам. …

1
Применяется ли принцип подстановки Лискова к классам, реализующим интерфейс?
LSP утверждает, что классы должны быть заменяемыми для их базовых классов, а это означает, что производные и базовые классы должны быть семантически эквивалентными. Но применяется ли LSP к классам, реализующим интерфейс? Другими словами, если метод интерфейса, реализуемый классом, семантически отличается от того, что пользователь ожидает от него, будет ли это …

2
Реальный мир - принцип замещения Лискова
Справочная информация: я разрабатываю систему обмена сообщениями. Эта структура позволит: отправка сообщений через сервисную шину подписка на очереди в шине сообщений подписка на темы в шине сообщений В настоящее время мы используем RabbitMQ, но я знаю, что мы перейдем на Microsoft Service Bus (в Premise) в самое ближайшее время. Я …


1
Как проверить принцип подстановки Лискова в иерархии наследования?
Вдохновленный этим ответом: Лиск принцип замещения требует , что Предпосылки не могут быть усилены в подтипе. Постусловия не могут быть ослаблены в подтипе. Инварианты супертипа должны быть сохранены в подтипе. Ограничение истории («правило истории»). Объекты считаются изменяемыми только через их методы (инкапсуляция). Поскольку подтипы могут вводить методы, которых нет в …

2
Стек, расширяющий LinkedList. Нарушение принципа подстановки Лискова?
Существует класс LinkedList с такими функциями, как add_first (), add_last (), add_after (), remove_first (), remove_last () и remove () Теперь есть класс Stack, который предоставляет такие функции, как push (), pop (), peek () или top (), и для реализации этих методов он расширяет методы класса LinkedList. Это нарушение …

6
Может ли проблема круг-эллипс быть решена путем изменения отношений?
Имея CircleпростиратьсяEllipse перерывам в Лиск Substition принципе , потому что она изменяет постусловие , а именно: вы можете установить X и Y независимо друг от друга , чтобы нарисовать эллипс, но X всегда должен быть равен Y для окружностей. Но разве проблема не в том, что круг является подтипом эллипса? …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.