Nadstruktura języka UML w wersji 2.2

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

C++ wykład 4 ( ) Przeciążanie operatorów.
Programowanie obiektowe
Związki w UML.
Modelowanie klas i obiektów
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania
Wzorce.
Sposoby obejścia dziedziczenia
Mapowanie dziedziczenia z UML do Java
Co UML może zrobić dla Twojego projektu?
Bartosz Walter Prowadzący: Bartosz Walter
Mapowanie różnych typów dziedziczenia do Javy
C++ wykład 2 ( ) Klasy i obiekty.
Inteligentne Systemy Informacyjne
Zasady zaliczenia Warunki uzyskania zaliczenia:
Pakiety i ATD 1 Definicja. Pakietem albo jednostką programową nazywamy grupę logicznie powiązanych elementów, które mogą być typami, podtypami, obiektami.
Typy prywatne 1 Typy prywatne W Adzie typy prywatne (private types) służą do bezpiecznego udostępniania danych zdefiniowanych w pakiecie, z którego korzysta.
DIAGRAMY KLAS i obiektów
Diagramy klas w języku UML
Wzorce projektowe w J2EE
Wstęp do programowania obiektowego
Projektowanie i programowanie obiektowe II - Wykład IV
Projektowanie i programowanie obiektowe II - Wykład II
Projektowanie - wprowadzenie
Projektowanie - klasy i związki
Wykład 4 Analiza i projektowanie obiektowe
Wykład 5 UML - Unified Modeling Language
Wykład 3 Analiza i projektowanie strukturalne
Unified Modeling Language graficzny język wizualizacji, specyfikowania, tworzenia i dokumentowania systemów informatycznych.
Nadstruktura języka UML w wersji 2.2 Część V Wdrożenie (pakiet UML::Deployments)
Infrastruktura języka UML w wersji 2.2
Infrastruktura języka UML w wersji 2.2
UML 2.x Robert Pająk.
MDA – Model Driven Architecture
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
OMT - Model obiektów, cz.3.
Związki w UML Do zrobienia jest: -Przerysować jak ktoś ma Visio te dwa diagramy tak żeby podmienić tylko nazwy a reszta Taka sama, -I dodać po jednym zdaniu.
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 UML – diagram przypadków użycia
Modelowanie obiektowe Diagramy sekwencji
Wprowadzenie do UML dr hab. inż. Kazimierz Subieta profesor PJWSTK.
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.
Interakcja człowiek – komputer Podstawy metod obiektowych mgr inż. Marek Malinowski Zakład Matematyki i Fizyki Wydz. BMiP PW Płock.
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Diagram klas Kluczowymi elementami są: klasy (class)
Proces tworzenia oprogramowania Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu.
Kurs języka C++ – wykład 4 ( )
Diagram klas Diagramy klas służą do obrazowania statycznych aspektów projektowanych systemów jako: Projekt struktury logicznej baz danych Projekt składników.
Infrastruktura języka UML w wersji 2.2 Część VI Pakiet Core::Constructs (diagramy: bazowy, przestrzeni nazewniczych, klasyfikatorów, wyrażeń, ograniczeń)
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Diagram obiektów Diagram obiektów ukazuje elementy i związki z diagramu klas w ustalonej chwili. Diagram obiektów jest grafem złożonym z wierzchołków i.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Projektowanie bazy danych z użyciem diagramów UML Obiektowe projektowanie relacyjnej bazy danych Paweł Jarecki.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Platforma .Net.
Programowanie Zaawansowane
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.
Asocjacja,Kompozycja,Agregacja
Inżynieria systemów informacyjnych
Programowanie Obiektowe – Wykład 2
PGO Interfejsy Michail Mokkas.
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

Nadstruktura języka UML w wersji 2.2 Część II Modelowanie struktury – klasy (pakiet UML::Classes)

Pakiet UML::Classes – struktura

Pakiet UML::Classes::Kernel Zależności od pakietów infrastruktury

Pakiet Kernel – diagram bazowy

Pakiet Kernel – diagram przestrzeni nazew-niczych

Pakiet Kernel – diagram krotności

Pakiet Kernel – diagram wyrażeń

