Zaawansowane metody programowania – Wykład V

1 Zaawansowane metody programowania – Wykład Vdr inż. Woj...
Author: Malina Kurzaj
0 downloads 2 Views

1 Zaawansowane metody programowania – Wykład Vdr inż. Wojciech Tarnawski

2 Plan wykładu: Wzorce projektoweAnaliza przykładowych projektów – część „interaktywna”

3 Pojęcie wzorca projektowegoWzorce projektowe „funkcjonują” w praktyce programistycznej od drugiej połowy lat 90. ubiegłego wieku (Design Patterns: Elements of Reusable Object-Oriented Software, E. Gamma, R. Helm, R. Johnson, J. Vlissides) W dziedzinie zwanej inżynierią oprogramowania stanowią abstrakcyjny opis zależności pomiędzy klasami ( pojęciami abstrakcyjnymi) W efekcie stosowania wzorców projektowych uzyskujemy pewną standaryzację kodu, tym samym czyniąc go bardziej zrozumiałym, efektywniejszym i mniej zawodnym

4 Klasyfikacja wzorców projektowychWzorce konstrukcyjne – do pozyskiwania obiektów zamiast bezpośredniego tworzenia obiektów klas (np. Dekorator, Budowniczy, Singleton) Wzorce strukturalne – pomagające łączyć obiekty w większe struktury udostępniając interfejs do ich obsługi (np. Adapter, Fasada) Wzorce czynnościowe – definiujące komunikację pomiędzy obiektami oraz kontrolujące przepływ danych w złożonej aplikacji (np. Obserwator,Strategia)

5 Wzorzec konstrukcyjny: BudowniczyWzorzec ten pozwala na rozdzielenie skomplikowanej struktury klasy od jej reprezentacji, dzięki czemu proces konstrukcji może tworzyć różne reprezentacje Podstawowe elementy wzorca: interfejs budowniczego do tworzenia obiektu (Builder) budowniczy konstruujący i łączący części produktu dostarczonego przez klasę, a także interfejs dostępu do budowanego produktu (Concrete Builder) kierownik konstruujący obiekt przez interfejs budowniczego (Director) konstruowany produkt (Product)

6 Wzorzec konstrukcyjny: SingletonSingleton to klasa, która może mieć tylko jedną instancję (obiekt) class Singleton { private Singleton() { } private static Singleton S; public static Singleton getInstance() if (S == null) S = new Singleton(); return S; } Singleton a = new Singleton(); Singleton b = Singleton.getInstance(); Singleton c = Singleton.getInstance();

7 Wzorzec strukturalny: AdapterZadaniem tego wzorca jest przetworzenie interfejsu danej klasy w inny interfejs, którego oczekuje Klient Adapter umożliwia współpracę klasom o niekompatybilnych interfejsach

8 Wzorzec strukturalny: FasadaWzorzec ten jest pomyślany jako środek dostępu do złożonego systemu prezentujący na zewnątrz uproszczony lub uporządkowany interfejs programistyczny. Wzorzec ten definiuje interfejs wyższego poziomu, sprawiający, że łatwiej jest używać podsystemów.

9 Dobrym przykładem zastosowania Fasady jest aplikacja bankomatowa – od strony urządzenia (bankomat) mamy ograniczony dostęp do systemu bankowego, obsługiwany przez odpowiednie metody Model Fasady jest dwuczęściowy interfejs zewnętrzny, który wie, który z podsystemów odpowiada za konkretne zadanie i wyśle we właściwe miejsce żądanie wykonania podsystemy, przejmujące jedynie zadanie zlecone przez interfejs zewnętrzny

10 Wzorzec czynnościowy: ObserwatorWzorzec obserwatora służy do powiadamiania wielu obiektów (obserwatorów) o zmianie w obiekcie – przedmiocie obserwacji