Zpo-11-wyk-Slajd39: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
== | ==Introduce Null Object== | ||
[[Image:zpo-11-wyk-Slajd39.PNG| | [[Image:zpo-11-wyk-Slajd39.PNG|Introduce Null Object]] | ||
Przekształcenie to służy do usunięcia porównań referencji do obiektu z wartością ''null'' . Porównania takie często pojawiają się w kodzie, ponieważ zapobiegają pojawieniu się wyjątku ''NullPointerException'' . Jednak duża ich liczba powoduje ograniczenie czytelności kodu. | |||
Celem tego przekształcenia jest wykorzystanie polimorfizmu (podobnie jak w przypadku innych przekształceń dotyczących wyrażeń warunkowych) i stworzenie podklasy analizowanego obiektu reprezentującej wartość ''null'' . | |||
Przekształcenie zaczyna się od stworzenia podklasy, której nazwa – zgodnie z konwencją – zaczyna się od słowa ''Null'' i która będzie reprezentowała niezainicjowane zmienne analizowanej klasy. W obu klasach (nadklasie i podklasie) należy zdefiniować metodę, która pozwoli odróżnić ich instancje – np. ''isNull'' ''().'' W podklasie metoda ta zwraca wartość ''true'' , a w nadklasie – ''false'' ''.'' Następnie wszystkie przypisania wartości ''null'' należy zastąpić utworzeniem instancji podklasy. Dzięki temu można po kolei zmieniać występujące u klientów porównania z wartością ''null'' wywołaniem metody ''isNull'' ''().'' | |||
Dopiero po zakończeniu tej operacji jest możliwe pełne wykorzystanie polimorfizmu: należy pokryć w podklasie metody zwracające wartości odziedziczone po nadklasie, tak aby ich wyniki odpowiadały tym, których można się spodziewać po obiektach "pustych" (np. nazwisko nieistniejącego studenta może być napisem pustym). To pozwoli usunąć metody ''isNull'' ''()'' i warunkowe ich sprawdzanie, ponieważ wynik pokrytych metod wywoływanych na obiektach będzie zależał od klasy, do której należą. | |||
[[zpo-11-wyk-Slajd38 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd40 | Następny slajd >>]] | [[zpo-11-wyk-Slajd38 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd40 | Następny slajd >>]] |
Aktualna wersja na dzień 17:37, 4 lis 2006
Introduce Null Object
Przekształcenie to służy do usunięcia porównań referencji do obiektu z wartością null . Porównania takie często pojawiają się w kodzie, ponieważ zapobiegają pojawieniu się wyjątku NullPointerException . Jednak duża ich liczba powoduje ograniczenie czytelności kodu.
Celem tego przekształcenia jest wykorzystanie polimorfizmu (podobnie jak w przypadku innych przekształceń dotyczących wyrażeń warunkowych) i stworzenie podklasy analizowanego obiektu reprezentującej wartość null .
Przekształcenie zaczyna się od stworzenia podklasy, której nazwa – zgodnie z konwencją – zaczyna się od słowa Null i która będzie reprezentowała niezainicjowane zmienne analizowanej klasy. W obu klasach (nadklasie i podklasie) należy zdefiniować metodę, która pozwoli odróżnić ich instancje – np. isNull (). W podklasie metoda ta zwraca wartość true , a w nadklasie – false . Następnie wszystkie przypisania wartości null należy zastąpić utworzeniem instancji podklasy. Dzięki temu można po kolei zmieniać występujące u klientów porównania z wartością null wywołaniem metody isNull ().
Dopiero po zakończeniu tej operacji jest możliwe pełne wykorzystanie polimorfizmu: należy pokryć w podklasie metody zwracające wartości odziedziczone po nadklasie, tak aby ich wyniki odpowiadały tym, których można się spodziewać po obiektach "pustych" (np. nazwisko nieistniejącego studenta może być napisem pustym). To pozwoli usunąć metody isNull () i warunkowe ich sprawdzanie, ponieważ wynik pokrytych metod wywoływanych na obiektach będzie zależał od klasy, do której należą.