Pakiet Kernel – diagram instancji

Pakiet Kernel – diagram ograniczeń

Pakiet Kernel – diagram klasyfikatorów

Pakiet Kernel – diagram klasyfikatorów – dodatkowe atrybuty i powiązania RedefinableElement::isLeaf – określa czy dana instancja rzeczywiście może być przedefiniowana true – brak możliwości przedefiniowania Domyślnie: false Generalization::isSubstitutable – określa czy klasyfikator specyficzny może być użyty w miejsce klasyfikatora ogólnego (domyślnie: true) Classifier::redefinedClassifier – klasyfikatory (zagnieżdżone) przedefiniowane przez bieżący klasyfikator UML::Classes::Kernel dodaje możliwość przedefiniowywania zagnieżdżonych klasyfikatorów

Pakiet Kernel – diagram cech

Pakiet Kernel – diagram cech – dodatkowe atrybuty i powiązania Feature::isStatic – określa czy dana cecha charakteryzuje instancje klasyfikatora (false – wartość domyślna), czy sam klasyfikator (true) StructuralFeature::isReadOnly – określa czy wartość cechy może być modyfikowana przez klienta false (domyślna) – może być modyfikowana true – nie może być modyfikowana Parameter::defaultValue – specyfikacja wartości domyślnej dla parametru Parameter::default staje się atrybutem pochodnym

