18
UML [ Unified Modeling Language ] W najnowszej wersji (2.4.x) języka UML wyróżnia się 13 diagramów głównych oraz 4 abstrakcyjne. Gdyby ktoś zaczepił Was w ciemnej alejce i szepnął „Psyt, chcecie zobaczyć diagram UML?” to prawdopodobnie chciałby Wam pokazać diagram klas. UML – język formalny służący do opisu świata obiektów w analizie obiektowej oraz programowaniu obiektowym. Twórcami języka UML są Grady Booch, James Rumbaugh i Ivar Jacobson (X 1995) Nasz cel: używanie graficznej reprezentacji UML do przestawiania tego, co projektujemy, bez wnikania w zbytnie szczegóły formalne UML-a.

UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

Embed Size (px)

Citation preview

Page 1: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ Unified Modeling Language ]

W najnowszej wersji (2.4.x) języka UML wyróżnia się 13 diagramów głównych oraz 4 abstrakcyjne.

Gdyby ktoś zaczepił Was w ciemnej alejce i szepnął –„Psyt, chcecie zobaczyćdiagram UML?” – to prawdopodobnie chciałby Wam pokazać diagram klas.

UML – język formalny służącydo opisu świata obiektów w analizie obiektowej orazprogramowaniu obiektowym.

Twórcami języka UML są Grady Booch, James Rumbaugh i Ivar Jacobson (X 1995)

Nasz cel: używanie graficznej reprezentacji UML do przestawianiatego, co projektujemy, bez wnikaniaw zbytnie szczegóły formalne UML-a.

Page 2: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ drzewo diagramów ] • UML to nie metodologiaprojektowania i tworzeniasystemów• UML jest intensywnie rozwijany (obecnie Object Managment Group)• UML jest standardem notacji, warto go poznać

Use Case Diagrampzedstawienie przypadków użycia (wybranego fragmentu funkcjonowania systemu), aktorów oraz związków między nimi

Page 3: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ drzewo diagramów ]

Class Diagrampzedstawienie statycznych elementów danej dziedziny (ludzi, rzeczy, danych) oraz związków między nimi (czyli statycznej struktury systemu)

Sequence Diagramrodzaj diagramu interakcji opisującym oddziaływania między instancjami klasyfikatorów systemu w postaci sekwencji komunikatów wymienianych między nimi (dynamiczny opis konkretnego przypadku użycia)

State Machine Diagramodzwierciedlenie dyskretnego, skokowego zachowania się skończonych systemów stan-przejście (obiekty użytkowane w systemie przechodzą w trakcie swojego cyklu życia przez szereg kolejnych stanów)

Page 4: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ drzewo diagramów ] Activity Diagramprzedstawienie sekwencyjnych i (lub) współbieżnych przepływów sterowania oraz danych pomiędzy uporządkowanymi ciągami czynności, akcji i obiektów

Deployment Diagramrodzaj diagramu wdrożeniowego, który przedstawia fizyczną lub logiczną strukturę systemu (w konkretnych modułach sprzętowych) wraz ze ścieżkami interakcji zachodzącymi pomiędzy nimi

Component Diagramrodzaj diagramu wdrożeniowego, który wskazuje organizację i zależności między komponentami (komponent -hermetyczny, wymienny moduł oprogramowania systemu, realizujący określone jego usługi za pośrednictwem interfejsów

Page 5: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ prezentacja diagramów ]

nagłówek

• każdy diagram może być prezentowany w postaci obramowanej (oto przykładowa ramka) lub nieobramowanej

• nagłówek może się składać z[ <rodzaj> ] < nazwa> [ <parametry> ]

• rodzaj - wyróżnik diagramu, nie jest ujednolicony, można korzystaćze skrótów np. cld - class diagram, ud - use case diagram, sm - state machine diagram, ad - activity diagram,cod - component diagram, dd - deployment diagram

• nazwa (obowiązkowa) - sygnatura opisująca zawartość diagramu• parametry - kluczowe dla danego diagramu np. nazwy instancji

klasyfikatorów (…nazwy obiektów danego typu), wartości zwrotne,operatory interakcji

( merytoryczna zawartość diagramu )

Page 6: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ diagramy klas ]

diagram klas – graficzne przedstawienie statycznych, deklaratywnych elementów dziedziny przedmiotowej oraz związków między nimi

klasa – uogólnienie zbioru obiektów, które mają takie same atrybuty, operacje, związki i znaczenie, klasa na diagramie złożona jest z trzech elementów: nazwy, atrybutów i metod

- accountBalance

+ deposit( )+ withdraw( )

Bank Account Class wymagana jest tylko nazwa

atrybutyspecyfikator-dostępu nazwa: typ krotność =wartość domyślna {opis-cechy}

specyfikator-dostępu+ publiczny− prywatny# chroniony~ pakiet

