Zpo-5-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:
==Podział  przekształceń – sposób weryfikacji(1)==
==Adapter: struktura==


[[Image:zpo-5-wyk-Slajd26.PNG|Podział  przekształceń – sposób weryfikacji(1)]]
[[Image:zpo-5-wyk-Slajd26.PNG|Adapter: struktura]]




Jednak wśród przekształceń trudnych także można wyróżnić dwie podgrupy: przekształceń testowalnych i nieokreślonych. Szczególnie interesująca jest druga kategoria: należące do niej przekształcenia wprawdzie wymagają testowania, jednak można dość precyzyjnie wskazać niezmienniki, które powinny być zweryfikowane (lecz, oczywiście, nie dowiedzione!) za pomocą testów. Zatem możliwe jest zapewnienie programiście wsparcia co do rodzaju i sposobu tworzenia testów, a nawet częściowe zautomatyzowanie tego procesu. Kategoria przekształceń nieokreślonych zawiera przekształcenia, które wymagają testów, ale nie można wskazać ich natury i sposobu realizacji. Do tej kategorii należą przekształcenia tradycyjnie trudne, i w ich przypadku pracochłonność nadal jest bardzo wysoka.
Struktura wzorca składa się z trzech podstawowych klas: Target, Adaptee oraz Adapter. Target jest interfejsem, którego oczekuje klient. Obiektem dostarczającym żądanej przez klienta funkcjonalności, ale niezgodnego pod względem typu, jest Adaptee. Rolą Adaptera, który implementuje typ Target, jest przetłumaczenie wywołania metody należącej do typu Target poprzez wykonanie innej metody (lub grupy metod) w klasie Adaptee. Dzięki temu klient współpracuje z obiektem Adapter o akceptowanym przez siebie interfejsie Target, jednocześnie wykorzystując funkcjonalność dostarczoną przez Adaptee.
 
Alternatywna nazwa wzorca – Wrapper, która oznacza opakowanie, bardzo dobrze opisuje rolę obiektu Adapter: pełnić wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół zrozumiały dla faktycznego wykonawcy poleceń.
 
Wzorzec ten posiada także wersję wykorzystującą dziedziczenie w relacji Adapter-Adaptee. Jednak wersja ta ma pewne niedogodności: powiązania między obiektami są ustalane w momencie kompilacji i nie mogą ulec zmianie; ponadto, język programowania musi umożliwiać stosowanie wielokrotnego dziedziczenia lub dziedziczenia i implementacji interfejsu (jak w przypadku języków Java i C#).




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

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

Adapter: struktura

Adapter: struktura


Struktura wzorca składa się z trzech podstawowych klas: Target, Adaptee oraz Adapter. Target jest interfejsem, którego oczekuje klient. Obiektem dostarczającym żądanej przez klienta funkcjonalności, ale niezgodnego pod względem typu, jest Adaptee. Rolą Adaptera, który implementuje typ Target, jest przetłumaczenie wywołania metody należącej do typu Target poprzez wykonanie innej metody (lub grupy metod) w klasie Adaptee. Dzięki temu klient współpracuje z obiektem Adapter o akceptowanym przez siebie interfejsie Target, jednocześnie wykorzystując funkcjonalność dostarczoną przez Adaptee.

Alternatywna nazwa wzorca – Wrapper, która oznacza opakowanie, bardzo dobrze opisuje rolę obiektu Adapter: pełnić wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół zrozumiały dla faktycznego wykonawcy poleceń.

Wzorzec ten posiada także wersję wykorzystującą dziedziczenie w relacji Adapter-Adaptee. Jednak wersja ta ma pewne niedogodności: powiązania między obiektami są ustalane w momencie kompilacji i nie mogą ulec zmianie; ponadto, język programowania musi umożliwiać stosowanie wielokrotnego dziedziczenia lub dziedziczenia i implementacji interfejsu (jak w przypadku języków Java i C#).


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