Zpo-11-wyk-Slajd34: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 1: Linia 1:
==Visitor: struktura==
==Przykład==


[[Image:zpo-11-wyk-Slajd34.PNG|Visitor: struktura]]
[[Image:zpo-11-wyk-Slajd34.PNG|Przykład]]




Obiekty wchodzące w skład struktury, które obiekt Visitor ma odwiedzić, implementują interfejs Element. Interfejs ten definiuje tylko jedną metodę – ''accept'' ''(),'' przyjmującą jako jedyny parametr obiekt typu Visitor. Co więcej, metodą ta w każdym przypadku ma identyczną postać: w obiekcie Visitor wywoływana jest metoda ''visit'' ''()'' z parametrem ''this'' , oznaczająca referencję do własnego obiektu. W ten sposób następuje tzw. odwrócenie sterowania: zamieniają się nadawca i odbiorca komunikatu
Dla przykładu rozpatrzmy sposób wyświetlania informacji o książce. Metoda ''wyswietlDane'' ''()'' przyjmuje jako argument obiekt klasy Książka. Obiekt ten posiada dwie metody: ''tytul'' ''()'' i ''autor'' ''().'' Aby zmniejszyć zależność metody ''wyswietlDane'' ''()'' od klasy Książka, a jednocześnie umożliwić zastąpienie tej klasy inną klasą, można wyłączyć ją do nowego interfejsu.
 
Z drugiej strony we wzorcu uczestniczą obiekty implementujące interfejs Visitor, który definiuje grupę metod ''visit'' ''(),'' przyjmujących jako parametr obiekty typów, które należy odwiedzić. Każda z tych metod jest zatem przygotowana do odwiedzenia obiektu jednego typu w sposób całkowicie zależny od niego i do niego dostosowany.
 
Jednak konieczne jest automatyczne określenie, która z metod ''visit'' ''()'' zostanie wykonana. Do tego służy właśnie owo odwrócenie sterowania: przekazywany parametr ''this'' jest zawsze typu klasy, w której się znajduje, dzięki czemu metoda zostanie dopasowana automatycznie do typu parametru.




[[zpo-11-wyk-Slajd33 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd35 | Następny slajd >>]]
[[zpo-11-wyk-Slajd33 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd35 | Następny slajd >>]]

Aktualna wersja na dzień 17:37, 4 lis 2006

Przykład

Przykład


Dla przykładu rozpatrzmy sposób wyświetlania informacji o książce. Metoda wyswietlDane () przyjmuje jako argument obiekt klasy Książka. Obiekt ten posiada dwie metody: tytul () i autor (). Aby zmniejszyć zależność metody wyswietlDane () od klasy Książka, a jednocześnie umożliwić zastąpienie tej klasy inną klasą, można wyłączyć ją do nowego interfejsu.


<< Poprzedni slajd | Spis treści | Następny slajd >>