[an error occurred while processing this directive]

Kurze Erklärung des Liskov-Substitutionsprinzips (LSP). [] (LSP, Liskov-Substitutionsprinzip, Liskov-Substitutions-Prinzip, Liskow-Substitutionsprinzip, Liskow-Substitutions-Prinzip), Lektion, Seite 721587
https://www.purl.org/stefan_ram/pub/lsp-liskov-substitutionsprinzip (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Das Liskov-Substitutions-Prinzip

Um den Begriff „Untertyp“ festzulegen, wird oft das Liskov-Substitutions-Prinzip  (LSP ) verwendet.

Das Liskov-Substitutions-Prinzip

If for each object o1 of type S  there is an object o2  of type T such that for all programs P defined in terms of T, the behavior of P  is unchanged when o1 is substituted for o2 then S is a subtype of T .”

Barbara Liskov, Data Abstraction and Hierarchy,” SIGPLAN Notices, 23,5 (May, 1988).

Die Formulierung von Liskov  lautet auf deutsch also:

„Wenn es für jedes Objekt u  vom Typ U  ein Objekt o  vom Typ O  gibt, so daß für alle Programme p, die in Operationen des O  definiert wurden, das Verhalten von p  unverändert bleibt, wenn o  durch u  ersetzt wird, dann ist der Typ U  ein Untertyp  des Typs O.“

Mit Quantoren läßt sich dies auch folgendermaßen schreiben

∀(u∈U) ∃(o∈O) ∀(p∈P) p(o)=p(u)

Wenn man definiert o∼u :⇔ ∀(p∈P) p(o)=p(u), kann man dies folgendermaßen schreiben:

∀(u∈U) ∃(o∈O) o∼u

Wenn „o∼u“ so definiert ist, dann sagen wir „o entspricht u“ und meinen damit, daß o von u ununterscheidbar ist (solange nur Programme verwendet werden, die nur den Typ o kennen). Nun läßt sich LSP einfacher so formulieren: Zu jedem Unterklassenobjekt gibt es ein entsprechendes Oberklassenobjekt.

LSP
.----------------------. 
| | 
| Alle in Operationen | 
| des Obertyps | 
| definierten | 
| Programme | 
| | 
'----------------------' 


| definiert in  
| Eintraegen von 
| V 

.----------------------. .----------------------. 
| | | | 
| Obertyp |<- - - - -| o : Obertyp | 
| | | ----------- | 
'----------------------' '----------------------' 
^ | 
/_\ | 
| V existiert für jedes | kann ersetzt werden durch V 
| | 
| | 
.----------------------. .----------------------. 
| | | | 
| Untertyp |<- - - - -| u : Untertyp | 
| | | ------------ | 
'----------------------' '----------------------'

Das LSP  wird als genauere Formulierung der Beziehung „ist-ein“ herangezogen, die zwischen Objekten einer Unterklasse und Objekten einer Oberklasse bestehen soll.

Zitat mit Kontext und weiteren Quellenangaben

Ein Werk von Barbara Liskov von 1987, das vermutlich die Quelle des als „Liskov-Substitutions-Prinzip“ bekannten Prinzip ist, ist:
http://citeseer.ist.psu.edu/557944.html
Ein späteres Werk von Frau Liskov zum selben Thema ist
http://www.cs.cmu.edu/~wing/publications/LiskovWing94.pdf
http://citeseer.ist.psu.edu/liskov94behavioral.html

Nach dem erstgenannte Werk könnte die Formulierung auf Leavens  zurückgehen. Die Quelle [6.] war zum damaligen Zeitpunkt erst geplant („forthcoming “). Es handelt sich um das MIT/LCS/TR-439:

Gary T. Leavens, Verifying Object-Oriented Programs that use Subtypes. Massachusetts Institute of Technology, Laboratory for Computer Science, Technical Report TR-439, February 1989.

Dieses Werk wird auch in dem Text von 1994 und in der folgenden Seite erwähnt.

http://www.eecs.ucf.edu/~leavens/main.html

Demnach soll es inhaltlich ähnlich zu den folgenden beiden Quellen sein

ftp://ftp.cs.iastate.edu/pub/techreports/TR90-09/TR.ps.gz
ftp://ftp.cs.iastate.edu/pub/techreports/TR92-28/TR.ps.Z

Mister Wong   |   Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Von der Stefan-Ram-Startseite ausgehend finden sich oft noch mehr Informationen zu Themen, die auf einer Seite angesprochen wurden. (Eine Verbindung zur Stefan-Ram-Startseite befindet sich ganz oben auf dieser Seite.)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. slrprd, PbclevtugFgrsnaEnz