Björn Klippstein

Objekt

Klippstein IT Service

Aus 4webmaster.de

Wechseln zu: Navigation, Suche

In der objektorientierten Programmierung werden Dinge, Begriffe, Eigenschaften, Verhaltensweisen, etc. als Objekte modelliert.

Klassenzugehörigkeit Jedes Objekt ist eine Instanz einer Klasse. Klassen sind »Schablonen« für Objekte mit gleicher Struktur und gleichem Verhalten.
Beispiel: Das Objekt, mit dem Sophie Meinerhoff modelliert wird, ist eine Instanz der Klasse Person.
Struktur Ein Objekt besitzt Attribute, das sind seine mit Daten beschreibbaren (abstrakten) Merkmale.
Zustand Die (abstrakten) Attribute eines Objektes haben konkrete Werte. Die Menge der Attributwerte definieren den Zustand / State des Objektes. Die Daten eines Objektes können oft nur mit den Methoden des Objektes selbst gelesen und geschrieben werden. Nach außen hin sind die Attributwerte dann unsichtbar (Geheimnisprinzip / Information Hiding).
Verhalten Objekte stellen Methoden zur Verfügung. Die Menge der Methoden definiert das Verhalten eines Objektes. Da gleichartige Objekte die gleichen Methoden zur Verfügung stellen, werden diese in der Klasse des Objektes formuliert. Methoden werden von anderen Objekten in Anspruch genommen. Dafür wird dem Objekt eine Botschaft gesendet mit der Aufforderung, eine bestimmte Operation auszuführen.
Identität Jedes Objekt lässt sich eindeutig identifizieren, meist über eine Objekt-ID. Die Identität unterscheidet ein Objekt von anderen Objekten, auch wenn diese anderen Objekte die gleichen Attributwerte und das gleiche Verhalten haben.

In Datenbanksystemen werden Objekte meist als Datensätze einer Tabelle repräsentiert (die Ebene der Tabelle entspricht dann der Klasse).



Darstellung von Objekten in UML

Die UML-Darstellung eines Objektes (z.B. in einem Objektdiagramm) besteht aus zwei Teilen:

Name In UML werden Objektnamen nichtfett, unterstrichen und zentriert dargestellt.
Struktur           Liste relevanter Attribute.

 
Das Verhalten eines Objektes wird in der Objektdarstellung nicht erwähnt (im Gegensatz zur Darstellung von Klassen).




Beispiele: (Leider kann das hier verwendeten Tool (Graphiz) die Objektnamen nicht unterstreichen, was die korrekte Darstellung wäre):

UML-Darstellung für Objekte
UML-Darstellung für Objekte




Regeln für die Notation von Objekt-Bezeichnern in UML:

Beispiel Erklärung
einObjekt Der Bezeichner eines benannten Objektes beginnt mit einem Kleinbuchstaben und wird unterstrichen dargestellt.
person1:Person Zusätzlich kann die Klasse angegeben werden.
:Person Wenn die Identität des Objektes egal ist, wird ein anonymes Objekt durch die alleinige Angabe der Klasse dargestellt.

Folgende Regeln gelten für das visuelle Mittel der Unterstreichung:

  • Bezeichner von Klassen / Objekten unterscheiden sich durch Unterstreichung
    (mit Unterstreichung = Objekt)
  • Attribute von Klassen / Objekten unterscheiden sich durch Unterstreichung
    (diesmal ist es genau umgekehrt: mit Unterstreichung = Klasse)
  • Methoden von Klassen / Objekten unterscheiden sich durch Unterstreichung
    (analog zu den Attributen: mit Unterstreichung = Klasse)



Erzeugung neuer Objekte

Die Erzeugung neuer Objekte / Exemplare einer Klasse bezeichnet man als Instanziierung.
Zuständig dafür sind spezielle Methoden: die Konstruktoren.

Das erzeugte Objekt ist dann ein Exemplar / eine Instanz seine Klasse. Objekt und Klasse sind durch eine spezielle Relation miteinander verbunden, die Ist-Exemplar-von - Relation. Dabei kennt das Objekt seine Klasse, die Klasse kennt aber seine Objekte nicht.

Ist das zu erzeugende Objekt in eine Klassenhierarchie eingebettet, so wird erst der Konstruktor der Superklasse aufgerufen und danach der Konstruktor der Subklasse. Bei der Zerstörung eines Objektes ist es genau umgekehrt: Zunächst wird der Destruktor der Subklasse aufgerufen, dann der der Superklasse.

Konstruktoren in Java

In Java werden Objekte durch Konstruktoren erzeugt, das sind spezielle Methoden.

  • Konstruktoren heißen genauso wie die Klasse. (Daher sind sie die einzigen Methoden mit großem Anfangsbuchstaben.)
  • Konstruktoren geben immer ein Objekt ihrer Klasse zurück. Daher wird der Ergebnisparameter dieser Methode nicht explizit angegeben.

Die Sichtbarkeit eines Konstruktors ist standardmäßig package-private, wie bei allen anderen Methoden auch. Damit der Konstruktor von anderen Klassen auch außerhalb des aktuellen Paketes aufgerufen werden kann, muss er als public ausgewiesen werden.

Fehlt der Konstruktor, so wird standardmäßig ein leerer Konstruktor angelegt:

public Person {
}

Ein solcher leerer Konstruktor erzeugt ein leeres Objekt mit den Attributen der Klasse. In Java werden alle Attribute (Fields) mit dem Wert null oder mit 0 initialisiert, wenn kein anderer Anfangswert vorgegeben ist.

Aufgerufen wird der Konstruktor mit Hilfe des Operators new:

Person julia;         // Deklaration der Referenzvariablen
julia = new Person(); // Objekterzeugung

Die Variable julia enthält danach nicht das Objekt selbst, sondern nur einen Verweis auf den Speicherort des erzeugten Objektes.

In UML wird ein Konstruktor als Klassenmethode gekennzeichnet.