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

Является ли определение моего лектора принципа замещения Лисков неверным, или я неправильно понимаю?
Следующее работает из-за принципа подстановки (Лисков), который гласит, что если ожидается ссылка на экземпляр определенного класса, то вы можете заменить ссылку на экземпляр любого подкласса этого класса. public static void main( String[] args )...
425 просмотров

Может ли кто-нибудь привести пример принципа замещения Лискова (LSP) с использованием транспортных средств?
Принцип замещения Лискова гласит, что подтип должен быть заменяемым для этого типа (без изменения правильности программы). Может кто-нибудь привести пример этого принципа в области транспортных средств (автомобилей)? Кто-нибудь может привести...
17491 просмотров

Переопределение getPreferredSize() прерывает LSP
Я всегда вижу на этом сайте советы по переопределению getPreferredSize() вместо использования setPreferredSize() , как показано, например, в этих предыдущих темах. Использование переопределения getPreferredSize() вместо использования...
980 просмотров

Является ли PartialFunction extends Function нарушением LSP?
Принцип замещения Лискова гласит, что если S является подтипом T , тогда объекты типа T могут быть заменены объектами типа S без изменения каких-либо желаемых свойств этой программы. Однако в Scala есть PartialFunction , который...
129 просмотров
schedule 04.12.2023

Как я могу отменить определение магических методов Python в подклассе?
Есть ли способ в Python 3 указать, что класс не поддерживает какую-либо операцию, которую поддерживает его родительский класс? . Например, предположим, что у меня есть некоторый класс коллекции с методом __len__ , и я хочу создать дочерний класс,...
267 просмотров

Нарушает ли ковариация массива Java принцип подстановки Лисков?
Я читал, почему ковариантность массивов в Java плохая ( Почему массивы ковариантны, но дженерики инвариантны? ). Если Dog является подтипом Animal , то Dog[] является подтипом Animal[] . Это проблема, потому что такие вещи можно сделать:...
499 просмотров

При соблюдении принципа замещения Лискова (LSP) может ли дочерний класс реализовать дополнительный интерфейс?
Рассмотрим этот рубиновый пример class Animal def walk # In our universe all animals walk, even whales puts "walking" end def run # Implementing to conform to LSP, even though only some animals run raise...
711 просмотров

Является ли получение BinaryTreeNode из GraphNode нарушением принципа подстановки Лискова?
Обсуждение возникает здесь: Изменение видимости метода в унаследованном классе вопрос: действительно ли дизайн «BTNode расширяет GraphNode» является нарушением принципа замены Лискова? В качестве «похожего» примера был показан этот случай:...
35 просмотров
schedule 10.06.2022

Нарушает ли метод Array.Add LSP?
Array класс реализует IList интерфейс, который имеет Add член. Array.Add вызов выдает NotSupportedException . Является ли это нарушением принципа замещения Лисков или принципа разделения интерфейса или обоих?
439 просмотров

Замена List‹IFoo› на List‹Foo, который реализует IFoo›
У меня проблемы с заполнением объекта значениями. Одним из свойств является List<IFoo> foos позже, когда я захочу заполнить свою модель данными из моей базы данных, я хочу поставить List<Foo> на это свойство. Я думал, что...
107 просмотров

Как не нарушить принцип подстановки Лисков с классом, реализующим несколько интерфейсов?
Учитывая следующий класс: class Example implements Interface1, Interface2 { ... } Когда я создаю экземпляр класса, используя Interface1 : Interface1 example = new Example(); ...тогда я могу вызывать только методы Interface1 , а...
4746 просмотров
schedule 21.06.2022

Как этот пример нарушает LSP, что затем приводит к нарушению OCP?
Из Agile Principles, Patterns, and Practices in C# Роберта Мартина, Листинг 10-1. Нарушение LSP, вызывающее нарушение OCP struct Point {double x, y;} public enum ShapeType {square, circle}; public class Shape {...
180 просмотров

Переопределение метода и соблюдение принципов SOLID
У меня есть родительский класс и дочерний класс следующим образом: class Request { public function handleException() : array { throw new Exception( 'RequestException' ); } } class SpecialRequest extends Request { public function...
60 просмотров

Как работает принцип подстановки Лискова для таких классов, как Object?
Короче говоря, принцип подстановки Лисков гласит, что экземпляры базового (супер) класса должны быть полностью заменяемы экземплярами его производных (под) классов без введения какого-либо ломающего кода, такого как создание новых ошибок, изменение...
153 просмотров

Каким должен быть результат переопределения Object#equals(Object) при повышении класса экземпляра?
Я особенно заинтересован в соблюдении части симметрии общего контракта, установленного в Object#equals(Object) , где для двух ненулевых объектов x и y результат x.equals(y) и y.equals(x) должен быть одинаковым. Предположим, у вас есть два...
92 просмотров

Принцип подстановки Лисков Инвариантность
Может ли кто-нибудь объяснить мне, почему этот код не работает? Как это связано с правилом LSP? Что означает инвариантность в этом контексте? Пример взят из книги Adaptive code via C#: class Program { static void Main(string[] args) {...
88 просмотров