Zpo-10-wyk-Slajd10: 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:
==Chain of Responsibility: cel==
==Przykład(1)==


[[Image:zpo-10-wyk-Slajd10.PNG|Chain of Responsibility: cel]]
[[Image:zpo-10-wyk-Slajd10.PNG|Przykład(1)]]




Wzorzec Chain of Responsibility jest strukturą, która definiuje łańcuch obiektów będących potencjalnymi odbiorcami i wykonawcami żądań klienta. Dzięki temu wiele obiektów ma możliwość obsługi żądania, a powiązania pomiędzy nadawcą i odbiorcą (jak i poszczególnymi potencjalnymi odbiorcami) stają się znacznie osłabione lub zostają usunięte.
Przekształcenie polega na zaimplementowaniu dwóch metod: ''equals'' ''()'' oraz ''hashCode'' ''().'' Metoda ''equals'' ''()'' przyjmuje jako argument obiekt klasy Object i traktuje go jak inny obiekt własnej klasy (w tym przypadku będzie to DziałKatalogu). Porównanie własnego obiektu z obiektem przekazanym jako argument może być zrealizowane np. poprzez porównanie prefiksów opisujących działu książek, które są jedynym polem w tej klasie. Metoda ''hashCode'' ''()'' jest zaimplementowana podobnie – poprzez delegację do identycznej metody w obiekcie prefiksu.
 
Ostatnim krokiem jest zmiana kwalifikatora dostępu do konstruktora na public.
 
Warto pamiętać, że otrzymany obiekt-wartość nie może być już porównywany za pomocą operatora porównania, dlatego wyrażenia dotyczące porównania powinny również zostać dostosowane do tej zasady. Przedstawione dwa przypadki testowe pokazują ideę tego przekształcenia: porównanie za pomocą metody ''equals'' ''()'' nadal jest poprawne, natomiast za pomocą operatora ==  już nie.  




[[zpo-10-wyk-Slajd9 | << Poprzedni slajd]] | [[zpo-10-wyk-toc|Spis treści ]] | [[zpo-10-wyk-Slajd11 | Następny slajd >>]]
[[zpo-10-wyk-Slajd9 | << Poprzedni slajd]] | [[zpo-10-wyk-toc|Spis treści ]] | [[zpo-10-wyk-Slajd11 | Następny slajd >>]]

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

Przykład(1)

Przykład(1)


Przekształcenie polega na zaimplementowaniu dwóch metod: equals () oraz hashCode (). Metoda equals () przyjmuje jako argument obiekt klasy Object i traktuje go jak inny obiekt własnej klasy (w tym przypadku będzie to DziałKatalogu). Porównanie własnego obiektu z obiektem przekazanym jako argument może być zrealizowane np. poprzez porównanie prefiksów opisujących działu książek, które są jedynym polem w tej klasie. Metoda hashCode () jest zaimplementowana podobnie – poprzez delegację do identycznej metody w obiekcie prefiksu.

Ostatnim krokiem jest zmiana kwalifikatora dostępu do konstruktora na public.

Warto pamiętać, że otrzymany obiekt-wartość nie może być już porównywany za pomocą operatora porównania, dlatego wyrażenia dotyczące porównania powinny również zostać dostosowane do tej zasady. Przedstawione dwa przypadki testowe pokazują ideę tego przekształcenia: porównanie za pomocą metody equals () nadal jest poprawne, natomiast za pomocą operatora == już nie.


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