Описание тега liskov-substitution-principle
По вопросам о принципе подстановки Лискова (LSP) в объектно-ориентированном дизайне, разработанном Барбарой Лисков и собранном Робертом К. Мартином как один из принципов SOLID.
2
ответа
Метод toString объекта и принцип подстановки Лискова
Каждый класс, прямо или косвенно, наследует от Object учебный класс. Object Класс, среди прочих, имеет важный метод, чаще всего переопределяемый: toString, Вопрос в том, не приведет ли переопределение этого метода к нарушению принципа подстановки Ли…
18 ноя '18 в 13:34
3
ответа
Разница между принципом замещения Лискова и принципом сегрегации интерфейса
Есть ли принципиальное различие между принципом замены Лискова (LSP) и принципом разделения интерфейса (ISP)? В конечном счете, оба ручаются за разработку интерфейса с общими функциями и вводят новый интерфейс, когда у вас есть специальное назначени…
01 фев '19 в 13:39
1
ответ
Объявление Specific::method(): должно быть совместимо с General::method(). PHP не прав насчет LSP?
Я полагаю, что "... должно быть совместимо с..." для обеспечения соблюдения принципа замены Лискова. Но я не уверен, что это то, что говорит LSP? У меня есть такой код: class General { public static function create(): General { return new static; } …
16 апр '18 в 14:33
36
ответов
Что является примером принципа подстановки Лискова?
Я слышал, что принцип замещения Лискова (LSP) является фундаментальным принципом объектно-ориентированного проектирования. Что это такое и каковы некоторые примеры его использования?
11 сен '08 в 15:17
1
ответ
Почему нарушения LSP в PHP иногда фатальные, а иногда и предупреждения?
Это нарушение LSP вызывает фатальную ошибку: abstract class AbstractService { } abstract class AbstractFactory { abstract function make(AbstractService $s); } class ConcreteService extends AbstractService { } class ConcreteFactory extends AbstractFa…
17 июн '16 в 19:56
8
ответов
Почему массив реализует IList?
Смотрите определение класса System.Array public abstract class Array : IList, ... Теоретически, я должен быть в состоянии написать этот бит и быть счастливым int[] list = new int[] {}; IList iList = (IList)list; Я также должен иметь возможность вызы…
11 май '11 в 18:15
1
ответ
В PHP указывает ли тип аргумента в методе подкласса, где родительский метод принимает любой разрыв типа LSP?
Если у моего интерфейса есть метод: doSomething($param); И мой класс, реализующий этот интерфейс, указывает тип аргумента следующим образом: doSomething(int $param) {} Это нарушает LSP?
07 июл '20 в 10:15
1
ответ
Расширение очереди классов в стек классов нарушает принцип Лискова?
Если у меня есть класс Queue class Queue { pop () { return 'Last value of Array' } } ... и класс Stack class Stack extends Queue { @Override pop () { return 'First value of Array' } } Это нарушение принципа замены Лискова? Зачем?
14 фев '20 в 19:46
1
ответ
Чем принцип подстановки Лискова отличается от нормального наследования?
Пытаюсь понять принцип подстановки Лискова. но я не могу определить, чем принцип подстановки Лисков отличается от нормального наследования. Ниже приведен код о нормальном наследовании. Что мне делать с приведенным ниже кодом, чтобы сказать, что мой …
17 ноя '19 в 08:11
2
ответа
Сохранение экземпляра дочернего класса в переменной родительского типа и использование дочерних функций через родительскую переменную?
У меня есть два класса: Bird и Eagle. Орел унаследован от птицы. Теперь я могу использовать класс Bird для хранения экземпляра типа орла. Однако, когда я пытаюсь вызвать функцию орла, используя переменнуюa Я получаю сообщение об ошибке ошибка: "клас…
11 сен '19 в 05:47
2
ответа
Обобщение UML без полиморфизма
Возможно ли иметь отношение обобщения между двумя классами, в котором подкласс добавляет новые операции, не относящиеся к суперклассу (не переопределяя, не перегружая)? Это не нарушение LSP? Мне не нужен полиморфизм, просто повторное использование к…
18 сен '19 в 21:17
1
ответ
Принцип подстановки Лискова VS Принцип разделения интерфейса
У меня проблемы с пониманием этих двух принципов. Это немного давно читаемый вопрос, так что наберитесь терпения. Предположим, что у нас есть класс abstract class Shape { abstract void onDraw(); } и интерфейс interface SideCountable { int getSidesCo…
17 дек '19 в 13:26
0
ответов
, Как IntelliJ может поддерживать некоторые функции, которые компилятор TypeScript не поддерживает?
Подобно literal typeРеализация рефакторинга и goto возвращает разные результаты между Vscode и IntelliJ. Использует ли IntelliJ LSP для связи с tsc или просто реализует другой tsc?
02 окт '19 в 08:09
2
ответа
Как смоделировать более ограниченную версию класса с общим кодом?
Мне нужно создать новый класс. Некоторые из его функций уже находятся в другом классе, и с точки зрения предметной области имеет смысл унаследовать от него. Проблема в том, что есть метод, который должен быть более ограничен по типу параметра, поско…
19 сен '19 в 15:01
1
ответ
Нарушает ли этот пример машинописного текста принцип подстановки Лискова?
У меня такой код: type T = { foo: string } var t: T = { foo: 'foo' } interface S { foo: string } var s: S = t Итак, мы знаем, что T < S. Как насчет этого? t = s Итак S < T тоже верно. Мы можем подразумевать, что S == T. Теперь представим U: ty…
05 окт '19 в 22:34
1
ответ
код нарушает принцип замены Лискова?
Мне сложно понять принцип замещения Лискова, и мне было интересно, нарушает ли следующий код принцип замещения Лискова? public class Task { String status = "Ready"; // One of "Ready", "Started", and "Closed" public void setStatus(String newStatus) {…
14 дек '19 в 05:42
1
ответ
Является ли это допустимым примером инвариантности классов с использованием утверждений php 7?
Я пытаюсь лучше понять инвариантность классов, используемую принципом Лискова. Я знаю, что некоторые языки, такие как D, имеют встроенную поддержку инварианта, но, используя утверждения в PHP, я пробовал комбинировать магические методы и утверждать:…
13 янв '20 в 04:09
0
ответов
Как мне обобщить DI в asp.net core 3.0
У меня есть подключаемая служба, которая реализует: ILegacySqlLoginService<T> where T : LegacySqlUserBaseClass Моя реализация LegacySqlLoginService<SqlUser> и он реализует интерфейс и SqlUser расширяет абстрактный базовый класс. Однако, …
01 мар '20 в 00:54
0
ответов
AbstractFactory и принцип подстановки Лискова
Я работал над дизайном, который должен описывать поток данных. Структура потока всегда одна и та же, но каждый шаг в потоке имеет уникальную реализацию для каждого "типа". Как только мы выберем определенный "тип", он будет таким же для остальной час…
14 июн '20 в 17:08
0
ответов
Расширение VSCode : Переименование символов в CSS
Я использую renameProvider: true, чтобы открыть символы переименования, но когда я изменяю свойства с помощью '-' в файле CSS, только половина атрибутов может быть выбрана в поле переименования.
16 июн '20 в 09:42