Zpo-8-wyk-Slajd42: 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:
==Przykład(2)==
==Lazy Class==


[[Image:zpo-8-wyk-Slajd42.PNG|Przykład(2)]]
[[Image:zpo-8-wyk-Slajd42.PNG|Lazy Class]]




Ostatnim etapem jest pokrycie w podklasie metod dziedziczonych po nadklasie: metoda ''autor'' ''(),'' która w nadklasie zwraca nazwisko autora, w podklasie zwraca wartość ''"".'' Dzięki temu można całkowicie usunąć wywołania metody ''czyPusta'' ''()'' oraz samą metodę, ponieważ wybór właściwej metody ''autor'' ''()'' jest określony przez instancję klasy, na rzecz której metoda ta jest wywoływana.
Bezużyteczna klasa  jest przeciwieństwem klasy nadmiernie rozbudowanej. Jeżeli klasa nie posiada żadnej odpowiedzialności lub jest ona ograniczona do pojedynczych drobnych funkcji, warto zastanowić się nad jej modyfikacją. Klasa bezużyteczna jest często blisko powiązana z innym przykrym zapachem – Data Class. O ile jednak w ostatnim przypadku klasa przechowuje pewne dane, o tyle klasa bezużyteczna nie posiada określonego i spójnego zakresu odpowiedzialności.


Efektem przekształcenia jest stworzenie nowej podklasy, która reprezentuje obiekt "pusty", czyli równoważny referencji ''null'' . Należy jednak pamiętać, że obiekty takie mogą zachowywać się różnie w różnych kontekstach (np. metoda ''autor'' ''()'' w niektórych przypadkach może zwracać wartość "(nieznany)"), co wymaga utworzenia wielu takich klas. W takiej sytuacji przekształcenie to może okazać się nieefektywne.
Usuwanie tego zapachu może podążać dwiema drogami: zwiększając jej odpowiedzialność kosztem współpracujących z nią klas klienckich lub stopniowo ją ograniczając, a następnie usuwając z systemu. W przypadku dziedziczenia klasa jest usuwana poprzez przeniesienie jej funkcji do nadklasy i/lub podklas, natomiast w pozostałych przypadkach jej składowe są przesuwane do klientów poprzez delegacje.




[[zpo-8-wyk-Slajd41 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd43 | Następny slajd >>]]
[[zpo-8-wyk-Slajd41 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd43 | Następny slajd >>]]

Aktualna wersja na dzień 18:14, 4 lis 2006

Lazy Class

Lazy Class


Bezużyteczna klasa jest przeciwieństwem klasy nadmiernie rozbudowanej. Jeżeli klasa nie posiada żadnej odpowiedzialności lub jest ona ograniczona do pojedynczych drobnych funkcji, warto zastanowić się nad jej modyfikacją. Klasa bezużyteczna jest często blisko powiązana z innym przykrym zapachem – Data Class. O ile jednak w ostatnim przypadku klasa przechowuje pewne dane, o tyle klasa bezużyteczna nie posiada określonego i spójnego zakresu odpowiedzialności.

Usuwanie tego zapachu może podążać dwiema drogami: zwiększając jej odpowiedzialność kosztem współpracujących z nią klas klienckich lub stopniowo ją ograniczając, a następnie usuwając z systemu. W przypadku dziedziczenia klasa jest usuwana poprzez przeniesienie jej funkcji do nadklasy i/lub podklas, natomiast w pozostałych przypadkach jej składowe są przesuwane do klientów poprzez delegacje.


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