Zpo-9-wyk-Slajd41: 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:
==c.d.n.==
==Move Field==


[[Image:zpo-9-wyk-Slajd41.PNG|c.d.n.]]
[[Image:zpo-9-wyk-Slajd41.PNG|Move Field]]




Ostatnia część katalogu przekształceń refaktoryzacyjnych, zostanie przedstawiona podczas kolejnego wykładu.
Przeniesienie pola jest przekształceniem dotyczącym dwóch klas związanych ze sobą relacją asocjacji, agregacji lub kompozycji (ale nie dziedziczenia). Wykonuje się je w sytuacji, gdy pole to jest częściej używane przez obcą klasę niż przez klasę macierzystą. Celem jest zatem zwiększenie spójności klas poprzez przeniesienie go do właściwej klasy.


Pierwszym krokiem jest hermetyzacja pola i udostępnienie metod dostępu do niego get/set (zob. przekształcenie Encapsulate Field). Następnie należy utworzyć identyczne pole wraz z metodami dostępu w klasie docelowej. W tym momencie należy zmienić metody set/get w klasie oryginalnej, tak aby wywoływały ich odpowiedniki w klasie docelowej. Nieużywane pole w klasie źródłowej może zostać w tym momencie usunięte.


[[zpo-9-wyk-Slajd40 | << Poprzedni slajd]] | [[zpo-9-wyk-toc|Spis treści ]] | Następny slajd >>
Warto zwrócić uwagę, że po przekształceniu do pola można odwołać się zarówno z klasy źródłowej, jak i klasy docelowej, co pozwala na elastyczne dostosowanie klientów do nowego położenia pola. W pewien sposób pozwala to także ukryć strukturę tych dwóch klas, jednak z drugiej strony rozmywa nieco ich odpowiedzialność oraz wiąże je silną zależnością.
 
 
[[zpo-9-wyk-Slajd40 | << Poprzedni slajd]] | [[zpo-9-wyk-toc|Spis treści ]] | [[zpo-9-wyk-Slajd42 | Następny slajd >>]]

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

Move Field

Move Field


Przeniesienie pola jest przekształceniem dotyczącym dwóch klas związanych ze sobą relacją asocjacji, agregacji lub kompozycji (ale nie dziedziczenia). Wykonuje się je w sytuacji, gdy pole to jest częściej używane przez obcą klasę niż przez klasę macierzystą. Celem jest zatem zwiększenie spójności klas poprzez przeniesienie go do właściwej klasy.

Pierwszym krokiem jest hermetyzacja pola i udostępnienie metod dostępu do niego get/set (zob. przekształcenie Encapsulate Field). Następnie należy utworzyć identyczne pole wraz z metodami dostępu w klasie docelowej. W tym momencie należy zmienić metody set/get w klasie oryginalnej, tak aby wywoływały ich odpowiedniki w klasie docelowej. Nieużywane pole w klasie źródłowej może zostać w tym momencie usunięte.

Warto zwrócić uwagę, że po przekształceniu do pola można odwołać się zarówno z klasy źródłowej, jak i klasy docelowej, co pozwala na elastyczne dostosowanie klientów do nowego położenia pola. W pewien sposób pozwala to także ukryć strukturę tych dwóch klas, jednak z drugiej strony rozmywa nieco ich odpowiedzialność oraz wiąże je silną zależnością.


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