Klasse

Eine Klasse ist ein abstrakter Datentyp, d.h. sie besteht aus der Deklaration einer Datenstruktur und einem Satz von Operationen (den Methoden bzw. Diensten). Eine Klasse legt die Schnittstelle und die Operationen einer Menge von Objekten fest. Sie definiert die interne Repräsentation dieser Objekte und spezifiziert die Operationen, die die Objekte ausführen können. So beschreibt eine Klasse eine potentiell unendliche Menge von Objekten. Ein Objekt dieser Menge heisst Instanz der Klasse. Alle Instanzen einer Klasse haben die in der Klasse spezifizierten Operationen gemeinsam. Lediglich die Werte der Datenstruktur können sich unterscheiden.

Von Verkapselung spricht man, wenn die Datenstruktur nur durch die Methoden verändert und sichtbar gemacht werden kann. Die Datenstruktur wird durch Attribute beschrieben. Dabei handelt es sich um Paare aus einem Bezeichner und einem zugeordneten Typ. Man unterscheidet Basisattribute (base attributes), deren Werte in den Instanzen der Klasse gespeichert sind und abgeleiteten Attributen (derived attributes). Die Werte der abgeleiteten Attribute berechnen sich aus den Werten der Basisattribute. Abgeleitete Attribute unterscheiden sich also nicht wesentlich von Diensten (Methoden).

Aufgrund der Verkapselung der Klassen ist die in der Klasse enthaltene Datenstruktur nicht implizit nach aussen sichtbar. Deshalb unterscheidet sich die Innensicht einer Klasse von deren Aussensicht. Die Innensicht einer Klasse besteht aus den bei der Implementierung der Dienste sichtbaren Attributen und Diensten. Das sind alle definierten Attribute und Dienste der Klasse. Die Aussensicht besteht aus den explizit als sichtbar deklarierten Diensten und Attributen.

Wenn mehrere Klassen gleiche Eigenschaften aufweisen, kann über diese gleichen Eigenschaften generalisiert werden, indem eine Superklasse mit diesen Eigenschaften eingeführt wird.

Wird eine Klasse von einer Superklasse abgeleitet und zu der abgeleiteten Klasse weitere Methoden hinzugefügt, spricht man von Spezialisierung.