Wykład 6

Transkrypt

Wykład 6
Wypożyczalnia VIDEO
Jest to program do obsługi wypożyczalni i wypożyczeń klientów. Głównym
zadaniem programu jest zarządzanie wypożyczeniami i drukowanie
potwierdzenia wypożyczenia oraz naliczenie punktów stałego klienta
Opłaty za wypożyczenie zależą od tego na jak długo film jest wypożyczony oraz
od rodzaju filmu (normalne, dziecięce, nowości) – każdy rodzaj ma swoją
cenę.
Punkty stałego klienta zależą od tego czy film jest nowością. Za wypożyczenie
normalnego filmu klient otrzymuje 1 punkt/1 dzień, za nowości 2 punkty/1
dzień.
Zaprojektuj i zaimplementuj system, który zrealizuje powyższe cele oraz
umożliwi: tworzenie klientów, tworzenie filmów, tworzenie wypożyczeń
oraz wydruk potwierdzenia określającego: tytuł, długość wypożyczenia,
rodzaj filmu, kwota, podsumowanie kwoty, oraz podsumowanie liczby
punktów stałego klienta.
Technologie obiektowe
VIDEO - modyfikacje
Modyfikacja 1
Potwierdzenie powinno być drukowane w formie standardowej
lub w formie HTML.
Modyfikacja 2
Nowy rodzaj filmu – western z inną ceną za wypożyczenie.
Modyfikacja 3
Zmiana sposobu naliczania punktów stałego klienta.
Za 1 dzień 5 punktów, za następne 1. Jeżeli nowość całość x2.
Technologie obiektowe
Video
Technologie obiektowe
Filmy - polimorfizm
Technologie obiektowe
Filmy - wzorzec
Technologie obiektowe
Filmy, punkty
Technologie obiektowe
Potwierdzenie - strategia
Technologie obiektowe
Potwierdzenie - template
Technologie obiektowe
Cel - problem
Stworzenie relacji jeden do wielu pomiędzy
obiektami
Zmiana stanu obiektu po stronie „jeden”
umożliwi automatyczne powiadomienie o niej
wszystkich zainteresowanych obiektów
Technologie obiektowe
Wzorzec - obserwator
Wzorzec składa się z dwóch ról – obiektu obserwowanego
(Subject) i obiektów obserwujących (Observer).
Obiekt Subject posiada metody pozwalające na podłączanie i
odłączanie obserwatorów
Każdy zainteresowany obiekt może się zarejestrować jako
obserwator
Subject posiada metodę, służącą do powiadamiania wszystkich
zarejestrowanych obserwatorów.
Każdy obserwator ma zaimplementowaną metodę
wykorzystywaną do powiadamiania obiektów o zmianie stanu
obiektu obserwowanego.
Technologie obiektowe
Observer
Technologie obiektowe
Observer - uczestnicy
Subject
- utrzymuje rejestr obiektów Observer
- umożliwia dołączanie i odłączanie obiektów Observer
Observer
- udostępnia interfejs do powiadamiania o zmianach
Concrete subject
- przechowuje stan istotny dla obiektów Concrete Observer
- powiadamia obiekty Concrete Observer
Concerete observer
- aktualizuje swój stan na podstawie powiadomienia
Technologie obiektowe
Observer
Luźniejsze powiązania pomiędzy obiektami
- obiekt Subject komunikuje się z innymi obiektami przez
interfejs Observer
- obiekty Subject i Observers mogą należeć do różnych warstw
abstrakcji
Programowe rozgłaszanie komunikatów
Spójność stanu pomiędzy obiektami Subject i Observers
Technologie obiektowe
Observer - skalowalność
push: Observers otrzymują kompletny stan obiektu Subject
- parametr metody Update() – pełna informacja o stanie
obiektu Subject
pull: Observers otrzymują powiadomienie i referencję do obiektu
Subject
- tylko referencja do obiektu Subject, dzieki której mogą
następnie odpytać go o szczegóły dotyczące zmiany.
- ten model jest znacznie bardziej skalowalny, szczególnie w
przypadku wywoływania w środowisku rozproszonym
Technologie obiektowe
Observer – przykład Totolotek
Technologie obiektowe
Adapter
Umożliwienie współpracy obiektów o
niezgodnych typach
Szczególnie istotną rolę odgrywa przy korzystaniu
z gotowych bibliotek o interfejsach
niezgodnych ze stosowanymi w aplikacji
Technologie obiektowe
Adapter
Struktura wzorca składa się z trzech podstawowych klas: Target,
Apaptee, Adapter.
Target
- interfejs oczekiwany przez klienta
Adaptee
- obiekt dostarczający żądanej funkcjonalności, ale niezgodny
Adapter
- implementuje typ Target i tłumaczy wywołania metody
należącej do typu Target poprzez wykonanie innej metody
(grupy metod) w klasie Adaptee
Technologie obiektowe
Adapater
Duża elastyczność
- pojedynczy adapter może współpracować z wieloma
obiektami Adaptee naraz
- Adapter może dodawać funkcjonalność do Adaptee
Kompozycja i dziedziczenie jako mechanizmy adaptacji.
Technologie obiektowe
Adapter - kompozycja
Technologie obiektowe
Adapter - dziedziczenie
Technologie obiektowe
Composite
Organizowanie obiektów w struktury drzewiaste
reprezentujące relacje całość-część
Jednolita obsługa pojedynczych obiektów i
złożonych struktur
Technologie obiektowe
Composite
Centralnym elementem wzorca jest interfejs Component, który
reprezentuje dowolny obiekt w strukturze drzewiastej.
Posiada on możliwość dodawania i usuwania swego obiektu
potomnego (także typu Component) oraz odwołania się do
wybranego potomka.
Zawiera także metodę Operation(), którą należy wykonać na
każdym węźle struktury.
Interfejs komponent posiada dwie implementacje – Leaf i
Composite.
Leaf – obiekty bez potomków
Composite – dowolny węzeł pośredni.
Technologie obiektowe
Composite
Każdy węzeł pośredni zarządza swoim poddrzewem,
którego jest korzeniem, dlatego metoda operation,
poza wywołanie operacji specyficznych dla danego
węzła, wywołuje swoje odpowiedniki w obiektach
potomnych.
Z punktu widzenia klienta – taka struktura umożliwa
zarządzanie całością za pomocą jednego obiektu.
Niepotrzebna jest wiedza o rozmiarze drzewa, ponieważ
wywołanie zostanie automatycznie przekazane do
wszystkich jego elementów.
Technologie obiektowe
Composite - elementy
Component
- deklaruje wspólny interfejs dla obiektów znajdujących się w strukturze
- implementuje wspólną funkcjonalność wszystkich obiektów
Leaf
- reprezentuje węzeł bez potomków
Composite
- reprezentuje węzeł z potomkami
- przechowuje referencje do potomków
- deleguje otrzymane polecenia do potomków
Technologie obiektowe
Composite
Technologie obiektowe
Cel
Zastąpienie obiektu docelowego tymczasowym
substytutem, który może pełnić trzy funkcje:
- odsunie w czasie moment utworzenia obiektu
- będzie kontrolował do niego dostępm
- pozwoli odwoływać się do obiektu zdalnego.
Z punktu widzenia klienta substytut powinien być
przezroczysty i nie może mieć wpływu na sposób
interakcji z obiektem docelowym
Technologie obiektowe
Proxy
Technologie obiektowe
Proxy
• Interfejs Subject – posiada wiele implementacji.
• Jedna z implementacji – RealSubject – obiekt docelowy –
posiadający funkcjonalność oczekiwaną przez klienta.
• Druga – obiekt proxy – klient zamiast do obiektu docelowego,
odwołuje się do obiektu Proxy, który deleguje żądanie do
niego, lub próbuje je obsługiwać
Technologie obiektowe
Proxy - rodzaje
•
Zdalny obiekt Proxy (remote proxy) jest lokalnym
reprezentantem obiektu znajdującego się w innej przestrzeni
adresowej.
•
•
•
Wirtualny obiekt Proxy pełni rolę zamiennika dla obiektu o
dużych wymaganiach systemowych (np. dużo pamięci)
•
•
Proxy przejmuje odpowiedzialność za zdalne wywołania metod poprzez sieć,
serializację parametrów i odebranie wyników.
Stosowany w większości środowisk przetwarzania rozproszonego (Corba, WCF)
Obiekt proxy obsługuje wszystkie zadania obiektu RealSubject, które
nie wymagają odwołań do tego obszaru pamięci
Ochronny obiekt Proxy udostępnia obiekt RealSubject tylko
uprawnionym obiektom.
•
Zajmuje się zabezpieczeniem dostępu do obiektu RealSubject. RealSubject
nigdu nie jest bezpośrednio dostępny dla klientów – w ich imieniu występuje
Proxy.
Technologie obiektowe

Podobne dokumenty