Принцип замещения Лискова (LSP) - это принцип объектно-ориентированного программирования, один из принципов SOLID.
2 ответа

Принцип подстановки Лискова и множественные иерархии

Этот вопрос является продолжением этого. Я пытаюсь определить класс heirarchies с участием нескольких пар основанных на базе. В качестве наглядного примера предположим, что у меня есть класс Animal и класс Food, Animal имеет чисто виртуальную функци…
30 мар '16 в 17:42
4 ответа

Наследование и LSP

Заранее извиняюсь за многословный вопрос. Обратная связь особенно ценится здесь.,, В моей работе мы многое делаем с диапазонами дат (периоды дат, если хотите). Нам нужно проводить всевозможные измерения, сравнивать перекрытия между двумя периодами д…
18 июн '11 в 22:06
3 ответа

Как может сработать противоречивость аргументов в принципе Лискова?

Основным принципом подстановки Лискова является то, что суперкласс может быть заменен на подкласс, который следует тому же контракту (поведению). Или, как сказал Мартин Фаулер: "Функции, использующие указатели или ссылки на базовые классы, должны им…
14 апр '18 в 17:52
2 ответа

Zend_Form и принцип подстановки Лискова

Очень распространенный шаблон, который я вижу (я выбираю в Zend Framework только потому, что я имел дело с ним в момент этого вопроса), выглядит примерно так: class My_Form extends Zend_Form { public function init() { $this->addElement(); } } Zen…
21 май '09 в 20:09
1 ответ

Наследование и принцип подстановки Лискова

Я изо всех сил стараюсь придерживаться принципа подстановки Лискова при создании структуры моего класса. Я хочу, чтобы коллекция элементов календаря хранилась в дневном классе. Должно быть несколько разных типов CalendarItems, например: AppointmentI…
21 апр '14 в 14:47
3 ответа

Как я могу избежать взлома LSP в этом примере? C#

У меня есть базовый класс под названием сообщение, как это: public abstract class Message { protected int m_id; protected bool m_localized; protected string m_metaData; public int GetID() { return m_id; } public bool GetLocalized() { return m_locali…
05 фев '17 в 18:24
0 ответов

Почему допускается только контрастность входных параметров метода в соответствии с принципом подстановки Лискова?

Я пытался найти хорошие примеры того, почему контрастная дисперсия является единственной допустимой дисперсией для входных параметров метода в соответствии с принципом подстановки Лискова, но до сих пор ни один из примеров не дал полного ответа, сом…
12 окт '15 в 16:58
2 ответа

Что может произойти в программе, где подкласс усиливает предпосылки переопределенного метода?

Я ломаю голову над этим вопросом. Я был бы рад узнать, какой ответ правильный и почему? Принцип подстановки Лискова гласит, что в переопределенных методах допускается ослабление предпосылок. Что может произойти в программе, где подкласс усиливает пр…
04 июн '18 в 10:42
1 ответ

Ограничения параметров типа для принципа Лискова в C#.NET

Я пытаюсь создать универсальный интерфейс, который наследует интерфейс System.ICloneable, но где возвращаемый тип метода Clone()- это T. Конечно, T-тип нуждается в ограничениях, чтобы быть уверенным, что это наследование класса System.Object, но сле…
15 июл '09 в 12:08
1 ответ

Имеет ли смысл LSP для языка динамической типизации, такого как Ruby?

Рассмотрим классический пример на Java // Violation of Likov's Substitution Principle class Rectangle { protected int m_width; protected int m_height; public void setWidth(int width){ m_width = width; } public void setHeight(int height){ m_height = …
12 июн '13 в 23:33
3 ответа

Что я неправильно понимаю в принципе замены Лискова

Я думал, что понимаю LSP, но, похоже, я совершенно не прав. У меня есть следующие классы: class PrimitiveValue { } class StringValue extends PrimitiveValue { } class A { public function foo(StringValue $value) { } } class B extends A { public functi…
06 фев '15 в 09:11
1 ответ

Принцип подстановки Лискова или нарушение инкапсуляции

В этом посте я хочу показать вам небольшой пример кода с несколькими классами JS и спросить вас, подходит ли этот код из-за LSP или он нарушает принципы инкапсуляции. _framesMonitor переменная в этом примере является экземпляром какой-то сторонней б…
14 ноя '17 в 13:40
1 ответ

Принудительная ошибка синтаксиса в автоматическом методе ToString()

По умолчанию в C# все классы наследуют ToString() метод. У меня проблема в том, что на работе мы используем automapper сопоставить некоторые доменные объекты с интерфейсом. Я продолжаю видеть код, очень похожий на следующий sudo. string:mapToclass.n…
05 сен '13 в 16:28
1 ответ

Можно ли предусловия выразить (для проверки) как простые условия?

Я понимаю, что предварительным условием в контексте принципа Desing by contract/Liskov является то, что должно быть верно до вызова кода, например, за это отвечает вызывающая сторона. Кроме того, автор языка Eiffel заявил, что большинство людей поме…
05 сен '18 в 15:06
2 ответа

Понимание принципа подстановки Лискова

Мой пример программы, как показано ниже; public class Animal { public virtual string MakeSound() { return "General Sound"; } } public class Dog : Animal { public override string MakeSound() { return "Bow..Bow.."; } } } static void Main(string[] args…
26 апр '16 в 16:53
1 ответ

Что такое отказано по завещанию?

Может кто-нибудь объяснить, что означает " Отказался от завещания"? Я попытался прочитать некоторые статьи и сказал, что это своего рода запах кода или в вики он говорит, что это класс, который переопределяет метод базового класса таким образом, что…
02 фев '15 в 04:30
1 ответ

Добавить поддержку языка vue js в редактор monaco

Я пытался добавить поддержку языка vuejs в редактор monaco, но все мои попытки пока не увенчались успехом. Я пробовал плагин monaco-vue для редактора, но, похоже, он тоже не работает. Конечный результат, которого я хотел бы достичь, состоит в том, ч…
2 ответа

Нарушение принципа подстановки Лискова в SharedFolder

Текущий дизайн SharedFolder это подкласс Folder, SharedFile это подкласс File с URL удаленного ресурса. Folder принимает File в add метод. SharedFolder принимает только SharedFile но не общий File File может быть перемещен в другой Folder с add, Пол…
03 авг '16 в 07:35
0 ответов

Лисков Принципы замещения Заявления

Какие утверждения точны относительно использования принципа подстановки Лискова в C#: Виртуальные абстрактные методы могут быть использованы аналогичным образом Интерфейсы могут использоваться для описания классов и предоставления "контрактов" Метод…
16 фев '19 в 05:16
0 ответов

Является ли принцип замещения Лискова примером ковариации или есть что-то большее?

Является ли принцип замещения Лискова примером ко-дисперсии или есть что-то большее? BaseClass objectOfBase = new DeriveredClass (); Сотрудник e = new Perm(); Сотрудник e = новый договорный (); e.GetSalary () Это то, что я нашел на одном из популярн…
25 фев '19 в 18:59