Projektowanie obiektowe

Slides:



Advertisements
Podobne prezentacje
I część 1.
Advertisements

Związki w UML.
Standardowa biblioteka języka C++
Modelowanie przypadków użycia
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania
Wzorce.
Zaawansowane metody programowania – Wykład V
WYKŁAD 6 ATOM WODORU W MECHANICE KWANTOWEJ (równanie Schrődingera dla atomu wodoru, separacja zmiennych, stan podstawowy 1s, stany wzbudzone 2s i 2p,
Ludwik Antal - Numeryczna analiza pól elektromagnetycznych –W10
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
PROGRAMOWANIE STRUKTURALNE
1 mgr inż. Sylwester Laskowski Opiekun Naukowy: prof. dr hab. inż. Andrzej P. Wierzbicki.
Sposoby obejścia dziedziczenia
Ksantypa2: Architektura
WIELOMIANY HARALD KAJZER ZST NR 2 HARALD KAJZER ZST NR 2.
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów Command Pattern.
Wykład 2: Upraszczanie, optymalizacja i implikacja
Wzorce projektowe w J2EE
Java – programowanie obiektowe
Projektowanie i programowanie obiektowe II - Wykład IV
Projektowanie i programowanie obiektowe II - Wykład II
Praca Inżynierska „Analiza i projekt aplikacji informatycznej do wspomagania wybranych zadań ośrodków sportowych” Dyplomant: Marcin Iwanicki Promotor:
UKŁADY SZEREGOWO-RÓWNOLEGŁE
Przykładowe zastosowania równania Bernoulliego i równania ciągłości przepływu 1. Pomiar ciśnienia Oznaczając S - punkt spiętrzenia (stagnacji) strugi v=0,
Projektowanie dynamiki - diagramy interakcji
Wykonawcy:Magdalena Bęczkowska Łukasz Maliszewski Piotr Kwiatek Piotr Litwiniuk Paweł Głębocki.
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
Podstawy programowania
Technika Mikroprocesorowa 1
Projektowanie Stron WWW
Instytut Tele- i Radiotechniczny WARSZAWA
Projektowanie obiektowe
Wyrażenia algebraiczne
Aplikacja do analizy polimorfizmów SNP wykorzystywanych w genomice klinicznej Szymon Stawicki.
Obserwatory zredukowane
ŻYWE JĘZYKI PROGRAMOWANIA LIVING IT UP WITH A LIVE PROGRAMMING LANGUAGE Sean McDirmid Ecole Polytechnique Fédérale de Lausanne (EPFL)
Analiza wpływu regulatora na jakość regulacji (1)
Analiza wpływu regulatora na jakość regulacji
WPROWADZENIE W ŚWIAT OBIEKTÓW
Projektowanie obiektowe
Projektowanie obiektowe
Projektowanie obiektowe
Projektowanie obiektowe
Podsumowanie metodologii OMT
Programowanie obiektowe – język C++
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Modelowanie obiektowe Diagramy UML – diagram przypadków użycia
-17 Oczekiwania gospodarcze – Europa Wrzesień 2013 Wskaźnik > +20 Wskaźnik 0 a +20 Wskaźnik 0 a -20 Wskaźnik < -20 Unia Europejska ogółem: +6 Wskaźnik.
Modelowanie obiektowe Diagramy klas
Programowanie w języku C++
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Model obiektowy bazy danych
Wzorce oprogramowania
Diagram klas Kluczowymi elementami są: klasy (class)
Kalendarz 2020.
Instrukcje wyboru.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Zakres Wzorce projektowe ( -Adapter (str , wykład wzorce projektowe.
Zakres Wzorce projektowe - kreacyjne -Factory Method -Abstract Factory.
Projektowanie bazy danych z użyciem diagramów UML Obiektowe projektowanie relacyjnej bazy danych Paweł Jarecki.
Paweł Starzyk Obiektowe metody projektowania systemów
Wzorce Projektowe w JAVA
Programowanie Zaawansowane
Podstawy programowania
Struktura systemu operacyjnego
Dokumentacja programu komputerowego i etapy tworzenia programów.
Visual Basic przygotował Michał Miłek Visual Basic – język programowania wysokiego poziomu i narzędzie programistyczne firmy Microsoft. Składnia jest oparta.
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.
Programowanie Obiektowe – Wykład 6
Zapis prezentacji:

Projektowanie obiektowe Projektowanie obiektowe Wzorce projektowe Gang of Four Behawioralne wzorce projektowe (Wzorce operacji) 1 dr inż. Radosław Adamus dr inż. Radosław Adamus 1

Projektowanie obiektowe Roadmap Template method State Strategy Command Interpreter 2 dr inż. Radosław Adamus dr inż. Radosław Adamus 2

Projektowanie obiektowe Wzorce behawioralne Wzorce operacji wzorce behawioralne umożliwiają organizację, zarządzanie i łączenie zachowań. wzorce operacji (template method, state, strategy, command, interpreter) dotyczą głównie sytuacji, gdy w projekcie potrzeba wielu metod zazwyczaj z identyczną sygnaturą. 3 dr inż. Radosław Adamus dr inż. Radosław Adamus 3

Projektowanie obiektowe Pojęcia algorytm … operacja … metoda … sygnatura … Metoda jest implementacją operacji. (inaczej: implementacja operacji jest zwana metodą) Sygnatura metody to nazwa metody wraz z typami parametrów. Typ wartości zwracanej przez metodę nie stanowi części jej sygnatury. 4 dr inż. Radosław Adamus dr inż. Radosław Adamus 4

Projektowanie obiektowe Template Method Zaimplementowanie algorytmu (w postaci metody) umożliwiając „opóźnienie” kilku kroków jego wykonania tak, aby klasy podrzędne mogły je ponownie zdefiniować. Wzorzec operacji Wzorzec behawioralny 5 dr inż. Radosław Adamus dr inż. Radosław Adamus 5

Projektowanie obiektowe Template Method – problem Dwa odmienne komponenty mają znaczące podobieństwa, ale nie korzystają z ponownego użycia ani wspólnego interfejsu ani implementacji. Jeżeli zmiana wspólnej części staje się konieczna, to niepotrzebnie dublowana jest praca. 6 dr inż. Radosław Adamus dr inż. Radosław Adamus 6

Projektowanie obiektowe Template Method – rozwiązanie Daj możliwość skonfigurowania kroku algorytmu. Określany w klasie bazowej krok algorytmu zostawiamy do zaimplementowania w klasach pochodnych. 7 dr inż. Radosław Adamus dr inż. Radosław Adamus 7

Projektowanie obiektowe Template Method – diagram klas 8 dr inż. Radosław Adamus dr inż. Radosław Adamus 8

Projektowanie obiektowe Template Method – przykład The Template Method defines a skeleton of an algorithm in an operation, and defers some steps to subclasses. Home builders use the Template Method when developing a new subdivision. A typical subdivision consists of a limited number of floor plans with different variations available for each. Within a floor plan, the foundation, framing, plumbing, and wiring will be identical for each house. Variation is introduced in the later stages of construction to produce a wider variety of models. [Michael Duell, "Non-software examples of software design patterns", Object Magazine, Jul 97, p54] 9 dr inż. Radosław Adamus dr inż. Radosław Adamus 9

Projektowanie obiektowe Template Method – konsekwencje Programista piszący podklasę abstrakcyjnej klasy szablonu jest zmuszony nadpisać te metody, których implementacja jest konieczna, żeby uzupełnić logikę nadklasy. Dobrze skonstruowana klasa szablonu ma strukturę, która dostarcza programiście wskazówki dotyczące podstawowej struktury jej podklas 10 dr inż. Radosław Adamus dr inż. Radosław Adamus 10

Projektowanie obiektowe State Rozdystrybuowanie operacji na kilka klas w taki sposób, żeby każda klasa reprezentowała różny stan. Wzorzec operacji Wzorzec behawioralny 11 dr inż. Radosław Adamus dr inż. Radosław Adamus 11

Projektowanie obiektowe State - problem Zachowanie jednolitego obiektu jest zależne od jego stanu. Konieczna jest zmiana jego zachowania w czasie wykonania w zależności od bieżącego stanu. Aplikacja jest określona przez rozległe i liczne instrukcje warunkowe (if, switch, etc.), które kierunkują przepływ sterowania w zależności od stanu aplikacji. 12 dr inż. Radosław Adamus dr inż. Radosław Adamus 12

Projektowanie obiektowe State - rozwiązanie Struktura osłona/delegacja: osłona przekazuje wskaźnik do siebie („this”), delegacja współpracuje z osłoną. 13 dr inż. Radosław Adamus dr inż. Radosław Adamus 13

Projektowanie obiektowe State – diagram klas Edytor linuxowy VIM: ESC - przejście ze stanu Insert do CommandKey : - przejście ze stanu CommandKey do CommandLine itd. Przykładowy fragment kodu metody handleKey() dla stanu Insert odpowiadający theKey ESC: editor.setMode(commandKey); 14 dr inż. Radosław Adamus dr inż. Radosław Adamus 14

Projektowanie obiektowe State – przykład The State pattern allows an object to change its behavior when its internal state changes. This pattern can be observed in a vending machine. Vending machines have states based on the inventory, amount of currency deposited, the ability to make change, the item selected, etc. When currency is deposited and a selection is made, a vending machine will either deliver a product and no change, deliver a product and change, deliver no product due to insufficient currency on deposit, or deliver no product due to inventory depletion. [Michael Duell, "Non-software examples of software design patterns", Object Magazine, Jul 97, p54] 15 dr inż. Radosław Adamus dr inż. Radosław Adamus 15

Projektowanie obiektowe State - konsekwencje Kod dla każdego stanu znajduje się w osobnej klasie. Można dodawać niezależnie wiele nowych stanów. Dla klienta obiektów stanu, przejścia między stanami występują pomiędzy „atomowymi” operacjami. Unikamy stosowania instrukcji switch lub łańcuchów if-else w wielu metodach, przekierowując obsługę do kodu określonego w stanie. Nie unikamy jednak instrukcji switch lub łańcuchów if-else rozdzielających obsługę zdarzenia w ramach bieżącego stanu. 16 dr inż. Radosław Adamus dr inż. Radosław Adamus 16

Projektowanie obiektowe Zasada „otwarcia i zamknięcia” Open-closed principle [Bertrand Meyer, 1988]: „Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification” Zwiększenie potencjału ponownego użycia: raz zdefiniowana klasa może być wielokrotnie użyta dla stworzenia jej specjalizacji. Ewentualne modyfikacje zakończonego komponentu powinny dotyczyć poprawiania błędów. np. State: dodawanie nowych stanów (mechanizm rozszerzania) odbywa się w dużym stopniu niezależnie (brak konieczności modyfikowania istniejącej implementacji) Bridge Template Method Kolejny wzorzec Strategy u swoich podstaw ma tą właśnie zasadę. 17 dr inż. Radosław Adamus dr inż. Radosław Adamus 17

Projektowanie obiektowe Strategy Polega na hermetyzowaniu operacji umożliwiając stworzenie zamiennych implementacji. Wzorzec operacji Wzorzec behawioralny 18 dr inż. Radosław Adamus dr inż. Radosław Adamus 18

Projektowanie obiektowe Strategy - problem Złożoność kodu wynikająca z istnienia wielu strategii dotyczących określonego problemu. Potrzeba budowy oprogramowania zorientowanego-obiektowo ze zminimalizowaną liczbą zależności. 19 dr inż. Radosław Adamus dr inż. Radosław Adamus 19

Projektowanie obiektowe Strategy - rozwiązanie Daj możliwość skonfigurowania wyboru algorytmu Struktura osłona/delegacja klient jest osłoną, obiekt algorytm jest delegacją. Dodanie poziomu pośredniego dla klienta (np. interfejsu). 20 dr inż. Radosław Adamus dr inż. Radosław Adamus 20

Projektowanie obiektowe Strategy – diagram klas 21 dr inż. Radosław Adamus dr inż. Radosław Adamus 21

Projektowanie obiektowe Strategy – przykład "A Strategy defines a set of algorithms that can be used interchangeably. Modes of transportation to an airport is an example of a Strategy. Several options exist such as driving one's own car, taking a taxi, an airport shuttle, a city bus, or a limousine service. For some airports, subways and helicopters are also available as a mode of transportation to the airport. Any of these modes of transportation will get a traveler to the airport, and they can be used interchangeably. The traveler must chose the Strategy based on tradeoffs between cost, convenience, and time." [Duell, p54] 22 dr inż. Radosław Adamus dr inż. Radosław Adamus 22

Projektowanie obiektowe Strategy - konsekwencje Zachowanie obiektów klienta może być określone za pomocą obiektów. Wzorzec upraszcza klasy klienta przez zwolnienie ich z odpowiedzialności wyboru zachowania lub implementacji alternatywnych zachowań. Upraszcza kod dla obiektów klienta poprzez eliminacje instrukcji if oraz switch. W niektórych przypadkach może zwiększyć szybkość obiektów klienta ponieważ nie potrzebują dokonywać wyboru zachowania. 23 dr inż. Radosław Adamus dr inż. Radosław Adamus 23

Projektowanie obiektowe Zależności między wzorcami Dokonuje się zmiany: w części algorytmu poprzez dziedziczenie – Template Method, całości algorytmu poprzez delegacje – Strategy. Modyfikowana jest logika: całej klasy – Template Method, indywidualnych obiektów – Strategy. 24 dr inż. Radosław Adamus dr inż. Radosław Adamus 24

Projektowanie obiektowe Wzorzec Strategy czy Template Method ? Comprator dostarcza strategie porównywania 25 dr inż. Radosław Adamus dr inż. Radosław Adamus 25

Projektowanie obiektowe Command Ma na celu hermetyzowanie wywołania metody w obiekcie. Umożliwia traktowanie „wywołania metody obiektu” jako pełnoprawnego obiektu (promocja). Wzorzec operacji Wzorzec behawioralny 26 dr inż. Radosław Adamus dr inż. Radosław Adamus 26

Projektowanie obiektowe Command - problem Potrzeba wydania żądania do obiektów bez żadnej wiedzy na temat: operacji, która jest żądana, lub odnośnie odbiorcy żądania. 27 dr inż. Radosław Adamus dr inż. Radosław Adamus 27

Projektowanie obiektowe Command - rozwiązanie Polecenie („Callback”) ma być zorientowane-obiektowo, czyli zdefiniuj klasę zawierającą: wskaźnik do obiektu, wskaźnik do funkcji, wszystkie potrzebne argumenty funkcji. Zadeklaruj metodę „execute”. Zaprojektuj polecenie, aby pełniło rolę „magicznego ciasteczka”, które hermetyzuje wywołanie metody. 28 dr inż. Radosław Adamus dr inż. Radosław Adamus 28

Projektowanie obiektowe Command – diagram klas 29 dr inż. Radosław Adamus dr inż. Radosław Adamus 29

Projektowanie obiektowe Command – przykład The Command pattern allows requests to be encapsulated as objects, thereby allowing clients to be parameterized with different requests. The "check" at a diner is an example of a Command pattern. The waiter or waitress takes an order or command from a customer and encapsulates that order by writing it on the check. The order is then queued for a short order cook. Note that the pad of "checks" used by each waiter is not dependent on the menu, and therefore they can support commands to cook many different items. [Michael Duell, "Non-software examples of software design patterns", Object Magazine, Jul 97, p54] 30 dr inż. Radosław Adamus dr inż. Radosław Adamus 30

Projektowanie obiektowe Command - konsekwencje Obiekt, który wywołuje polecenie, nie jest tym samym obiektem, który je wykonuje. Ta separacja umożliwia elastyczne zarządzanie poleceniami (np. kolejkowanie, grupowanie, delegowanie) Takie podejście umożliwia „nagrywanie” ciągu poleceń (np. makra) i powtarzanie ich później. Można zastosować do tego wzorzec composite. Dodawanie nowych poleceń jest uproszczone, gdyż nie zrywa się żadnych zależności. 31 dr inż. Radosław Adamus dr inż. Radosław Adamus 31

Projektowanie obiektowe Interpreter Rozdystrybuowanie operacji w taki sposób, żeby każda implementacja odnosiła się do innego typu kompozycji. Wzorzec operacji Wzorzec behawioralny 32 dr inż. Radosław Adamus dr inż. Radosław Adamus 32

Projektowanie obiektowe Interpreter - problem Pewna klasa problemów występuje wielokrotnie w dobrze określonej i dobrze zrozumianej domenie. Jeżeli domenę można opisać poprzez język, to można te problemy w prosty sposób rozwiązywać przez zastosowanie silnika interpretera. 33 dr inż. Radosław Adamus dr inż. Radosław Adamus 33

Projektowanie obiektowe Interpreter - rozwiązanie Zdefiniuj opis gramatyki języka interpretowalnego. Zbuduj kompozycje - agregacja 1 do wielu: „składa się” w górę hierarchii dziedziczenia. Zastosowanie rekursywnej kompozycji. 34 dr inż. Radosław Adamus dr inż. Radosław Adamus 34

Projektowanie obiektowe Interpreter – diagram klas Przykłady: Rzymski System Liczbowy, ONP - odwrotna notacja polska, SQL, Kompilacja, Języki skryptowe. Znaczenie kontekstu np.: przechowywanie zmiennych, działanie iteratorów (lub operatorów niealgebraicznych) np. foreach (x:tablicaLiczb) suma+=x; wynik działania prawej strony (suma+=x) zależy od wartości wyliczonej po lewej stronie. 35 dr inż. Radosław Adamus dr inż. Radosław Adamus 35

Projektowanie obiektowe Interpreter – przykład The Intepreter pattern defines a grammatical representation for a language and an interpreter to interpret the grammar. Musicians are examples of Interpreters. The pitch of a sound and its duration can be represented in musical notation on a staff. This notation provides the language of music. Musicians playing the music from the score are able to reproduce the original pitch and duration of each sound represented. [Michael Duell, "Non-software examples of software design patterns", Object Magazine, Jul 97, p54] Sama informacja o nutach jest niewystarczająca. Kontekstem interpretacji jest tempo, tonacja, itp. Muzyk interpretuje, a kontekstem (troche „naciągając”) może być instrument. 36 dr inż. Radosław Adamus dr inż. Radosław Adamus 36

Projektowanie obiektowe Interpreter - konsekwencje Elastyczność i ponowne użycie w różnych kontekstach. Rozwiązanie problemów zgodnie z tym wzorcem pogarsza wydajność, np. przez tworzenie wielu instancji obiektów dla prostych struktur (np. liczb). Alternatywne rozwiązania często wymagałyby mniejszej ilości kodu. 37 dr inż. Radosław Adamus dr inż. Radosław Adamus 37

Projektowanie obiektowe Zależności między wzorcami Drzewo składni Interpretera to Composite State może być użyty do definicji kontekstu Interpretera. State i Strategy są podobne, ale: state jest bardziej dynamiczny. Struktura wzorców State, Strategy, Bridge (i trochę Adapter) jest podobna – element uchwyt. 38 dr inż. Radosław Adamus dr inż. Radosław Adamus 38