private und public

Zuerst sollen die beiden neuen Schlüsselwörter private und public erläutert werden. Im vorherigen Kapitel wurde das Konzept der Kapselung besprochen. Daraus resultierte, daß Objekte ein Innen und ein Außen in dem Sinne haben, daß sie auf einen Teil ihrer selbst nur selber zugreifen können, während andere Bereiche von allen Programmteilen zugreifbar sind. Damit ist eine Einteilung möglich, zum einen in von fremden Zugriff geschützte Bereiche und zum anderen in einen Teil, der für die Kommunikation mit anderen Programmteilen nötig ist.

Diese Differenzierung erfolgt in C++ über die beiden Schlüsselwörter private und public. Der Teil einer Klasse, der hinter private: steht, ist in den Instanzen der Klasse (d.h. den Daten, die diese Klasse als Typ haben) für andere Programmteile nicht zugreifbar, ein Zugriff auf die dort deklarierten Elemente und Methoden ist nicht zulässig. So würde folgendes Codefragment einen Compilerfehler erzeugen:

  datum heute;
  heute.tag=5; // Fehler!!

Im Gegensatz dazu sind die Teile der Klasse, die hinter public: stehen, in den jeweiligen Instanzen öffentlich zugänglich, d.h. für andere Programmteile sichtbar und nutzbar. So könnte man den Tag von heute dadurch verstellen, daß man heute.setze(Tag,Monat,Jahr) aufruft. Das dann immer das ganze Datum verstellt werden muß, kann durchaus Absicht sein. Falls ein einzelnes Verstellen möglich sein soll, müßten entsprechende Methoden implementiert werden.

Die öffentlichen und privaten Bereiche sind dabei in einer Klasse beliebig mischbar, es kann nach einem öffentlichen Bereich wieder ein privater folgen und umgekehrt.

Das Schlüsselwort private: kann hier auch weggelassen werden, da die Voreinstellung für class ist, daß Elemente und Methoden privat sind. Erst nach public: werden sie öffentlich.