8. Objektorientierte Programmierung | ||||||
|
||||||
8.2 Klassen
Der Begriff "Klasse" existierte schon in Ada 83 und bezog sich dort auf die Deklaration von Unterbereichstypen. Aufgrund dieser Eigenschaft wurde Ada 83 als objektbasiert, jedoch nicht als objektorientiert bezeichnet. Klassendefinition in Ada 83 Eine Klasse ist eine Menge von Datentypen, zwischen denen eine Ableitungsbeziehung existiert. Beispiel:
Die Eigenschaften von "Mein_Integer" werden an "Puffergroesse" und "Puffer_Anfangsbereich" vererbt. Aufgrund dieser Eigenschaft wurde Ada 83 als "objektbasiert", jedoch nicht als "objektorientiert" bezeichnet. Unter "objektbasiert" versteht man die Möglichkeit, abstrakte Objekte bzw. Datentypen zu modellieren. Ada 95 führt kein neues Sprachmittel mit der Bezeichnung "Klasse" ein, sondern unterstützt die objektorientierte Programmierung, indem sie der existierenden Ableitungsbeziehung weitere Eigenschaften zuordnet. "Klasse" in Ada 95: Ein Verbundtyp wird als "tagged" gekennzeichnet und man erhält eine "Basisklasse", auch als "tagged"-Verbundtyp oder erweiterbarer Typ bezeichnet. Dieser erweiterbare Typ dient als Basis für die Definition von Klassen. Die Eigenschaften dieses erweiterbaren Typs können an hiervon abgeleitete Klassen weitergegeben werden. (record_type_definition <BNF>) Beispiel einer Basisklasse:
Eine Klasse besteht jeweils aus einem "tagged"-Verbundtyp und zugehörigen Operationen auf diesen Datentyp. Zur Kapselung von Datentypen und zugehörigen Komponenten-funktionen wird das vorhandene Paketkonzept genutzt.. Das folgende Beispiel zeigt eine vollständige Klasse im Paket (Spezifikation und Rumpf). Das im folgenden beschriebene Beispiel deklariert eine Klasse mit dem Namen "Punkt" und kapselt sie in einem gleichnamigen Paket. Das Paketkonzept wird genutzt, um die "tagged"-Verbundtypen zusammen mit den Komponentenfunktionen in einer Programmeinheit zu kapseln. Die Spezifikation des Paketes benennt diejenigen Unterprogramme und Datentypen der Klasse, die dem Benutzer zugänglich sein sollen.
Der Rumpf des Paketes enthält die Implementierung und alle Werte, die nur lokal von Bedeutung sind oder vor dem Benutzer verborgen werden sollen.
Die Prozedur Punkttst zeigt eine beispielhafte Anwendung, die mit zwei Punkt-Objekten arbeitet.
|
||||||
|