15.2 Kapselung
 
  Information Hiding verlangt, dass eine Klasse selbst entscheidet,
  • wer auf seine Attribute lesend und schreibend zugreifen darf und
  • auf welche Weise lesend bzw. schreibend zugegriffen werden darf.

Man spricht auch davon, dass eine Klasse seine Attribute kapselt. Die Zugriffsrechte auf die Methoden lassen sich, wie wir noch sehen werden, ebenfalls einschränken.
 

Zugriff


public-private

Daten, also die Attribute sind geschützt. Nur mit genau spezifizierten Methoden können andere Objekte darauf zugreifen. Man schafft dies dadurch, dass man die Attribute vor direktem lesendem und schreibenden Zugriff von Außen abschottet. Man deklariert sie  private. Falls man einen lesenden Zugriff auf ein Attribut 'a' vom Typ 'A' erlauben will, geschieht üblicherweise mit der Methode geta() die ein Ergebnis vom Typ A zurückgibt. Damit von Außen auf diese Methode zugegriffen werden kann, schreiben wir vor ihrem Namen den Modifizierer public. Entsprechendes gilt für den schreibenden Zugriff, der über eine Methode seta() organisiert wird.

private A a;
...
public A geta() {
  return a;
}

public void seta(A a)
  a = a;
}

Zunächst gibt es zwischen dem globaleren Attribut a unserer Objektes und dem in der Parameterliste definierten a keine Konflikte. Das in der Parameterliste übergebene a hat seinen Gültigkeitsbereich innerhalb der Methode, überdeckt hier also das globalere a des Objektes. Ein Problem haben wir nun, wenn wir, wie in unserer seta(..)-Methode beabsichtigen, den übergebenen Wert in das Attribut des Objekts speichern zu wollen, also in der Methode beide as benutzen wollen. In

a = a

sind also zwei verschiedene as gemeint. Um diesen Konflikt zu lösen, verweisen wir auf das Objektattribut mit this. Die gelb unterlegte Zeile muss also zu

this.a = a;

korrigiert werden.

 

zu 15.3 Die Klasse Punkt Version 2
zur Startseite www.pohlig.de (C) MPohlig 2005