Sichtbarkeit und Kapselung
Grundsätzlich können Instanzvariablen und Methoden als public oder als private definiert werden.
An dem folgendem Aufgabenbeispiel sollen Sie herausfinden, welche Wirkung die beiden Schlüsselwörter public und. private haben.
1. Erstellen Sie ein Objekt und führen Sie die Methode
public ermittelnfamiliengroesse(int partner, int kinder) aus.
2. Ändern Sie nun die Methode (aus Aufgabe 1) wie folgt:
private ermittelnfamiliengroesse(int partner, int kinder)
und versuchen Sie auch jetzt die Methode am Objekt auszuführen.
3. Was stellen Sie fest? Formulieren Sie in eigenen Worten, welche Wirkung die beiden Schlüsselwörter public und private haben!
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
4. Die Familie hat Nachwuchs bekommen. Die Familiengröße muss neu
berechnet werden. Welchen Unterschied macht das, wenn man die Methode ermittelnfamiliengroesse(int partner, int kinder) mit public oder private definiert?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
Lösung:
3. Was stellen Sie fest? Formulieren Sie in eigenen Worten, welche Wirkung die beiden Schlüsselwörter public und private haben!
Bei public kann auf die Methode zugegriffen werden. Der Konstruktor fragt die Kinder- und Partnerzahl ab und ermittelt die Familiengröße, zusätzlich kann über das Objekt auf die Methode ermittelnfamiliengroesse zurückgegriffen werden, die Methode ist also über das Objekt sichtbar. Der Zugriff auf die Methode ermittelnfamiliengroesse über das Objekt ist bei private nicht möglich. Bei private kann die Methode nur über den Konstruktor gestartet werden Dadurch kapselt sich die Methode ab.
4. Die Familie hat Nachwuchs bekommen. Die Familiengröße muss neu
berechnet werden. Welchen Unterschied macht das, wenn man die Methode ermittelnfamiliengroesse(int partner, int kinder) mit public oder private definiert?
Bei public ist eine Änderung genau am entsprechenden Objekt möglich. Bei private muss ein neues Objekt (also strenggenommen eine neue Familie) erstellt werden, damit die Familiengröße über den Konstruktor verändert werden kann. Dies ist eine nicht zufriedenstellende Lösung.