Na podstawie książki OOSE, T. C.Lethbridge, R. Laganiere Efektywne tworzenie oprogramowania 2008/2009 Wykorzystanie wzorców.

Slides:



Advertisements
Podobne prezentacje
Projektowanie Aplikacji Komputerowych
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
Związki w UML.
Programowanie obiektowe
Programowanie obiektowe
Modelowanie klas i obiektów
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania
Wzorce.
Zaawansowane metody programowania – Wykład V
Generics w .NET 2.0 Łukasz Rzeszot.
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
Szablony (wzorce) Przykład 1: Szablon klasy -
Licznik template<class Count_Type> class Count { public:
25/08/ Języki programowania 1 Piotr Górczyński Obiekty i zdarzenia.
W ZORCE P ROJEKTOWE … czyli ktoś już rozwiązał Twoje problemy!
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów
Mapowanie różnych typów dziedziczenia do Javy
C++ wykład 5 ( ) Dziedziczenie.
C++ wykład 2 ( ) Klasy i obiekty.
Wzorce projektowe w J2EE

Projektowanie - wprowadzenie
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Projektowanie obiektowe
WPROWADZENIE W ŚWIAT OBIEKTÓW
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Wzorce slajdów, animacje, różne orientacje slajdów
Programowanie obiektowe
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Projektowanie obiektowe
XML – eXtensible Markup Language
Wybrane zagadnienia relacyjnych baz danych
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Modelowanie obiektowe Diagramy klas
Programowanie w języku C++
Kurs języka C++ – wykład 5 ( )
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Diagram klas Kluczowymi elementami są: klasy (class)
Diagram klas Diagramy klas służą do obrazowania statycznych aspektów projektowanych systemów jako: Projekt struktury logicznej baz danych Projekt składników.
Beata Sanakiewicz. Spis treści  Łączenie dokumentów Łączenie dokumentów  Mechanizm OLE Mechanizm OLE  Obiekt osadzony Obiekt osadzony  Obiekt połączony.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Obiektowe metody projektowania systemów Abstract Factory design pattern (aka. Kit)
Zakres Wzorce projektowe - kreacyjne -Factory Method -Abstract Factory.
Paweł Starzyk Obiektowe metody projektowania systemów
Wzorce Projektowe w JAVA
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Modelowanie Danych (ERD) – część 1 (Wspomaganie Modelowania danych)
Komunikacja pomiędzy luźno powiązanymi komponentami Mateusz Sionkowski.
Temat: Tworzenie bazy danych
Inżynieria oprogramowania Wzorce konstrukcyjne WWW: Jacek Matulewski Instytut Fizyki, UMK.
Programowanie Obiektowe – Wykład 6
WNIOSEK - definicja 1) TO, CO Z CZEGOŚ WYNIKA, WYNIK ROZUMOWANIA, KONKLUZJA; 2) TWIERDZENIE WYPROWADZONE Z INNYCH ZDAŃ UZNANYCH ZA PRAWDZIWE Słownik języka.
Wątki, programowanie współbieżne
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Autor: Łukasz Budrewicz
Projektowanie wspomagane komputerem
Programowanie Obiektowe – Wykład 2
PGO Interfejsy Michail Mokkas.
PGO - Projektowanie i implementacja pierwszych klas
Zapis prezentacji:

Na podstawie książki OOSE, T. C.Lethbridge, R. Laganiere Efektywne tworzenie oprogramowania 2008/2009 Wykorzystanie wzorców

2 Wprowadzenie do wzorców Powtarzające się aspekty projektowania są nazywane wzorcami. –Wzorzec jest opisem rozwiązania (ogólnego problemu) nadającego się do powtórnego wykorzystania w konkretnym kontekście –Wiele z nich jest systematycznie dokumentowanych do wykorzystania przez wszystkich twórców oprogramowania –Dobry wzorzec powinien Być maksymalnie ogólny Zawierać rozwiązanie wypróbowane we wskazanym kontekście

3 Opis wzorca Context: Ogólna sytuacja, w której stosuje się wzorzec Problem: 1 lub 2 krótkie zdania wskazujące na główne trudności Forces (siły, czynniki): Zagadnienia, które należy wziąć pod uwagę rozwiązując problem Solution (rozwiązanie): Rekomendowany sposób rozwiązania problem w danym kontekście. —‘aby zrównoważyć siły’ Antipatterns: (opcjonalnie podajemy antywzorce) Rozwiązania, które nie działają w tym kontekście (w innym mogą działać). Related patterns: (wzorce powi ą zane z danym) Wzorce podobne do tego wzorca. References: Kto rozwinął lub zainspirowawał wzorzec.

4 Wzorzec Abstraction-Occurrence –Context: Często w modelu dziedziny zauważamy zbiór powiązanych obiektów (occurrences - wystąpień). Elementy takiego zbioru dzielą wspólną informację –Ale równocześnie różnią się od siebie w znaczący sposób. –Problem: Jaki jest najlepszy sposób reprezentacji, w diagramie klas, takie zbioru wystąpień? – Forces: Chcemy reprezentować elementy takiego zbioru wystąpień bez dublowania wspólnej informacji.

5 Abstraction-Occurrence –Solution (rozwiązanie): TVSeries seriesName producer Episode number title storySynopsis ****** «Occurrence»«Abstraction» ****** Title name author LibraryItem barCodeNumber ****** isbn publicationDate libOfCongress

6 Abstraction-Occurrence Antywzorce:

