Вопросы по теме 'liskov-substitution-principle'

Является ли получение квадрата из прямоугольника нарушением принципа подстановки Лискова?
Я новичок в дизайне и изучаю принципы дизайна. В нем говорится, что получение квадрата из прямоугольника является классическим примером нарушения принципа подстановки Лискова. Если это так, каким должен быть правильный дизайн?
15981 просмотров
schedule 19.08.2022

SOLID Принцип замещения Лисков
Если у меня есть что-то вроде class square : figure {} class triangle : figure {} Означает ли это, что я никогда не должен использовать классы квадрата и треугольника, а только обращаться к фигуре? Как никогда не делай так: var x =...
972 просмотров

Принцип подстановки Лисков и направленность исходного утверждения
Сегодня вечером я наткнулся на оригинальное утверждение принципа замещения Лискова в вики Уорда: Здесь требуется что-то вроде следующего свойства подстановки: если для каждого объекта o1 типа S существует объект o2 типа T, такой что для всех...
181 просмотров

Могу ли я в этом случае нарушить ЛСП (подмена Лискова)?
У меня есть абстрактный класс модели, который объявляет список элементов. Аннотация имеет два абстрактных класса. Один, в котором вы можете добавлять новые элементы в список, и другой, который не использует список вообще, но в остальном...
640 просмотров

Как избежать нарушений LSP (принципов замены Лискова)
В настоящее время я читаю "Эффективная работа с устаревшим кодом" автора Майкл Фезерс и я думаю, что понимаю о нарушениях LSP, но дело в том, что там говорится об эмпирических правилах, которые помогают избежать нарушений LSP, а именно:...
106 просмотров

Почему в Scala невозможно заменить var на def?
Хотя я понимаю, почему var не может переопределить val в подклассе и наоборот, я не могу понять, почему Scala не позволяет def в подклассе переопределять var в суперклассе. class Car { var age = 32 } class SedanCar extends Car {...
962 просмотров

Принцип подстановки Лисков (LSP), шаблон прокси и исключения
Предположим, у меня есть интерфейс и его конкретная реализация, которую использует клиентский код. Теперь, используя шаблон прокси, который реализует этот интерфейс, я мог направлять запросы к интерфейсу по сети. Конечно, сетевое соединение может не...
280 просмотров

Подтипы коллекций - принцип подстановки Лисков
Java не допускает Collection<Car> в качестве подтипа Collection<Vehicle> . Это потому, что Collection<Car> нельзя использовать вместо каждого Collection<Vehicle> , поскольку Collection<Vehicle> может содержать...
550 просмотров

Как написать ImmutableMap, который следует подстановке Лискова и другим принципам SOLID без запаха кода?
Я ответил на вопрос относительно ImmutableMap . Я предложил использовать шаблон Proxy. Проблема в том, что Map содержит метод put , который выдает UnsupportedOperationException . Замена других экземпляров Map на ImmutableMap нарушит...
236 просмотров

Производный объект Java LSP может заменить базовый объект
Что касается принципа замены Лискова (LSP), в нем говорится, что объект производного класса может заменить объект базового класса без сбоя выполнения программы. Что, если мой родительский класс является абстрактным базовым классом с функцией:...
138 просмотров
schedule 31.07.2023

Нарушение принципа подстановки Лисков в SharedFolder
Текущий дизайн SharedFolder является подклассом Folder . SharedFile является подклассом File с URL-адресом удаленного ресурса. Folder принимает File в методе add . SharedFolder принимает только SharedFile , но не общие File...
100 просмотров

Как я могу избежать нарушения LSP в этом примере? С#
У меня есть базовый класс с именем Message , например: public abstract class Message { protected int m_id; protected bool m_localized; protected string m_metaData; public int GetID() { return m_id; } public bool...
203 просмотров

Правильно ли это понимание принципа подстановки Лисков?
Об этом меня спросили в интервью. Я ответил ему, сказав, что для одного и того же набора входных данных и родитель, и дочерний элемент должны производить одинаковый набор выходных данных. Если дочерний элемент хочет расширить функциональность...
3405 просмотров

Является ли переопределение метода единственным способом нарушить LSP?
Я искал признаки в коде, которые могли бы сказать, что принцип подстановки Лискова может быть потенциально нарушен. Сначала я сделал простой класс и еще один класс, унаследованный от него: public class Adder { public virtual int Add(int...
338 просмотров
schedule 03.03.2023

Нарушает ли этот пример машинописного текста принцип подстановки Лисков?
У меня есть следующий код: type T = { foo: string } var t: T = { foo: 'foo' } interface S { foo: string } var s: S = t Итак, мы знаем, что T < S . Как насчет этого? t = s Итак, S < T тоже верно. Мы можем предположить,...
155 просмотров

Совместима ли структурная (утиная) типизация с LSP?
Делает ли структурное подтипирование невозможным использование LSP в некоторых случаях? Например, предположим, что у меня есть установка Python* с номинальной типизацией, например class Foo(ABC): def frobnicate(self) -> int:...
50 просмотров