Zpo-10-wyk-Slajd10: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
== | ==Przykład(1)== | ||
[[Image:zpo-10-wyk-Slajd10.PNG| | [[Image:zpo-10-wyk-Slajd10.PNG|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. | |||
[[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)
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.