Вопросы по теме 'liskov-substitution-principle'
Является ли получение квадрата из прямоугольника нарушением принципа подстановки Лискова?
Я новичок в дизайне и изучаю принципы дизайна.
В нем говорится, что получение квадрата из прямоугольника является классическим примером нарушения принципа подстановки Лискова.
Если это так, каким должен быть правильный дизайн?
15981 просмотров
schedule
19.08.2022
SOLID Принцип замещения Лисков
Если у меня есть что-то вроде
class square : figure {}
class triangle : figure {}
Означает ли это, что я никогда не должен использовать классы квадрата и треугольника, а только обращаться к фигуре?
Как никогда не делай так:
var x =...
972 просмотров
schedule
30.07.2023
Принцип подстановки Лисков и направленность исходного утверждения
Сегодня вечером я наткнулся на оригинальное утверждение принципа замещения Лискова в вики Уорда:
Здесь требуется что-то вроде следующего свойства подстановки: если для каждого объекта o1 типа S существует объект o2 типа T, такой что для всех...
181 просмотров
schedule
08.04.2024
Могу ли я в этом случае нарушить ЛСП (подмена Лискова)?
У меня есть абстрактный класс модели, который объявляет список элементов. Аннотация имеет два абстрактных класса. Один, в котором вы можете добавлять новые элементы в список, и другой, который не использует список вообще, но в остальном...
640 просмотров
schedule
16.04.2023
Как избежать нарушений LSP (принципов замены Лискова)
В настоящее время я читаю "Эффективная работа с устаревшим кодом" автора Майкл Фезерс
и я думаю, что понимаю о нарушениях LSP, но дело в том, что там говорится об эмпирических правилах, которые помогают избежать нарушений LSP, а именно:...
106 просмотров
schedule
17.05.2023
Почему в Scala невозможно заменить var на def?
Хотя я понимаю, почему var не может переопределить val в подклассе и наоборот, я не могу понять, почему Scala не позволяет def в подклассе переопределять var в суперклассе.
class Car {
var age = 32
}
class SedanCar extends Car {...
962 просмотров
schedule
20.05.2023
Принцип подстановки Лисков (LSP), шаблон прокси и исключения
Предположим, у меня есть интерфейс и его конкретная реализация, которую использует клиентский код. Теперь, используя шаблон прокси, который реализует этот интерфейс, я мог направлять запросы к интерфейсу по сети. Конечно, сетевое соединение может не...
280 просмотров
schedule
03.02.2023
Подтипы коллекций - принцип подстановки Лисков
Java не допускает Collection<Car> в качестве подтипа Collection<Vehicle> . Это потому, что Collection<Car> нельзя использовать вместо каждого Collection<Vehicle> , поскольку Collection<Vehicle> может содержать...
550 просмотров
schedule
24.01.2024
Как написать ImmutableMap, который следует подстановке Лискова и другим принципам SOLID без запаха кода?
Я ответил на вопрос относительно ImmutableMap . Я предложил использовать шаблон Proxy.
Проблема в том, что Map содержит метод put , который выдает UnsupportedOperationException . Замена других экземпляров Map на ImmutableMap нарушит...
236 просмотров
schedule
14.07.2023
Производный объект Java LSP может заменить базовый объект
Что касается принципа замены Лискова (LSP), в нем говорится, что объект производного класса может заменить объект базового класса без сбоя выполнения программы.
Что, если мой родительский класс является абстрактным базовым классом с функцией:...
138 просмотров
schedule
31.07.2023
Нарушение принципа подстановки Лисков в SharedFolder
Текущий дизайн
SharedFolder является подклассом Folder .
SharedFile является подклассом File с URL-адресом удаленного ресурса.
Folder принимает File в методе add .
SharedFolder принимает только SharedFile , но не общие File...
100 просмотров
schedule
24.05.2023
Как я могу избежать нарушения 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 просмотров
schedule
26.10.2022
Правильно ли это понимание принципа подстановки Лисков?
Об этом меня спросили в интервью.
Я ответил ему, сказав, что для одного и того же набора входных данных и родитель, и дочерний элемент должны производить одинаковый набор выходных данных. Если дочерний элемент хочет расширить функциональность...
3405 просмотров
schedule
22.12.2022
Является ли переопределение метода единственным способом нарушить 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 просмотров
schedule
15.10.2022
Совместима ли структурная (утиная) типизация с LSP?
Делает ли структурное подтипирование невозможным использование LSP в некоторых случаях? Например, предположим, что у меня есть установка Python* с номинальной типизацией, например
class Foo(ABC):
def frobnicate(self) -> int:...
50 просмотров
schedule
21.09.2023