Strona startowa Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.– A obrona?– Obrona to nie cel, to tylko przejściowa forma działań, wymuszona przez przeciwnika...niŜ po tiklopidynie Tiklopidyna – u pacjentów hemodializowanych z powikłaniami DIPIRYDAMOL – nasila działanie hamujące agregację adenozyny...Do dziaalnoci Funduszu znajduj zastosowanie przepisy Kodeksu postpowania administracyjnego, ordynacji podatkowej oraz przepisy o postpowaniu egzekucyjnym w...Podmioty gospodarcze ubiegajce si o pozwolenie (licencj) na import powinny dostarczy: a) potwierdzenie pozwolenia na prowadzenie dziaalnoci gospodarczej...  Norma ISO 9001 - jest normą opisującą model systemu zapewnienia jakości , obejmujący największy zakres działalności firmy, a mianowicie :...działania w postaci ofensywy od ródeł Nilu a do jego uj cia oraz likwidacji baz angielskich w Nigerii, na Złotym Wybrze u, w Sierra Leone i w Gambii...zbiorowego, a demonstracje antyglobalizacyjne przykładem działań zbiorowych...m Poza powoywanymi ju wczeniej ustawami o RM oraz o dziaach administracji rzdowej, do waniejszych ustaw kreujcych kompetencje premiera naley zaliczy 1) ustaw z...Aby jakiekolwiek wydarzenie czy sytuacja mogo zaistnie na planie fizycznym,musi zosta poprzedzone przez myl, wprawione przez ni w ruch oraz...3 Podane daty odnosz si do powstania partii pod obecnymi nazwami i z obecn tosamoci, nie przytaczam wczeniejszych dziaa majcych na celu cilejsz wspprac, a...
 

Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.

3.
zastosowanie obiektów
Rysunek 8.3.
Obiekt klasy Zwierze
zawiera obiekt klasy
SposobRuchu
Rozwiązanie to może na pierwszy rzut oka wyglądać nadmiarowo.
To nie jest żadna
Jednak w praktyce oznacza ono jedynie tyle, że obiekt klasy
przesada
zawiera odpowiedni obiekt określający sposób jego poruszania się.
Jest więc analogiczne do rozwiązania, w którym zmienną wykorzystu-
jemy do przechowania informacji o liczbie nóg zwierzęcia (z tą różnicą, że w tym przypadku zmienna składowa reprezentuje różnicę w zachowaniu, a nie w liczbie).
Może jedynie wydawać się, że oba te rozwiązania się różnią, choćby na podstawie różnic w diagramach przedstawionych na rysunkach 8.3 i 8.4.
Rysunek 8.4.
Obiekt zawierający
atrybuty
Wielu projektantów uważa, że pomiędzy zawieraniem przez obiekt
Porównanie
innego obiektu, a zawieraniem przez obiekt atrybutów istnieje różnica.
obu rozwiązań
Jednak mimo że atrybuty są zmiennymi typów prostych (na przykład
, ) i nie przypominają obiektów, to są nimi z punktu
widzenia projektowania obiektowego. Pamiętajmy, że w programowaniu obiektowym wszystko stanowi obiekt (nawet podstawowe typy danych, których zachowanie okre-
śla arytmetyka). Specyficzna składnia posługiwania się tymi obiektami (na przykład
odpowiadająca ) ukrywa jedynie fakt, iż są to obiekty o określonym za-
chowaniu.
124
Część III ♦ Wzorce projektowe
W ten sposób rozwiązanie zastosowane w przypadku zmienności atrybutów i rozwiązanie
w przypadku zmienności zachowania okazują się do siebie podobne. Najłatwiej będzie
to pokazać na przykładzie. Załóżmy, że opracować muszę system obsługi punktu sprze-
daży. Kluczowy element tego systemu stanowić będzie faktura. Na fakturze tej znajdzie się całkowita wartość zakupu. Początkowo dla jej reprezentacji mógłbym użyć typu prostego . Jeśli jednak system będzie musiał wystawiać faktury w różnych walu-
tach, to szybko pojawi się problem odpowiedniej konwersji. Dlatego też zdecyduję się raczej utworzyć klasę , która przechowywać będzie informacje o kwocie i jej
walucie. Tak więc suma na fakturze będzie teraz manifestacją obiektu klasy .
Choć może wydawać się na początku, że jedynym zadaniem obiektu klasy jest
przechowanie odpowiedniej informacji, to jednak szybko okaże się, że zgodnie z zasadą odpowiedzialności obiekty tej klasy muszą posiadać także metody służące konwersji
pomiędzy różnymi walutami. Jak się okazuje, zadanie konwersji nie sprowadza się tyl-
ko do przechowania w obiekcie kolejnej informacji (o aktualnym przeliczniku walut).
Komplikację wprowadzić może na przykład konieczność dokonywania konwersji po-między walutami na podstawie ich kursów pochodzących z przeszłości. W takim przy-
padku atrybut można by zastąpić klasą ! . Dodawanie zachowań do klasy
lub ! dodaje je także do klasy "# , która zależy od umieszczonych w niej
obiektów (a zatem także i obiektów ! ). Niemniej jednak takie rozwiązanie
ani nie powoduje zwiększenia stopnia złożoności klasy "# , ani nie wymaga
wprowadzania w niej jakichkolwiek zmian.
Strategię polegającą na uzyskiwaniu określonego zachowania obiektu w zależności od
rodzaju zawieranego obiektu zademonstruję omawiając kilka następnych wzorców
projektowych.
Analiza wspólności i zmienności
a klasy abstrakcyjne
Książka Copliena omawiająca problem analizy wspólności i zmienności,
Analiza wspólności
pokazuje, jak odnajdywać w dziedzinie problemu czynniki zmienne
i zmienności
oraz elementy wspólne: „Określ, gdzie („analiza wspólności”) oraz
jak („analiza zmienności”) elementy się od siebie różnią”.
Coplien stwierdza, iż: „Analiza wspólności polega na poszukiwaniu
Analiza wspólności
wspólnych elementów, które pozwalają zrozumieć, na czym polega
podobieństwo członków tej samej rodziny”4. Pod pojęciem „człon-
ków rodziny” Coplien rozumie elementy, które są ze sobą powiązane ze względu na