Java Programmieren

Datenkapselung und Geheimnisprinzip

Warum man das Geheimnisprinzip und die Datenkapselung verstanden haben sollte!

Java ist eine objektorientierte Programmiersprache und im Normalfall wird man je nach Projekt nicht nur mit einer Klasse, sondern mit sehr vielen Klassen arbeiten. Wenn dann am Projekt nicht nur eine Person, sondern eine ganze Gruppe arbeitet, dann müssen im Programm selbst Vorkehrungen getroffen werden um mögliche Fehler schon im Vorhinein auszuschließen. Hilfreich ist dabei die sogenannte Datenkapselung bzw. das Geheimnisprinzip.

So steht das Geheimnisprinzip dafür, dass man für das Verwenden der Klasse, z.B. durch den Programmierer, so wenig wie möglich wissen muss. Das Innenleben der Klasse ist weitgehend geheim und von Außen nicht sichtbar. Der Zugriff von Außen funktioniert einzig und allein über Schnittstellen, die so wiederum eingesetzt werden um bestimmte Eingaben herauszufiltern. Damit verhindert beispielsweise der Programmierer der Klasse, dass ein anderer Programmierer durch einen Zugriff aus seine Klasse diese so unfreiwillig manipuliert, dass es zu Fehlern im Programm kommt.

Mögliche Zugriffsarten bei der Kapselung

Grundsätzlich gibt es die folgenden vier Zugriffsarten laut der UML:

  • public (+) - Zugriff von außerhalb und innerhalb der Klasse möglich
  • private (-) - Zugriff nur innerhalb der Klasse möglich
  • protected (#) - Zugriff nur innerhalb der Klasse und von Spezialisierungen derselben
  • package (~) - Zugriff für alle Elemente innerhalb des eigenen Pakets (Anm. für Verwendung in Java: Keine Definition bedeutet Package-Zugriff (Default))

Ein häufiges Szenario mit dem man wahrscheinlich selbst auch konfrontiert werden wird ist, dass die Klassen public sind, während ihre Attribute und Methoden größtenteils private sein werden. Dennoch möchte man natürlich einen Zugriff gestatten, also was tun? Wie schon oben beschrieben, wird man in diesem Fall Schnittstellen zu Verfügung stellen. Bekannte Schnittstellen sind beispielsweise die getter- und setter-Funktionen über die Attribute gesetzt oder ausgelesen werden können. Diese Funktionen müssen dann natürlich zwingenderweise Public sein.

Java Code-Beispiele zur Datenkapselung

private int myAttribute;
public void setMyAttribute(int myAttribute) {
	this.myAttribute = myAttribute;
}

public int getMyAttribute() {
	return this.myAttribute;
}

Hinweis: Du möchtest Java lernen? Vielleicht hilft dir dieser Kurs hier weiter. Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!