Zpo-6-wyk-Slajd31: 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:
==Inline Method==
==Memento: przykład cd.==


[[Image:zpo-6-wyk-Slajd31.PNG|Inline Method]]
[[Image:zpo-6-wyk-Slajd31.PNG|Memento: przykład cd.]]




Najprostszym przekształceniem jest komplementarne do Extract Method rozwinięcie metody, tzn. zastąpienie wywołania metody jej ciałem. Dzięki temu metody wykonujące proste obliczenia, które nie zasługują na umieszczenie w metodzie, mogą zostać usunięte.
Wewnątrz klasy Account jest zdefiniowana klasa Memento, posiadająca pole mementoBalance, służące do przechowania wartości salda w danym momencie. Metody ''setState'' ''()'' oraz ''restoreState'' ''()'' są widoczne jedynie dla jej nadklasy, natomiast inne obiekty nie mają do nich dostępu. Rolę obiektu Caretaker może pełnić dowolna zmienna typu Account.Memento, która przechowuje instancję migawki. W ten sposób założenia dotyczące podwójnego interfejsu zostały spełnione.
 
Podobnie jak w wielu innych przekształceniach związanych z metodami, najpierw należy upewnić się, że metoda nie jest polimorficznie pokrywana. Dodatkowym warunkiem jest brak jej rekurencyjnych wywołań, które uniemożliwiają (lub bardzo utrudniają) prawidłowe zakończenie refaktoryzacji, oraz jedno miejsce powrotu z metody (choć w niektórych przypadkach wielokrotne instrukcje ''return'' mogą zostać zastąpione operatorem trójargumentowym). Dalsza część polega na kolejnym zastępowaniu wywołań ciałem metody oraz każdorazowym testowaniu przekształcanego fragmentu. Ostatnim krokiem jest usunięcie zbędnej metody.




[[zpo-6-wyk-Slajd30 | << Poprzedni slajd]] | [[zpo-6-wyk-toc|Spis treści ]] | [[zpo-6-wyk-Slajd32 | Następny slajd >>]]
[[zpo-6-wyk-Slajd30 | << Poprzedni slajd]] | [[zpo-6-wyk-toc|Spis treści ]] | [[zpo-6-wyk-Slajd32 | Następny slajd >>]]

Aktualna wersja na dzień 11:10, 17 paź 2006

Memento: przykład cd.

Memento: przykład cd.


Wewnątrz klasy Account jest zdefiniowana klasa Memento, posiadająca pole mementoBalance, służące do przechowania wartości salda w danym momencie. Metody setState () oraz restoreState () są widoczne jedynie dla jej nadklasy, natomiast inne obiekty nie mają do nich dostępu. Rolę obiektu Caretaker może pełnić dowolna zmienna typu Account.Memento, która przechowuje instancję migawki. W ten sposób założenia dotyczące podwójnego interfejsu zostały spełnione.


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