8. Objektorientierte Programmierung
 
zurück
8.3 Objekte


Eine Variable von einem "tagged"-Verbundtyp wird als Objekt bezeichnet.

Jedes Objekt ist eigenständig, d. h. es hat eigene interne Daten, die es von anderen Objekten derselben Klasse unterscheidet.

Punkt_1 und Punkt_2 sind unterschiedlich:

Punkt_1.x hat den Wert 5
Punkt_1.y hat den Wert 7
Punkt_1.Farbe hat den Wert "undefiniert"

Punkt_2.x hat den Wert 2
Punkt_2.y hat den Wert 4
Punkt_2.Farbe hat den Wert "undefiniert"

Die Objekte "Punkt_1" und "Punkt_2" unterscheiden sich dadurch, daß sie eigene Informationen über die Koordinaten und die Farbe besitzen.

Allen Objekten gemeinsam sind die Datenstruktur und die zugehörigen Operationen. Jedes Objekt besitzt die gleichen Komponentenfunktionen wie alle anderen Objekte derselben Klasse.
Um Seiteneffekte zu vermeiden, darf die Manipulation von lokalen Daten der Klasse ausschließlich über die Komponentenfunktionen möglich sein. Als Programmierer stellt man dieses sicher, indem man diejenigen Daten, die verborgen werden sollen, entweder in der Spezifikation mit Hilfe des Schlüsselwortes "private" als privat kennzeichnet oder sie im Rumpf eines Paketes plaziert.

Beachte:

Eine Klasse wird in Ada 95 nicht durch eine spezielle Klassenanweisung erzeugt, sondern die vorhandenen Sprachmittel von Ada 83 (Verbundtypen) werden mit zusätzlichen Eigenschaften versehen. Eine Verbundtyp-Deklaration wird mit dem Zusatz "tagged" versehen, um diese Anweisung als Klasse (genauer: als Basisklasse) kenntlich zu machen. Die Erweiterbarkeit von Verbundtypen in Ada 95 wird als "Programmierung durch Erweiterung" bezeichnet.
  • Variable als Instanzen einer bestimmten Klasse werden als Objekte bezeichnet.
  • Eine der Klasse zugehörige Operation (Komponentenfunktion) erkennt man daran, daß sie Parameter oder einen Rückgabewert besitzt, deren Datentyp diese Klasse ist. Im Beispiel sind das die Prozeduren "Farbe_aendern", "Erzeuge" und "Zeichnen" jeweils mit dem Parameter "P".
  • Zur Kapselung einer Klasse sollte man zweckmäßigerweise ein Paket verwenden. Der Name des Pakets sollte zum Namen der Klasse passen. Jedoch sollte nicht das Paket selbst als Klasse betrachtet werden, denn ein Paket kann außer der Klasse auch weitere Daten (wie z. B. "Farbliste" aus dem Beispiel) enthalten. Ein Paket ist nach wie vor nur ein Paket zur Kapselung von zusammengehörigen Einheiten.
  • Die internen Daten von Objekten sind lokale Daten, die nur über die Komponentenfunktionen der Klasse manipuliert werden dürfen, aber ansonsten nicht nach außen sichtbar sein sollen. Solche lokalen Daten können über das Paketkonzept von Ada lokal vereinbart werden. Die Klassendaten (der "tagged"-Verbundtyp oder abgeleitete Verbundtypen) müssen (ebenfalls über das Paketkonzept) in der Spezifikation als "privat" vereinbart werden, um die Möglichkeit der externen Manipulation (Zuweisen, Kopieren, Löschen) von Objekten zu verhindern.
  • Klassen können gemeinsame globale Daten aufweisen, die ebenfalls "privat" vereinbart werden müssen, um die Möglichkeit der externen Manipulation (Zuweisen, Kopieren, Löschen) von Objekten zu verhindern. Solche globalen Daten werden in der Paketspezifikation deklariert. Sie sind dann von allen Objekten einer Klasse gemeinsam benutzbar.
Anwendungsbeispiel:

Ein Zähler für die Anzahl von dynamisch angelegten Objekten, der auch als Basis zur Erstellung einer Identifikationsnummer für einzelne Objekte benutzt werden kann.


 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.