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