Cechy statyczne Dana cecha nie może być statyczna w jednym kontekście, a niestatyczna w innym Specyfikacja UML dopuszcza dwojakie rozumienie cech statycznych Cecha statyczna ma tę samą wartość we wszystkich cechowanych klasyfikatorach (jak w C++/Java/C#) Cecha statyczna ma różne wartości w różnych klasyfikatorach, do jakich należy W standardowej notacji cechy statyczne są podkreślone

Pakiet Kernel – diagram operacji

Pakiet Kernel – diagram klas

Pakiet Kernel – diagram klas – dodatkowe atrybuty i powiązania Class::nestedClassifier – wskazuje na wszystkie klasyfikatory zdefiniowane wewnątrz klasy (zagnieżdżone) Property::defaultValue – specyfikacja wartości domyślnej właściwości Property::default jest atrybutem pochodnym Property::aggregation – określa rodzaj agregacji stosowany do danej właściwości AggregationKind::none – brak agregacji (domyślne) AggregationKind::shared – agregacja współdzielona AggregationKind::composite – agregacja całkowita (kompozycja) Property::isComposite jest atrybutem pochodnym

Notacja powiązań – dodatkowe elementy Jawna notacja własności, nawigowalności i rodzaju agregacji Górny diagram: agregacja współdzielona, oba końce należą do klasyfikatorów, koniec b jawnie nienawigowalny. Dolny diagram: agregacja całkowita, oba końce należą do klasyfikatorów, koniec b jawnie nawigowalny. Zamiast {ordered,nonunique} można pisać {sequence} albo {seq}

Pakiet Kernel – diagram typów danych

Pakiet Kernel – diagram pakietów

Standardowe stereotypy klasyfikatorów <<realization>> – klasyfikator (np. komponent) określający pewną dziedzinę obiektów, definiujący zarazem ich fizyczną implementację <<specification>> – klasyfikator określający pewną dziedzinę obiektów bez definiowania ich fizycznej implementacji Np. komponent zawierający tylko zapewniane interfejsy

Standardowe stereotypy klas <<auxiliary>> – pomocnicza klasa wspierająca inną bardziej fundamentalną, np. przez określenie drugorzędnej logiki albo przepływu sterowania Klasa wspierana może być określona jawnie jako klasa ogniskująca, albo niejawnie przy pomocy zależności <<focus>> – klasa ogniskująca, czyli określająca fundamentalną logikę lub przepływ sterowania dla jednej lub więcej pomocniczych klas wspierających

Standardowe stereotypy klas (c.d.) <<implementationClass>> – implementacja klasy w języku programowania, w którym instancja nie może mieć więcej niż jednej klasy (C++, Java) <<metaclass>> – klasa, której instancjami są klasy <<type>> – klasa opisująca pewną dziedzinę obiektów łącznie z operacjami na tych obiektach bez definiowania ich fizycznej implementacji <<utility>> – klasa bez instancji, opisująca zbiór atrybutów i operacji o zasięgu klasowym Instancja klasy (Class) w UML może mieć dowolnie wiele klas, może też je zmieniać dynamicznie. Obiekt może mieć co najwyżej jedną klasę implementacyjną, chociaż może być zgodny z wieloma typami.

Standardowe stereotypy pakietów <<framework>> – pakiet zawierający elementy modeli definiujące wielokrotnie używalną architekturę części lub całości systemu Typowo zawiera klasy, wzorce lub szablony <<modelLibrary>> – pakiet zawierający elementy modeli przeznaczone do wykorzystania w innych pakietach Często używane w połączeniu z profilami Profil zależy od biblioteki albo ją zawiera Biblioteka nie definiuje stereotypów ani wartości etykietowanych

Standardowe stereotypy cech czynnościowych <<create>> – oznacza, że dana cecha czynnościowa tworzy instancje klasyfikatora, do którego jest dołączona <<destroy>> – oznacza, że dana cecha czynnościowa usuwa instancje klasyfikatora, do którego jest dołączona

Pakiet UML::Classes::Dependencies

Metaklasa Dependency Zależność jest związkiem mówiącym, że element lub zbiór elementów modelu (client) wymaga innych elementów (supplier) do swojej specyfikacji lub implementacji Modyfikacja dostawcy (supplier) może mieć wpływ na elementy klienckie (client) Związek zależności nie ma żadnych implikacji w semantyce czasu wykonania modelu

Notacja zależności

Metaklasa Usage Użycie jest związkiem, w którym element wymaga innego elementu (lub zbioru elementów) do pełnej implementacji lub działania

Standardowe stereotypy związku użycia <<call>> – związek pomiędzy operacjami (również klasami) – wywołanie <<create>> – klasyfikator-klient tworzy instancje klasyfikatora-dostawcy <<instantiate>> – operacje klasyfikatora-klienta tworzą instancje klasyfikatora-dostawcy <<responsibility>> – kontrakt lub zobowiązanie jednego elementu wobec innego <<send>> – operacja-klient wysyła sygnał-dostawcę

Metaklasa Abstraction Abstrakcja jest związkiem łączącym dwa elementy (lub zbiory elementów) reprezentujące to samo pojęcie na różnych poziomach abstrakcji albo ukazane z różnych punktów widzenia W metamodelu istnieje odwzorowanie między dostawcą a klientem Formalne lub nieformalne Jedno- lub dwukierunkowe Notacja: symbol zależności ze słowem kluczowym <<abstraction>> (lub innym określonym przez stereotyp)

Standardowe stereotypy związku abstrakcji <<derive>> – klient może być wyliczony na podstawie dostawcy; odwzorowanie określa sposób wyliczenia <<refine>> – związek rozwinięcia (uszczegółowienia) łączący elementy modelu na różnych poziomach semantycznych (np. analiza i projektowanie); odwzorowanie określa szczegóły związku <<trace>> – związek śledzenia między elementami reprezentującymi to samo pojęcie w różnych modelach; używany głównie do śledzenia wymagań i zmian pomiędzy modelami Związek śledzenia bywa często dwukierunkowy

Metaklasa Realization Realizacja jest specjalizowanym związkiem abstrakcji pomiędzy specyfikacją (dostawca) a jej implementacją (klient)

Metaklasa Substitution Podstawienie jest związkiem między dwoma klasyfikatorami mówiącym, że substitutingClassifier wypełnia kontrakt określony przez klasyfikator contract Tym samym instancje substitutingClassifier mogą być w czasie wykonania podstawione w miejsce instancji klasyfikatora contract Nie jest to specjalizacja Nie implikuje dziedziczenia cech Może określać specjalne reguły podstawiania (np. implementacja tych samych interfejsów, zgodność portów, itp.)

Notacja podstawienia

Pakiet UML::Classes::Interfaces

Metaklasa Interface Interfejs – rodzaj klasyfikatora reprezentujący deklarację spójnego zbioru publicznych cech i zobowiązań Określa kontrakt, który musi być wypełniony przez każdą instancję klasyfikatora realizującego dany interfejs Zobowiązania nakładane przez kontrakt mogą być określone w postaci Ograniczeń (np. warunków wstępnych i końcowych) Specyfikacji protokołu (np. określenia dopuszczalnej kolejności wywołania operacji) Atrybuty i powiązania interfejsów są także jedynie zobowiązaniami (są abstrakcyjne)

Metaklasa Interface – ograniczenie self.feature->forAll(visibility = VisibilityKind::public)

Metaklasy Interface i InterfaceRealization Interfejs – jako deklaracja – nie ma własnych instancji Jest realizowany (implementowany) przez instancjonowalny klasyfikator Realizacja interfejsu oznacza, że klasyfikator dostarcza cech określonych przez interfejs i wszystkie interfejsy bazowe Interfejsy realizowane przez klasyfikator to jego interfejsy zapewniane Klasyfikator może też określić zbiór interfejsów wymaganych

Interfejsy – notacja

Interfejsy – przykład definicji protokołu

Pakiet UML::Classes::AssociationClasses

Kwalifikatory powiązań – metaklasa AssociationClasses::Property Właściwość, która jest końcem powiązania może mieć właściwości, które służą jako jej kwalifikatory Kwalifikator określa podział zbioru powiązanych instancji względem instancji na kwalifikowanym końcu Przy danym kwalifikowanym obiekcie i danej instancji kwalifikatora liczba obiektów na drugim końcu powiązania jest ograniczona przez deklarowaną krotność Jeśli dolne ograniczenie jest dodatnie (zwykle 1), to dla każdej instancji kwalifikatora musi być określony powiązany obiekt „Surowa” krotność powiązania kwalifikowanego wynosi (praktycznie zawsze) 0..*

Notacja powiązań kwalifikowanych

Klasy powiązań – metaklasa AssociationClasses::AssociationClass Element modelu o cechach zarówno klasy, jak i powiązania Deklaracja związku semantycznego między klasyfikatorami, który ma własne cechy (atrybuty, operacje) Dla konkretnej instancji klasy powiązania jest tylko po jednej instancji klasyfikatorów na jego końcach

Notacja klas powiązań

Pakiet UML::Classes::PowerTypes

Zbiór uogólnień – metaklasa PowerTypes::GeneralizationSet Definiuje szczególny zbiór instancji związków uogólnienia opisujący sposób, w jaki ogólny klasyfikator może być podzielony (na podzbiory) przy użyciu specyficznych podtypów Atrybut isCovering mówi czy dany podział stanowi pokrycie ogólnego klasyfikatora true (oznaczane jako {complete}) – tak false ({incomplete}) – nie, tzn. istnieją instancje klasyfikatora ogólnego nie będące instancjami żadnego klasyfikatora specyficznego z danego zbioru uogólnień

Zbiór uogólnień (c.d.) Atrybut isDisjoint mówi o tym, czy klasyfikatory specyficzne mają wspólne instancje true oznacza się {disjoint} false oznacza się {overlapping} Wartości domyślne to {incomplete, disjoint} Przyjmuje się następujące ograniczenie: generalization->collect(general)->asSet()->size() <= 1

Notacja zbiorów uogólnień

Notacja atrybutów zbioru ogólnień

Typy potęgowe Typ potęgowy to klasyfikator (na ogół klasa), którego instancje są podklasami innej klasy Typ potęgowy jest więc w szczególności metaklasą

Typ potęgowy – przykład

Podstawowe diagramy struktury Diagramy klas Diagramy pakietów Diagramy obiektów

Typowa zawartość diagramów klas Węzły Klasa Interfejs Krawędzie Powiązanie Agregacja Kompozycja Uogólnienie Zależność Realizacja (w tym realizacja interfejsu)

Typowa zawartość diagramów pakietów Węzły Pakiet Krawędzie Zależność Import pakietowy Scalenie pakietów

Typowa zawartość diagramów obiektów Węzły Specyfikacja instancji (klasy) Krawędzie Wiązanie (specyfikacja instancji powiązania)