Zpo-11-wyk-Slajd26: 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:
==Template Method: struktura==
==Pull Up Method==


[[Image:zpo-11-wyk-Slajd26.PNG|Template Method: struktura]]
[[Image:zpo-11-wyk-Slajd26.PNG|Pull Up Method]]




Klasa abstrakcyjna posiada metodę ''templateMethod'' ''()'' definiującą szkielet algorytmu. Metoda ta odwołuje się do innych metod w tej klasie definiujących podstawowe kroki algorytmu. Część z nich to metody wykorzystywane przez wszystkie podklasy, dlatego są one zdefiniowane w nadklasie i dziedziczone po niej przez podklasy. Ponieważ pozostałe kroki algorytmu mają różną postać w każdym algorytme, dlatego na poziomie klasy AbstractClass  są one deklarowane jako abstrakcyjne. Ich implementacja jest wówczas przesunięta do klas dziedziczących.
Pierwszym z przekształceń jest przeniesienie w górę hierarchii dziedziczenia metody, która występuje w wielu podklasach posiadających wspólną nadklasę. Celem jest zatem przeniesienie metody do nadklasy, tak aby była ona dziedziczona, a nie definiowana w poszczególnych podklasach.
 
Krokiem wstępnym tego przekształcenia jest ujednolicenie metod w poszczególnych podklasach. Następnie należy zadeklarować metodę w nadklasie i skopiować do niej ciało metody w jednej z podklas. Jeżeli wszystkie podklasy definiowały tę metodę, wówczas nadal nie powinna wystąpić zmiana zachowania programu.  
 
W kolejnych krokach metoda jest usuwana z podklas (wówczas jest ona dostępna wyłącznie poprzez dziedziczenie z nadklasy).
 
W efekcie metoda jest usuwana z wszystkich podklas i przeniesiona do nadklasy. Jeżeli niektóre podklasy definiują metodę odmiennie od pozostałych, wówczas mogą pozostawić metodę pokrytą.




[[zpo-11-wyk-Slajd25 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd27 | Następny slajd >>]]
[[zpo-11-wyk-Slajd25 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd27 | Następny slajd >>]]

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

Pull Up Method

Pull Up Method


Pierwszym z przekształceń jest przeniesienie w górę hierarchii dziedziczenia metody, która występuje w wielu podklasach posiadających wspólną nadklasę. Celem jest zatem przeniesienie metody do nadklasy, tak aby była ona dziedziczona, a nie definiowana w poszczególnych podklasach.

Krokiem wstępnym tego przekształcenia jest ujednolicenie metod w poszczególnych podklasach. Następnie należy zadeklarować metodę w nadklasie i skopiować do niej ciało metody w jednej z podklas. Jeżeli wszystkie podklasy definiowały tę metodę, wówczas nadal nie powinna wystąpić zmiana zachowania programu.

W kolejnych krokach metoda jest usuwana z podklas (wówczas jest ona dostępna wyłącznie poprzez dziedziczenie z nadklasy).

W efekcie metoda jest usuwana z wszystkich podklas i przeniesiona do nadklasy. Jeżeli niektóre podklasy definiują metodę odmiennie od pozostałych, wówczas mogą pozostawić metodę pokrytą.


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