Für alle x : U → x : OZum Herausarbeiten gibt es zwei Vorgehensweisen:
Gliederung der Welt nach Aristoteles:
(seelenlose Objekte unterliegen keiner Veränderung)
Sehr schön macht das die Biologie: Sie teilt die Lebewesen in Stamm,Klasse,Ordnung,Familie, Gattung, und Art ein. ([UML99] S 62)Hier kommt es auf die Ersetzbarkeit an (Liskov-Substitution Principle)):
Einen Untertyp kann man da einsetzen, wo sein Obertyp erwartet wird.
Def Vererbung: Vererbung im allgemeinsten Sinne ist ein Mechanismus zur Wiederverwendung von Software.
Bei klassenbasierten Programmiersprachen erbt eine Klasse von einer anderen, was sich dadurch auswirkt, daß die in der Oberklasse definierten Attribute und Methoden von der Unterklasse übernommen werden. Beispiel:
class Person { public: String name,vorname; }; class Mitarbeiter : public Person { public: Betrag gehalt(); erhoehegehalt(); entlassen(); }; class Manager : public Mitarbeiter { }; class Geschaeftspartner : public Person { }; class Kunde : public Geschaeftspartner { }; class Lieferant: public Geschaeftspartner { };
class Kreis { public: Punkt mittelpunkt; double radius; }; class Ellipse: Kreis { public: Punkt brennpunkt1 { return mittelpunkt; } Punkt brennpunkt2 ... };Z.B. in C++ wird dem dadurch Rechnung getragen, daß wenn das Schlüsselwort public bei der Vererbungsspezifikation angegeben wird, gleichzeitig eine Untertypbeziehung deklariert wird.
Dies war die Diskussion 1990. Heute (2013) wird die Vererbung als Wiederverwendung der Implementierung nicht mehr als so wichtig eingestuft. Wichtig ist nach wie vor das Liskov-Substitutionsprinzip: Ein Kreis ist hier ein Spezialfall einer Ellipse (Wenn eine Operation einen Kreis erwartet, darf keine allgemeine Ellipse kommen.)
Ein gutes Design schaut sich also die Hierarchie aus sich der Verwendung an.
Für alle x:G → x:O1 und x:O2Dies wird aber von verschiedenen Programiersprachen unterschiedlich gehandhabt: Beispielsweise ist in JAVA nur die mehrfache Untertypbeziehung erlaubt, nicht aber die mehrfache Vererbung. In C++ dagegen ist beides erlaubt.
Beispielsweise:
class Fahrzeug {}; class Blaulichtrechte {}; class Krankenwagen : public Fahrzeug,public Blaulichtrechte { };Problematisch ist, wenn Klassen auf verschiedenen Vererbungspfaden eine gemeinsame Oberklasse erben. Diese kann einmal oder mehrfach geerbt werden.
Die Unter-begriffe/Typen/Klasse sowie alle Exemplare nennt man Extension.
Datenbanksysteme, Betriebssysteme und Netzwerke behandeln im wesentlichen nur die Extension und kümmern sich nicht um den Inhalt. Daher sind sie auch universell einsetzbar.