Philosophische Grundlagen der objektorientierten Programmierung
Für alle x : U -> x : OZum Herausarbeiten gibt es zwei Vorgehensweisen:
Gliederung der Welt nach Aristoteles:
Objekt
|
----------------------------
| |
seelenlose lebendiges
(keine Veränderung) |
----------------------
| |
| beseelte Wesen
| |
| ----------------
| | |
| | Menschen
| Tiere
Pflanzen
Sehr schön mach das die Biologie: Sie teilt die Lebewesen in Stamm,Klasse,Ordnung,Familie, Gattung, und Art ein. ([UML99] S 62)
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.
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.