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

Нужна помощь с дизайном .Net SOLID
Я впервые пытаюсь неукоснительно придерживаться принципов SOLID-дизайна Роберта Мартина, и у меня это не получается. По сути, мне нужна иерархия «узловых» объектов. Некоторые узлы являются NodeHosts, некоторые - NodeChildren, а некоторые - обоими....
408 просмотров

Принцип подстановки Лискова и множественные иерархии
Этот вопрос является продолжением this . Я пытаюсь определить иерархию классов, включающую несколько пар, производных от основания. В качестве наглядного примера предположим, что у меня есть класс Animal и класс Food . Animal имеет чисто...
221 просмотров

Нарушает ли это принцип подстановки Лискова, и если да, то что с этим делать?
Пример использования: я использую шаблоны данных для сопоставления представления с моделью представления. Шаблоны данных работают, проверяя наиболее производный тип предоставленного конкретного типа, и они не смотрят, какие интерфейсы он...
800 просмотров

Можете ли вы объяснить принцип подстановки Лискова на хорошем примере С#?
Можете ли вы объяснить принцип замещения Лискова («L» в слове SOLID) на хорошем примере C#, охватывающем все аспекты этого принципа в упрощенной форме? Если это действительно возможно.
57678 просмотров

Должны ли конструкторы соблюдать принцип замещения Лискова?
Обычно я стараюсь, чтобы экземпляры моих объектов соответствовали Liskov Substitution Principle , но я Мне всегда было интересно, думают ли люди, что LSP следует применять и к конструкторам? Я пробовал поискать в Google по этому поводу, но так...
3174 просмотров

Наследование классов: должны ли быть совместимы конструкторы? случай множественного наследования?
Одним из рекомендуемых принципов объектно-ориентированного программирования является принцип замещения Лисков : подкласс должен вести себя так же, как его базовый класс(ы) (предупреждение: это на самом деле не правильное описание принципа Лискова:...
372 просмотров

Нарушают ли методы Collections.unmodifiableXXX LSP?
Принцип замещения Лисков является одним из принципов SOLID . Я читал этот принцип несколько раз и пытался понять его. Вот что я делаю из этого, Этот принцип связан с сильным поведенческим контрактом среди иерархии классов. Подтипы...
2175 просмотров

Как думать о полиморфизме с подтипами
Принцип замещения Лисков гласит: Инварианты супертипа должны сохраняться в подтипе. Меня особенно интересует пересечение этого принципа и полиморфизма. В частности, полиморфизм подтипов, хотя на самом деле это похоже на параметрический...
317 просмотров

Монопольная игра - принцип LSP OO
Я разрабатываю игру «Монополия», а также больше читаю о принципах объектно-ориентированного программирования. Я читал о LSP (принципе замещения Лискова) и обнаружил, что либо я не совсем понимаю его, либо нарушаю его и должен изменить свой дизайн....
292 просмотров
schedule 20.09.2022

Понимание отношений между Лисковым и OCP
Я укрепляю свое понимание взаимосвязи между замещающим принципалом Лисков и принципом открытого закрытия. Если бы кто-нибудь мог подтвердить мои выводы и ответить на мои вопросы ниже, это было бы здорово. У меня есть следующие классы. Как видите,...
1339 просмотров

Могу ли я реализовать серию повторно используемых тестов для проверки реализации интерфейса?
Я пишу серию классов коллекций на C#, каждый из которых реализует похожие пользовательские интерфейсы. Можно ли написать единый набор модульных тестов для интерфейса и автоматически запускать их все в нескольких разных реализациях? Я хотел бы...
1390 просмотров

Как не нарушить принцип замещения Лискова (LSP)?
Я нахожусь в ситуации, очень похожей на ту, о которой упоминал Стив МакКоннелл в Code Complete. Только то, что моя проблема основана на транспортных средствах, а трайк по закону относится к категории автомобилей. Автомобили до сих пор имели четыре...
3131 просмотров
schedule 16.04.2023

Как гарантировать, что наследование классов не нарушит контракт базового класса в контексте LSP?
На C#, но может быть применим и к другим языкам, в контексте LSP Как я могу гарантировать, что класс, наследуемый от другого (изменяемого), не нарушит исходный контракт? Например: если у меня есть установщики свойств public , internal или...
131 просмотров

Не хватает очков в S.O.L.I.D Essentials?
Я прочитал так много статей об этом, но у меня есть 2 вопроса. Вопрос № 1 - Относительно инверсии зависимостей : В нем говорится, что классы высокого уровня не должны зависеть от классов низкого уровня. Оба должны зависеть от...
318 просмотров

Если Address наследуется от PhoneNumber, какие принципы ООП он нарушает?
Была книга, в которой говорилось о наличии класса PhoneNumber , а затем мы определяли бы класс Address , наследуемый от PhoneNumber , и я как-то сказал, что мы не можем этого сделать, потому что адрес — это не номер телефона, а чтобы наследовать,...
150 просмотров

Не могут ли ослабление предусловий и усиление постусловий также нарушить принцип замещения Лискова?
Фактическое предусловие подтипа создается путем комбинирования (с использованием логических OR ) предварительных условий базового типа и предварительных условий подтипа , в результате чего результирующее предварительное условие менее...
2598 просмотров

Зачем использовать подстановку типов
Может ли кто-нибудь объяснить мне, в чем необходимость использования подстановки типов? e.g. class Circle extends Shape{ ... } . . . class Main{ public static void main(String[] args){ Shape s = new Circle(); ... } }...
251 просмотров

Принцип замещения Лисков (LSP) нарушен с помощью Design By Contract (DBC)?
Я пишу фреймворк на PHP и столкнулся с шаблоном, который плохо пахнет. Похоже, что я реализую контракт (см. «Разработка по контракту»), который нарушает принцип замены Лискова (LSP). Поскольку исходный пример сильно абстрагирован, я помещу его в...
433 просмотров

Почему я могу расширить видимость модификаторов доступа в подклассах?
Наверное глупый вопрос, но зачем в Java расширять видимость модификаторов доступа в подклассах? Итак, скажем, у меня есть следующий код: пакет а: public class Parent { private String name; void setName(String name) {...
25 просмотров

Принцип подстановки Лисков и интерфейс
Нарушает ли ICollection<T>.Add() -реализация массивов принцип подстановки Лискова? Метод приводит к NotSupportedException , что нарушает LSP, ИМХО. string[] data = new string[] {"a"}; ICollection<string> dataCollection = data;...
1072 просмотров