Zpo-7-wyk-Slajd25: 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 Delegation with Inheritance==
==Iterator: cel==


[[Image:zpo-7-wyk-Slajd25.PNG|Replace Delegation with Inheritance]]
[[Image:zpo-7-wyk-Slajd25.PNG|Iterator: cel]]




Bieżące przekształcenie jest komplementarne do poprzedniego, tzn. zamienia delegację na dziedziczenie. Zmiana taka wymaga lepszego uzasadnienia niż odwrotna transformacja, ponieważ zwykle powoduje usztywnienie schematu klas i utrudnia jego rozszerzanie. Jednak istnieją sytuacje, w których przekształcenie to jest uzasadnione, np. gdy klasa deleguje niemal wszystkie swoje wywołania do innej klasy, i nie zachodzi konieczność zmiany delegacji do innego obiektu w trakcie wykonywania programu.
Różnorodność kolekcji obiektowych (listy, kolejki, stosy, zbiory, multizbiory, mapy etc.), zarówno funkcjonalna, jak i implementacyjna, powoduje, że wiele z nich wymaga specyficznej obsługi i stosowania zróżnicowanych metod dostępu do elementów. Wzorzec Iterator odpowiada na potrzebę zunifikowanego dostępu do elementów kolekcji, który pozwoli pominąć różnice w ich implementacji. Dzięki niemu, niezależnie od rodzaju kolekcji, jej elementy mogą być przetwarzane sekwencyjnie, z zachowaniem własności poszczególnych kolekcji.
 
W zasadzie przekształcenie przebiega w sposób dokładnie odwrotny do przedstawionego na poprzednich slajdach. Rozpoczyna się od wprowadzenia relacji dziedziczenia pomiędzy klasą delegowaną (która staje się nadklasą) a klasą bieżącą (od tego momentu podklasą). Następnie pole przechowujące referencję do delegacji ma wartość zmienianą na ''this'' . Od tego momentu klasy są związane podwójną relacją, dzięki której można w podklasie stopniowo zmieniać odwołanie do obiektu nadklasy z delegacji na dziedziczenie. Po przeniesieniu wszystkich odwołań można usunąć pole delegacji.




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

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

Iterator: cel

Iterator: cel


Różnorodność kolekcji obiektowych (listy, kolejki, stosy, zbiory, multizbiory, mapy etc.), zarówno funkcjonalna, jak i implementacyjna, powoduje, że wiele z nich wymaga specyficznej obsługi i stosowania zróżnicowanych metod dostępu do elementów. Wzorzec Iterator odpowiada na potrzebę zunifikowanego dostępu do elementów kolekcji, który pozwoli pominąć różnice w ich implementacji. Dzięki niemu, niezależnie od rodzaju kolekcji, jej elementy mogą być przetwarzane sekwencyjnie, z zachowaniem własności poszczególnych kolekcji.


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