Zpo-7-wyk-Slajd21: 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:
==Replace Inheritance with Delegation==
==Template Method: cel==


[[Image:zpo-7-wyk-Slajd21.PNG|Replace Inheritance with Delegation]]
[[Image:zpo-7-wyk-Slajd21.PNG|Template Method: cel]]




Kolejne przekształcenie pełni bardzo istotną rolę nie tylko jako metoda refaktoryzacji, ale również poznawczą: pokazuje, że w rzeczywistości dziedziczenie i delegacja są sobie równoważne na poziomie fizycznych struktur danych, różnią się jedynie sposobem implementacji relacji. Pamiętamy jednak z pierwszego wykładu, że stosowanie delegacji zamiast dziedziczenia przyczynia się do większej elastyczności systemu i jego otwartości na zmiany.
Template Method jest prostym wzorcem opisującym sposób współpracy między nadklasą i jej podklasami. Celem zastosowania tego wzorca jest stworzenie szkieletu algorytmu w nadklasie i określenie jego poszczególnych kroków w podklasach.
 
Przekształcenie to służy do zmiany dziedziczenia w relację delegacji. Klasa, która dotychczas była podklasą, po przekształceniu staje się obiektem delegującym wybrane odwołania do swojej dawnej nadklasy, a wywołania poprzedzone kwalifikatorem nadklasy (w Javie jest to słowo ''super'' ) zostaną zastąpione wyrażoną jawnie referencją.
 
Pierwszym krokiem przekształcenia jest wprowadzenie do podklasy pola o typie nadklasy i przypisanie mu wartości ''this'' . Powoduje to utworzenie jawnej referencji do nadklasy; jawnej, ponieważ relacja dziedziczenia wprowadza zawsze inną, niejawną relację pomiędzy podklasą a nadklasą. W rzeczywistości zatem istnieją w tym momencie dwie relacje łączące te same obiekty.
 
Ta sytuacja pozwala na stopniowe zmienianie odwołań do nadklasy przez referencję niejawną (czyli oznaczaną słowem ''this'' lub pomijaną) na odwołania przez referencję jawną. W tej fazie zapewniona jest możliwość odwrócenia przekształcenia i powrotu do stanu wyjściowego.
 
Po aktualizacji wszystkich odwołań można usunąć relację dziedziczenia, co powoduje konieczność wykonania ostatniego kroku przekształcenia: zaimplementowania prostych metod delegujących z "podklasy" do "nadklasy" w miejsce dawnych metod odziedziczonych.  




[[zpo-7-wyk-Slajd20 | << Poprzedni slajd]] | [[zpo-7-wyk-toc|Spis treści ]] | [[zpo-7-wyk-Slajd22 | Następny slajd >>]]
[[zpo-7-wyk-Slajd20 | << Poprzedni slajd]] | [[zpo-7-wyk-toc|Spis treści ]] | [[zpo-7-wyk-Slajd22 | Następny slajd >>]]

Aktualna wersja na dzień 19:16, 4 lis 2006

Template Method: cel

Template Method: cel


Template Method jest prostym wzorcem opisującym sposób współpracy między nadklasą i jej podklasami. Celem zastosowania tego wzorca jest stworzenie szkieletu algorytmu w nadklasie i określenie jego poszczególnych kroków w podklasach.


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