Вопросы по теме 'liskov-substitution-principle'
Нужна помощь с дизайном .Net SOLID
Я впервые пытаюсь неукоснительно придерживаться принципов SOLID-дизайна Роберта Мартина, и у меня это не получается.
По сути, мне нужна иерархия «узловых» объектов. Некоторые узлы являются NodeHosts, некоторые - NodeChildren, а некоторые - обоими....
408 просмотров
schedule
12.10.2021
Принцип подстановки Лискова и множественные иерархии
Этот вопрос является продолжением this . Я пытаюсь определить иерархию классов, включающую несколько пар, производных от основания. В качестве наглядного примера предположим, что у меня есть класс Animal и класс Food . Animal имеет чисто...
221 просмотров
schedule
16.10.2021
Нарушает ли это принцип подстановки Лискова, и если да, то что с этим делать?
Пример использования: я использую шаблоны данных для сопоставления представления с моделью представления. Шаблоны данных работают, проверяя наиболее производный тип предоставленного конкретного типа, и они не смотрят, какие интерфейсы он...
800 просмотров
schedule
23.03.2022
Можете ли вы объяснить принцип подстановки Лискова на хорошем примере С#?
Можете ли вы объяснить принцип замещения Лискова («L» в слове SOLID) на хорошем примере C#, охватывающем все аспекты этого принципа в упрощенной форме? Если это действительно возможно.
57678 просмотров
schedule
27.03.2022
Должны ли конструкторы соблюдать принцип замещения Лискова?
Обычно я стараюсь, чтобы экземпляры моих объектов соответствовали Liskov Substitution Principle , но я Мне всегда было интересно, думают ли люди, что LSP следует применять и к конструкторам?
Я пробовал поискать в Google по этому поводу, но так...
3174 просмотров
schedule
05.04.2022
Наследование классов: должны ли быть совместимы конструкторы? случай множественного наследования?
Одним из рекомендуемых принципов объектно-ориентированного программирования является принцип замещения Лисков : подкласс должен вести себя так же, как его базовый класс(ы) (предупреждение: это на самом деле не правильное описание принципа Лискова:...
372 просмотров
schedule
14.06.2022
Нарушают ли методы Collections.unmodifiableXXX LSP?
Принцип замещения Лисков является одним из принципов SOLID . Я читал этот принцип несколько раз и пытался понять его.
Вот что я делаю из этого,
Этот принцип связан с сильным поведенческим контрактом среди иерархии классов. Подтипы...
2175 просмотров
schedule
10.06.2022
Как думать о полиморфизме с подтипами
Принцип замещения Лисков гласит:
Инварианты супертипа должны сохраняться в подтипе.
Меня особенно интересует пересечение этого принципа и полиморфизма. В частности, полиморфизм подтипов, хотя на самом деле это похоже на параметрический...
317 просмотров
schedule
19.06.2022
Монопольная игра - принцип LSP OO
Я разрабатываю игру «Монополия», а также больше читаю о принципах объектно-ориентированного программирования. Я читал о LSP (принципе замещения Лискова) и обнаружил, что либо я не совсем понимаю его, либо нарушаю его и должен изменить свой дизайн....
292 просмотров
schedule
20.09.2022
Понимание отношений между Лисковым и OCP
Я укрепляю свое понимание взаимосвязи между замещающим принципалом Лисков и принципом открытого закрытия. Если бы кто-нибудь мог подтвердить мои выводы и ответить на мои вопросы ниже, это было бы здорово.
У меня есть следующие классы. Как видите,...
1339 просмотров
schedule
17.01.2023
Могу ли я реализовать серию повторно используемых тестов для проверки реализации интерфейса?
Я пишу серию классов коллекций на C#, каждый из которых реализует похожие пользовательские интерфейсы. Можно ли написать единый набор модульных тестов для интерфейса и автоматически запускать их все в нескольких разных реализациях? Я хотел бы...
1390 просмотров
schedule
19.04.2023
Как не нарушить принцип замещения Лискова (LSP)?
Я нахожусь в ситуации, очень похожей на ту, о которой упоминал Стив МакКоннелл в Code Complete. Только то, что моя проблема основана на транспортных средствах, а трайк по закону относится к категории автомобилей. Автомобили до сих пор имели четыре...
3131 просмотров
schedule
16.04.2023
Как гарантировать, что наследование классов не нарушит контракт базового класса в контексте LSP?
На C#, но может быть применим и к другим языкам, в контексте LSP Как я могу гарантировать, что класс, наследуемый от другого (изменяемого), не нарушит исходный контракт?
Например: если у меня есть установщики свойств public , internal или...
131 просмотров
schedule
28.12.2022
Не хватает очков в S.O.L.I.D Essentials?
Я прочитал так много статей об этом, но у меня есть 2 вопроса.
Вопрос № 1 - Относительно инверсии зависимостей :
В нем говорится, что классы высокого уровня не должны зависеть от классов низкого уровня. Оба должны зависеть от...
318 просмотров
schedule
02.03.2023
Если Address наследуется от PhoneNumber, какие принципы ООП он нарушает?
Была книга, в которой говорилось о наличии класса PhoneNumber , а затем мы определяли бы класс Address , наследуемый от PhoneNumber , и я как-то сказал, что мы не можем этого сделать, потому что адрес — это не номер телефона, а чтобы наследовать,...
150 просмотров
schedule
04.06.2023
Не могут ли ослабление предусловий и усиление постусловий также нарушить принцип замещения Лискова?
Фактическое предусловие подтипа создается путем комбинирования (с использованием логических OR ) предварительных условий базового типа и предварительных условий подтипа , в результате чего результирующее предварительное условие менее...
2598 просмотров
schedule
25.01.2023
Зачем использовать подстановку типов
Может ли кто-нибудь объяснить мне, в чем необходимость использования подстановки типов?
e.g.
class Circle extends Shape{
...
}
.
.
.
class Main{
public static void main(String[] args){
Shape s = new Circle();
...
}
}...
251 просмотров
schedule
24.08.2023
Принцип замещения Лисков (LSP) нарушен с помощью Design By Contract (DBC)?
Я пишу фреймворк на PHP и столкнулся с шаблоном, который плохо пахнет. Похоже, что я реализую контракт (см. «Разработка по контракту»), который нарушает принцип замены Лискова (LSP). Поскольку исходный пример сильно абстрагирован, я помещу его в...
433 просмотров
schedule
02.11.2022
Почему я могу расширить видимость модификаторов доступа в подклассах?
Наверное глупый вопрос, но зачем в Java расширять видимость модификаторов доступа в подклассах? Итак, скажем, у меня есть следующий код:
пакет а:
public class Parent
{
private String name;
void setName(String name)
{...
25 просмотров
schedule
22.02.2023
Принцип подстановки Лисков и интерфейс
Нарушает ли ICollection<T>.Add() -реализация массивов принцип подстановки Лискова? Метод приводит к NotSupportedException , что нарушает LSP, ИМХО.
string[] data = new string[] {"a"};
ICollection<string> dataCollection = data;...
1072 просмотров
schedule
01.06.2023