Liskovsches Substitutionsprinzip: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Kowa (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Kowa (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
=Definition (von W. Kowarschick)<ref>[[Kowarschick, W.: Multimedia-Programmierung]]</ref>=
=Definition (von Liskov, 1988)<ref>Barbara Liskov: “Keynote address - data abstraction and hierarchy”, [http://portal.acm.org/citation.cfm?id=62141 Proceeding OOPSLA '87 and ACM SIGPLAN Notices, Volume 23 Issue 5, May 1988]</ref>=
Eine [[Methode]] sollte nicht so überschrieben werden, dass sich ein Objekt einer [[Abgeleitete Klasse|abgeleiteten Klasse]] überraschend anders verhält, als man es aufgrund der Definition der Basisklasse erwarten würde. Mit anderen Worten: Methoden, die in abgeleiteten Klassen neu definiert werden, müssen alle [[Integritätsbedingung]]en (d.h. die Spezifikation) der Basisklasse beachten.
What is wanted here is something like the following substitution property [...]: 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.
 
Übersetzung (von W. Kowarschick):<br/>
Was hier benötigt wird, ist etwas wie die folgende Ersetzungseigenschaft: Wenn es für jedes Objekt o1 vom Typ S ein Objekt o2 vom Typ T gibt, so dass für alle Programme, die auf Termen der Art T basieren, sich das Verhalten von P nicht ändert, wenn o2 durch o1 ersetzt wird, dann ist S ein Subtyp von T.  


=Originaldefinition (von Liskov und Wing)<ref>Barbara H. Liskov, Jeannette M. Wing: ''A Behavioral Notion of Subtyping'', [http://portal.acm.org/citation.cfm?id=197383 ACM Transactions on Programming Languages and Systems (TOPLAS), Vol. 16, No. 6, November 1994, Pages 1811-1841]</ref>=
=Definition (von Liskov und Wing, 1994)<ref>Barbara H. Liskov, Jeannette M. Wing: “A Behavioral Notion of Subtyping”, [http://portal.acm.org/citation.cfm?id=197383 ACM Transactions on Programming Languages and Systems (TOPLAS), Vol. 16, No. 6, November 1994, Pages 1811-1841]</ref>=
Subtype Requirement: Let Φ(x) be a property provable about objects x
Subtype Requirement: Let Φ(x) be a property provable about objects x
of type T. Then Φ(y) should be true for objects y of type S where S is
of type T. Then Φ(y) should be true for objects y of type S where S is
Zeile 10: Zeile 15:
Subtyp-Bedingung: Es sei Φ(x) eine Eigenschaft, die für Objekte x vom Typ T beweisbar ist. Dann soll Φ(x) [ebenfalls] für Objekte y von Type S gelten,
Subtyp-Bedingung: Es sei Φ(x) eine Eigenschaft, die für Objekte x vom Typ T beweisbar ist. Dann soll Φ(x) [ebenfalls] für Objekte y von Type S gelten,
wobei S ein Subtyp von T ist.
wobei S ein Subtyp von T ist.
=Definition (von W. Kowarschick)<ref>[[Kowarschick, W.: Multimedia-Programmierung]]</ref>=
Eine [[Methode]] sollte nicht so überschrieben werden, dass sich ein Objekt einer [[Abgeleitete Klasse|abgeleiteten Klasse]] überraschend anders verhält, als man es aufgrund der Definition der Basisklasse erwarten würde. Mit anderen Worten: Methoden, die in abgeleiteten Klassen neu definiert werden, müssen alle [[Integritätsbedingung]]en (d.h. die Spezifikation) der Basisklasse beachten.


=Quellen=
=Quellen=

Version vom 23. Februar 2011, 16:11 Uhr

Definition (von Liskov, 1988)[1]

What is wanted here is something like the following substitution property [...]: 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.

Übersetzung (von W. Kowarschick):
Was hier benötigt wird, ist etwas wie die folgende Ersetzungseigenschaft: Wenn es für jedes Objekt o1 vom Typ S ein Objekt o2 vom Typ T gibt, so dass für alle Programme, die auf Termen der Art T basieren, sich das Verhalten von P nicht ändert, wenn o2 durch o1 ersetzt wird, dann ist S ein Subtyp von T.

Definition (von Liskov und Wing, 1994)[2]

Subtype Requirement: Let Φ(x) be a property provable about objects x of type T. Then Φ(y) should be true for objects y of type S where S is a subtype of T.

Übersetzung (von W. Kowarschick):
Subtyp-Bedingung: Es sei Φ(x) eine Eigenschaft, die für Objekte x vom Typ T beweisbar ist. Dann soll Φ(x) [ebenfalls] für Objekte y von Type S gelten, wobei S ein Subtyp von T ist.

Definition (von W. Kowarschick)[3]

Eine Methode sollte nicht so überschrieben werden, dass sich ein Objekt einer abgeleiteten Klasse überraschend anders verhält, als man es aufgrund der Definition der Basisklasse erwarten würde. Mit anderen Worten: Methoden, die in abgeleiteten Klassen neu definiert werden, müssen alle Integritätsbedingungen (d.h. die Spezifikation) der Basisklasse beachten.

Quellen

  1. Barbara Liskov: “Keynote address - data abstraction and hierarchy”, Proceeding OOPSLA '87 and ACM SIGPLAN Notices, Volume 23 Issue 5, May 1988
  2. Barbara H. Liskov, Jeannette M. Wing: “A Behavioral Notion of Subtyping”, ACM Transactions on Programming Languages and Systems (TOPLAS), Vol. 16, No. 6, November 1994, Pages 1811-1841
  3. Kowarschick, W.: Multimedia-Programmierung

Siehe auch


Dieser Artikel ist GlossarWiki-konform.