Konrad-Adenauer-Gymnasium Langenfeld
Informatik Grundkurs Q1
Schutzklasse protected
Um diese Problematik in einem objektorientierten System angemessen
modellieren zu können, gibt es in Java - neben den Schutzklassen private
und public - eine weitere Schutzklasse protected, mit der sich das
Problem der benötigten Typ-Einschränkung recht elegant lösen lässt.
Schutzklasse: |
Funktion: |
private |
Zugriff nur innerhalb der Klasse möglich |
public |
Zugriff von außen möglich (= Export-Schnittstelle) |
protected |
Zugriff von außen nicht möglich (wie private)
Zugriff innerhalb von Unterklasse möglich (wie public) |
Auf Methoden der Schutzklasse protected kann der Benutzer einer Klasse
wie bei der Schutzklasse private nicht zugreifen. Für den Konstrukteur
einer Unterklasse dieser Klasse sind diese Methoden jedoch zugänglich, haben
also Merkmale der Schutzklasse public. Hiermit ist die Vorstellung
verbunden, dass man Zustandsvariablen und Methoden vor "Fehlbedienung"
durch den Benutzer der Klasse schützen will. Vom Konstrukteur einer neuen
Unterklasse erwartet man dagegen, dass er bei der Konstruktion der Unterklasse
besonders sorgfältig vorgeht und die möglichen Probleme der Oberklasse bei der
Realisierung der Unterklasse angemessen berücksichtigt.
Grundprinzip:
- Methoden, die in einer Unterklasse nicht veröffentlicht sein sollen,
haben in der Oberklasse die Schutzklasse protected .
- In der Unterklasse dürfen diese Methoden für die Implementation
verwendet werden, bleiben aber protected, wenn ihre Verwendung einem
Anwender der Klasse verwehrt sein soll.
- Werden die geschützen Methoden in einer (anderen) Unterklasse für den
Anwender benötigt, wird diese als eine weitere, zusätzliche Unterklasse
aus der Oberklasse abgeleitet, in der nur die geschützten Methoden
veröffentlicht werden (Schutzklasse public).
Implementation der Klassenhierarchie von Listen:
- Wir erzeugen zur Klasse doppeltverketteteListe, die alle in den
speziellen Listen unerwünschten Methoden veröffentlicht, eine Oberklasse Listenstruktur,
die diese Methoden mit der Schutzklasse protected enthält.
- In der Unterklasse doppeltverketteteListe werden diese nun zur
Verfügung gestellt, indem sie die Schutzklasse public erhalten.
- In der Unterklasse Stapel von Listenstruktur bleiben diese
Methoden protected und stehen damit zwar für die Implementation der
Klasse Stapel, nicht aber für den Anwender der Klasse Stapel
zur Verfügung.
In UML ergibt sich dann folgende Struktur der Klassen zueinander.
Aufgaben:
- Erstellen Sie in einem neuen Projekt die Klassen Listenstruktur und doppeltverketteteListe.
In der Klasse Listenstruktur erhalten alle Methoden die
Schutzklasse protected, die in der Unterklasse Stapel nicht aufgerufen
werden dürfen.
- Erstellen Sie die Klasse Stapel als Unterklasse von Listenstrukur und
testen Sie den Auf- und Abbau eines Stapel in einem Testprogramm Stapel1.
© Ralph-Erich Hildebrandt, 04. Februar 2005