Java Reference
In-Depth Information
Klasse Besucher gewählt wird, braucht eine konkrete Element-Klasse die konkrete
Klasse eines Besuchers nicht zu kennen, sondern kann auf Grund des liskovschen
Substitutionsprinzips jedes Besucher-Objekt akzeptieren, dessen Klasse die Verträge
der Basisklasse Besucher einhält.
Die Implementierung der akzeptieren() -Methode besteht nur aus dem Aufruf der
besuchen() -Methode des als Parameter übergebenen Besuchers. Das akzeptieren-
de Objekt übergibt an die besuchen() -Methode eine Referenz auf sich selbst, so
dass der aufgerufene Besucher anschließend in der Lage ist, über die im Diagramm
angedeuteten get-Methoden der konkreten Element-Klasse sich Daten vom aufrufen-
den Objekt zu besorgen, um seine zentrale Funktion zu realisieren.
Obwohl die Implementierung der akzeptieren() -Methode in je-
der Klasse gleich ist, muss sie trotzdem in jeder konkreten Klasse
KonkretesElementY stattfinden und darf nicht in eine Basis-
klasse verlagert werden, da dem Besucher sonst nur eine Refe-
renz vom Typ der Basisklasse übergeben wird.
Vorsicht!
In der rechten Hälfte von Bild 4-53 befindet sich die Hierarchie der Besucher-Klassen.
Die Basisklasse aller Besucher-Klassen ist die abstrakte Klasse
Besucher . Die Klasse Besucher definiert für jede konkrete Ele-
ment-Klasse KonkretesElementY eine abstrakte besuchen() -
Methode mit einem Parameter vom Typ der entsprechenden Ele-
ment-Klasse 63 .
Die konkreten Besucher-Klassen KonkreterBesucherX ( X = 1..n ) implementieren
diese besuchen() -Methoden, indem sie im Rumpf einer besuchen() -Methode auf
die Daten des übergebenen Objekts der Objektstruktur - beispielsweise über die get-
Methoden der entsprechenden Element-Klasse - zugreifen und diese Daten zur Reali-
sierung der gewünschten Funktionalität der jeweiligen Besucher-Klasse nutzen.
Die abstrakten Klassen Element und Besucher verbindet eine bidirektionale Asso-
ziation, die es ermöglicht, dass jedes konkrete Besucher-Objekt jedes konkrete Daten
tragende Objekt besucht und dass jeder Besuchte jeden Besucher akzeptieren muss.
Der Typ der Basisklasse Element , von der die Klassen Konkre-
tesElementY abgeleitet sind, reicht als Parameter der besu-
chen() -Methode nicht aus, da auf Basis des übergebenen Typs
KonkretesElementY die passende besuchen() -Methode aus-
gewählt wird.
Vorsicht!
63 Man kann die besuchen() -Methoden der Klasse Besucher auch dafür nutzen, eine Default-Imple-
mentierung einzurichten, die von abgeleiteten Besucher-Klassen bei Bedarf genutzt werden kann.
Search WWH ::




Custom Search