Als «liskov-substitution» getaggte Fragen

Bei Fragen zum Liskov-Substitutionsprinzip im objektorientierten Design.

10
Handelt es sich um eine Verletzung des Liskov-Substitutionsprinzips?
Angenommen, wir haben eine Liste von Aufgabenentitäten und einen ProjectTaskUntertyp. Aufgaben können jederzeit geschlossen werden, es sei denn ProjectTasks, sie können nicht geschlossen werden, sobald sie den Status Gestartet haben. Die Benutzeroberfläche sollte sicherstellen, dass die Option zum Schließen eines gestarteten ProjectTaskObjekts niemals verfügbar ist. In der Domäne sind jedoch …


3
Was ist der Unterschied zwischen einer Unterklasse und einem Subtyp?
Die bestbewertete Antwort auf diese Frage nach dem Liskov-Substitutionsprinzip erfordert die Unterscheidung zwischen den Begriffen Untertyp und Unterklasse . Es wird auch darauf hingewiesen, dass einige Sprachen die beiden Sprachen miteinander verbinden, andere jedoch nicht. Für die objektorientierten Sprachen, die ich am besten kenne (Python, C ++), sind "Typ" und …

14
Gibt es eine Sprache oder ein Entwurfsmuster, das das * Entfernen * von Objektverhalten oder -eigenschaften in einer Klassenhierarchie ermöglicht?
Ein bekannter Mangel der traditionellen Klassenhierarchien ist, dass sie schlecht sind, wenn es darum geht, die reale Welt zu modellieren. Als Beispiel soll versucht werden, Tierarten mit Klassen darzustellen. Dabei gibt es tatsächlich mehrere Probleme, aber eines, für das ich nie eine Lösung gesehen habe, ist, wenn eine Unterklasse ein …

9
Was kann schief gehen, wenn das Liskov-Substitutionsprinzip verletzt wird?
Ich verfolgte diese hoch gestimmte Frage bezüglich eines möglichen Verstoßes gegen das Liskov-Substitutionsprinzip. Ich weiß, was das Liskov-Substitutionsprinzip ist, aber was mir immer noch nicht klar ist, kann schief gehen, wenn ich als Entwickler beim Schreiben von objektorientiertem Code nicht über das Prinzip nachdenke.

5
Verstoßen Sonderfälle mit Ausweichmanövern gegen das Liskov-Substitutionsprinzip?
Angenommen, ich habe eine Schnittstelle FooInterfacemit der folgenden Signatur: interface FooInterface { public function doSomething(SomethingInterface something); } Und eine konkrete Klasse ConcreteFoo, die diese Schnittstelle implementiert: class ConcreteFoo implements FooInterface { public function doSomething(SomethingInterface something) { } } Ich möchte ConcreteFoo::doSomething()etwas Einzigartiges tun, wenn es einem bestimmten SomethingInterfaceObjekttyp übergeben wird …

3
Wie verstößt die Stärkung von Vorbedingungen und die Schwächung von Nachbedingungen gegen das Liskov-Substitutionsprinzip?
Ich habe gelesen, dass das Substitutionsprinzip von Liskov verletzt wird, wenn: Voraussetzungen sind gestärkt, oder Nachbedingungen werden geschwächt Aber ich verstehe noch nicht ganz, wie diese beiden Punkte das Liskov-Substitutionsprinzip verletzen würden. Kann jemand bitte mit einem Beispiel erklären. Wie kann eine der oben genannten Bedingungen dazu führen, dass ein …


1
Gilt das Liskov-Substitutionsprinzip auch für Klassen, die eine Schnittstelle implementieren?
LSP gibt an, dass Klassen für ihre Basisklassen substituierbar sein sollten, was bedeutet, dass abgeleitete und Basisklassen semantisch äquivalent sein sollten. Aber gilt LSP auch für Klassen, die eine Schnittstelle implementieren? Mit anderen Worten, wenn eine von einer Klasse implementierte Schnittstellenmethode sich semantisch von den Erwartungen des Benutzers unterscheidet, würde …

3
Verstößt das staatliche Muster gegen das Liskov-Substitutionsprinzip?
Dieses Bild stammt aus Anwenden domänengesteuerter Designs und Muster: Mit Beispielen in C # und .NET Dies ist das Klassendiagramm für das Zustandsmuster, in dem a SalesOrderwährend seiner Lebensdauer verschiedene Zustände haben kann. Es sind nur bestimmte Übergänge zwischen den verschiedenen Zuständen zulässig. Jetzt ist die OrderStateKlasse eine abstractKlasse und …

2
Prinzip der realen Welt - Liskov-Substitution
Hintergrund: Ich entwickle ein Messaging-Framework. Dieser Rahmen ermöglicht: Senden von Nachrichten über einen Servicebus Abonnieren von Warteschlangen auf dem Nachrichtenbus Abonnieren von Themen auf einem Nachrichtenbus Wir verwenden derzeit RabbitMQ, aber ich weiß, dass wir in naher Zukunft auf Microsoft Service Bus (on Premise) umsteigen werden. Ich plane, eine Reihe …


1
Wie verifiziere ich das Liskov-Substitutionsprinzip in einer Vererbungshierarchie?
Inspiriert von dieser Antwort: Liskov Substitutionsprinzip erfordert , dass Voraussetzungen können in einem Subtyp nicht gestärkt werden. Nachbedingungen können in einem Subtyp nicht abgeschwächt werden. Invarianten des Supertyps müssen in einem Subtyp erhalten bleiben. Verlaufsbeschränkung (die "Verlaufsregel"). Objekte gelten nur durch ihre Methoden als veränderbar (Kapselung). Da Subtypen Methoden einführen …

2
Stack erweitert LinkedList. Ein Verstoß gegen das Liskov-Substitutionsprinzip?
Es gibt eine Klasse LinkedList mit Funktionen wie add_first (), add_last (), add_after (), remove_first (), remove_last () und remove (). Jetzt gibt es einen Klassenstapel, der Funktionen wie push (), pop (), peek () oder top () bereitstellt. Um diese Methoden zu implementieren, werden die LinkedList-Klassenmethoden erweitert. Handelt es …


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.