przykład−nazwisko: String[1] = "default" {readOnly}

metodyspecyfikator-dostępu nazwa(lista parametrów): wyrażenie-typu-wyniku {opis-cechy}

parametry na liście, podobnie jak atrybuty:kierunek nazwa: typ = wartość-domyślnakierunek in – wejściowy, out - wyjściowy

Page 7: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ diagramy klas – rodzaje związków ]klasy obiektów – podobnie jak inne elementy UML powiązane są różnego rodzaju związkami• asocjacje• uogólnienia• zależności• realizacje

binarne, n-arnemożna sprecyzować za pomocą• nazwy• ról powiązanych klas• nawigacji• liczebności• agregacji

Menedżer Projekt

Repertuar SalaKinowa

RezerwacjaMiejsc

SystemDźwiękowy

Page 8: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ diagramy klas – asocjacja ]

Rozliczenie KorespondencjaElektroniczna

krotność

jest dokonywana ►

nazwa asocjacji

Klient

specyfikacja roli

Repertuar SeansFilmowyzestawienie pozycja

nawigacja

Klient Rachunek

1

n – dokładnie n (n>1)1..n – od 1 do n0..n – od 0 do nn..m – od n do m (m>1)n..* – n lub więcejn, m, o..p, q – złożona

1 – dokładnie jeden1..* – jeden lub wiele0..1 – zero lub jeden* – wiele0..* – zero lub wiele

domyślnie nawigacja dwukierunkowa

wskazanie kierunku nawigacji zwiększaefektywność komunikowania się

Page 9: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ diagramy klas – agregacja jako forma asocjacji ]

producentmodel

siedzenia

agregacja całkowita (kompozycja)

Silnik

Siedzenie *

wskazuje na możliwośćnawigowania

wskazuje na agregacjęprzez referencje

nazwaplanyliczba muzyków

nazwiskoinstrument

agregacja częściowa

Orkiestra Wykonawca1..* 1..*

Samolot

2..4

Kokpit1 1

engines[4]: Silnikseats[400]: Siedzeniecockpit: Kokpit

Samolot

Page 10: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ diagramy klas – przykład ]

Klient AparatTelefonicznyKorespondencja

Pozycja SalonFirmowyFaktura

KartaSIM TaryfaBilling0..* ◄ jest przypisana 1

nośnikpamięci

właściciel 1

1..*

produkt

numertelefonu

▲użytkuje

właściciel

0 kupuje ► 1..*

produkt

punktsprzedaży

▲oferuje

10..*

1..*1 zawiera ► 1..*

cennikpołączeń

zestawienie przedmiotsprzedaży

* ◄ otrzymuje 1

właścicielformakomunikacji

▲zawiera

zawiera▼

0..*

0..*

1

1zbiór

dokumentów

rozliczenie

zestawieniepołączeń

zbiórdokumentów

Page 11: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ diagramy klas – klasy asocjacyjne, inne ]klasa asocjacyjna – umożliwia bardziej precyzyjny opis związku między klasami, służy do przedstawienia asocjacji w postaci klas, każdej asocjacji można przypisać jedną instancję tego rodzaju klasy

Uczestnik Aukcja

RezerwacjaMiejsc

Repertuar ProjekcjaSeansu

asocjacja kwalifikowana

jest sprzedającym ►

jest kupującym ►

asocjacja wielokrotna

artykuł SprzedającyLicytacja1..* 0..*

Page 12: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

UML [ diagramy klas – uogólnienia, klasy abstrakcyjne ]

{root}klasa abstrakcyjnazapisuje się kursywąklasa podstawowamożna oznaczyć {root}w odróżnieniu do pochodnychoznaczanych jako {leaf}