7 Abstraction-Occurrence Wariant kwadratu ScheduledTrain liczba SpecificTrain data ** * * ScheduledLegSpecificLeg AktualnyCzasOdjazd * AktualnyCzasPrzyjazd rozkładCzasOdjazd rozkładCzasPrzyjazd Station początkowa docelowa **

8 Wzorzec General Hierarchy –Context: Obiekty w hierarchii obiektów mogą mieć jeden lub więcej obiektów powyżej w hierarchii (nadrzędnych) –i jeden lub więcej obiektów poniżej (podporządkowanych). Pewne obiekty nie mogą mieć żadnych elementów podporządkowanych –Problem: Jak reprezentować hierarchię, w której pewne obiekty nie mogą mieć elementów podporządkowanych? –Forces: Wymagany jest elastyczny sposób reprezentowania hierarchii –który zapobiega temu, aby pewne obiekty miały podporządkowane Wszystkie obiekty mają wiele wspólnych własności i operacji

9 General Hierarchy –Solution: «podporządkowuje» * «Node» «SuperiorNode»«NonSuperiorNode» * « kieruje» Manager Employee TechnicianSecretary 0..1 * «zawiera» Directory FileSystemItem File 0..1

10 General Hierarchy Antywzorzec: RockRecordingBluesRecordingClassicalRecordingJazzRecordingMusicVideoVideoRecodingAudioRecordingRecording

11 Wzorzec Player-Role –Context: rola jest szczególnym zbiorem własności połączonych z obiektem w określonym konkteście. obiekt może odgrywać różne role w różnych kontekstach. –Problem: Jak najlepiej zamodelować graczy i role, tak aby gracz mógł zmienić role lub mieć wiele ról?

12 Player-Role –Forces: jest możliwym poprawienie enkapsulacjii przez zebranie informacji związanej z każdą oddzielną rolą w klasie. chcemy zapobiec wielokrotnemu dziedziczeniu. instancja nie może zmienić klasy –Solution: «Player» «Role1»«Role2» «AbstractRole»

13 Player-Role Przykład 1:

14 Player-Role Przykład 2:

15 Player-Role Antywzorce: –Połączenie wszystkich własności i zachowań w pojedynczej klasie «Player» i nie korzystanie w ogóle z klas «Role». –Utworzenie ról jako podklas klasy «Player».

16 Wzorzec Delegation –Context: Projektujemy metodę w klasie Stwierdzamy, że inna klasa ma metodę, która dostarcza pożądaną usługę Dziedziczenie nie jest odpowiednie –np., ponieważ nie można zastosować reguły: „..jest.” –Problem: Jak można efektywnie wykorzystać metodę, która już istnieje w innej klasie? –Forces: Chcemy zoptymalizować koszty tworzenia oprogramowania

17 Delegation –Rozwiązanie: LinkedList addFirst addLast addAfter removeFirst removeLast delete isEmpty Stack push pop isEmpty «Delegate»«Delegator» delegatingMethod() { delegate.method(); } delegatingMethodmethod push() { list.addFirst(); }

18 Delegation Przykład:

19 Delegation Antywzorce –Nadużywanie generalizacji i dziedziczenie metody, która ma być powtórnie wykorzystana –Zamiast utworzenia pojedynczej metody w «Delegator», która nie robi nic poza wywołaniem metody w «Delegate występuje wiele różnych metod w «Delegator» wywołujących delegowaną metodę –Dostęp do klas nie sąsiadujących return specificFlight.regularFlight.flightNumber(); return getRegularFlight().flightNumber();

20 Wzorzec Immutable –Context: immutable obiekt, to obiekt którego stan nigdy się nie zmienia po utworzeniu –Problem: Jak utworzyć klasę, której instancje są immutable? –Forces: Nie może być „dziur”, które pozwalałyby na ‘nielegalną’ modyfikację obiektu immutable –Solution: Należy upewnić się, że konstruktor klasy, immutable class, jest jedynym miejscem, w którym wartości zmiennych instancyjnych są ustawiane lub modyfikowane. Metody instancyjne nie mogą mieć efektów ubocznych. Jeśli potrzebna jest metoda, która modyfikowałaby zmienną instancyjną, to musi zwrócić nową instancję klasy.

21 Wzorzec Read-only Interface –Context: Chcemy czasem, aby szczególne uprzywilejowane klasy mogły modyfikować atrybuty obiektów, które w przeciwnym razie (dla innych) są immutable –Problem: Jak utworzyć sytuację, w której pewne klasy widzą daną klasę, jako tylko do odczytu, podczas gdy inne mogą ją modyfikować? –Forces: Restrykcyjny dostęp przez wykorzystanie słów kluczowych public, protected and private nie jest adekwatny Utworzenie dostępu public powoduje, że będzie publiczna do czytania i pisania

22 Read-only Interface –Rozwiązanie: «UnprivilegedClass» ****** «Mutator» «Mutable» attribute «private» getAttribute setAttribute «interface» «ReadOnlyInterface» getAttribute *****

23 Read-only Interface Przykład: Mutableperson firstName lastName setFirstName setLastName getName «interface» Person getName

24 Read-only Interface Antywzorce: –Utworzenie klasy, read-only class, jako podklasy klasy «Mutable» –Nadpisanie wszystkich metod, które modyfikują własności Tak, że wyrzucają wyjątki

25 Materiały z LAN Każdy przynosi na następny wykład: – wydrukowane (tak, aby to było czytelne) zawartości plików (rozwiązań) z: zestawu 3 oraz z zestawu 5 (ew. skorygowanego) lub zestawu 7