ograniczenia w uogólnieniu{complete} – zawiera pełen zestaw podklas dla danej klasy{incomplete} – zestaw podklas przypisanych danej klasie nie jest pełny (istniejewięcej klas specjalizowanych nie mających istotnego znaczenia w rozpatrywanymkontekście{disjoint} – domyślny rodzaj uogólnienia, podklasa w hierarchii jest rozdzielna tzn. posiada tylko jedną klasę bezpośrednio nadrzędną{overlapping} – określone klasy mogą mieć wspólne podklasy, zwykle oznaczato dziedziczenie wielokrotne

Page 13: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

Wzorce projektowe [ wstęp ]

Motywacje definiowania wzorców projektowych

Za twórcę uważany jest amerykański architekt Christopher AlexanderAlexander, C., Ishikawa, S., Silverstein, M., The Timeless Way of Building, New York: Oxford University Press, 1979.

Ocena, czy dana budowla jest piękna, jest nie tylko kwestią smaku i subiektywnego punktu widzenia. Podlega weryfikacji w oparciu o mierzalne, zdefiniowane wielkości. Tymi wielkościami są wzorce projektowe. Co jest obecne w dobrym projekcie, a czego nie ma w złym (i vice versa)? Jakość projektu jest rzeczą podlegającą obiektywnej analizie i ocenie, zatem powinniśmy potrafić zdefiniować co dany projekt czyni dobrym lub złym. Potrzeba zatem przeanalizować różnego rodzaju struktury rozwiązujące ten sam problem. Odnajdując w różnych projektach wspólne części stanowiące dobre rozwiązanie, możemy zdefiniować te wspólne części jako wzorce.

Wzorzec – rozwiązanie problemu w danym kontekście

Wzorzec zawsze ma nazwę i cel. Szukając właściwego wzorca należy wprost określić dany problem, sytuację do rozwiązania.Zaletą używania wzorców jest to, że można czerpać wprost z rozwiązania wypracowanego przez innych jako dobre (najlepsze) w danym zagadnieniu, unikając błędów.

• Zostały pomyślane jako zestaw sprawdzonych koncepcji architektonicznych• Dzięki nim każdy miał mieć możliwość zbudować swój własny dom• Wzorce Alexandra nie znalazły uznania wśród innych architektów

Page 14: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

Wzorce projektowe [ programowanie ]

Wzorce w programowaniu

Wprowadzono je do inżynierii oprogramowania w 1995 („Gang of Four” – „banda czworga” – E. Gamma, R. Helm, R. Johnson, J. Vlissides „Design Patterns: Elements of Reusable Object-Oriented Software”)

Czym są wzorce projektowe?• Rozwiązanie problemu w określony sposób• Opisuje problem który się stale powtarza• Stanowią abstrakcyjny opis zależności pomiędzy klasami• Znaczna ich część stanowi obszerna dokumentacja opisująca sposób użycia wzorca • Są łączone w celu rozwiązania bardziej złożonego problemu• Algorytmy nie są wzorcami projektowymi jako że rozwiązują problemy obliczeniowe, a

nie projektowe

KlasyfikacjaKonstrukcyjne - Strukturalne - Operacyjne

Page 15: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

Wzorce projektowe [ systematyka ]

„Każdy wzorzec opisuje problem, który ciągle na nowo pojawia się w naszym otoczeniu i opisuje rdzeń jego rozwiązania w taki sposób, że można go używać milion razy i nigdy w ten sam sposób.”

Nazwa wzorcaOdzwierciedla problem, rozwiązanie i konsekwencje danego wzorca

ProblemOpisuje zagadnienie i kontekst wystąpienia wzorca

RozwiązanieOpisuje elementy tworzące projekt, ich relacje, odpowiedzialności oraz współpracę

KonsekwencjeRezultaty zastosowania wzorca – korzyści i straty

Wzorce projektowe pomagają w realizacji zasady „open-closed” (sformułowanej przez Bertranda Meyera): moduły, metody i klasy powinny być otwarte na rozszerzenia, pozostając zarazem zamkniętymi na modyfikacje. Program należy tak projektować, żeby dało się powiększać jego funkcjonalność bez zmieniania programu (interfejsów).

Christopher Alexander

Page 16: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

Wzorce projektowe [ systematyka ]

PrzeznaczenieKonstrukcyjne(Creational)

Strukturalne(Structural)

Behawioralne(Behavioral)

Zakres Klasa Factory Method Adapter InterpreterTemplate Method

Obiekt Abstract Factory BuilderPrototype Singleton

Adapter BridgeCompositeDecorator FacadeProxy

Chain of ResponsibilityCommandIteratorMediatorMementoFlyweightObserverStateStrategyVisitor

Page 17: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

Wzorce projektowe [ observer – obserwator ]

Cel: obserwujemy stan jednego obiektu a gdy ten się zmieni, wysyła informację do wszystkich obiektów zarejestrowanych jako obserwatorzy w celu wywołania metody aktualizującej jeProblem: potrzebujemy zawiadomić zmienną ilość (listę) obiektów jeśli zaszło jakieś zdarzenie (zmiana stanu obserwowanego obiektu)Rozwiązanie: obserwatorzy delegują odpowiedzialność za monitorowanie zdarzenia do centralnej klasy SubjectImplementacja: obserwatorzy są na liście posiadanej przez klasę Subject i kiedy nastąpi zdarzenie, następuje iteracja po liście wszystkich obserwatorów (wskaźniki do nich) i wywołanie ich metody update()

Definicja GoF:Definiuje zależność wielu od jednego tak, że jeśli jeden obiekt zmienia stan, wszystkie zależne od niego są o tym poinformowane i odpowiednio zaktualizowane.

Page 18: UML [ Unified Modeling Language ]hades1.if.uj.edu.pl/cplusplus/phocadownload/CWICZENIA/...UML [ drzewo diagramów ] • UML to nie metodologia projektowania i tworzenia systemów •

Wzorce projektowe [ observer – przykład ]