1 Nadstruktura języka UML w wersji 2.2Część II Modelowanie struktury – klasy (pakiet UML::Classes)
2 Pakiet UML::Classes – struktura
3 Pakiet UML::Classes::KernelZależności od pakietów infrastruktury
4 Pakiet Kernel – diagram bazowy
5 Pakiet Kernel – diagram przestrzeni nazew-niczych
6 Pakiet Kernel – diagram krotności
7 Pakiet Kernel – diagram wyrażeń
8 Pakiet Kernel – diagram instancji
9 Pakiet Kernel – diagram ograniczeń
10 Pakiet Kernel – diagram klasyfikatorów
11 Pakiet Kernel – diagram klasyfikatorów – dodatkowe atrybuty i powiązaniaRedefinableElement::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
12 Pakiet Kernel – diagram cech
13 Pakiet Kernel – diagram cech – dodatkowe atrybuty i powiązaniaFeature::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
14 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
15 Pakiet Kernel – diagram operacji
16 Pakiet Kernel – diagram klas
17 Pakiet Kernel – diagram klas – dodatkowe atrybuty i powiązaniaClass::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
18 Notacja powiązań – dodatkowe elementyJawna 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}
19 Pakiet Kernel – diagram typów danych
20 Pakiet Kernel – diagram pakietów
21 Standardowe stereotypy klasyfikatorów<
22 Standardowe stereotypy klas<
23 Standardowe stereotypy klas (c.d.)<
24 Standardowe stereotypy pakietów<
25 Standardowe stereotypy cech czynnościowych<
26 Pakiet UML::Classes::Dependencies
27 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
28 Notacja zależności
29 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
30 Standardowe stereotypy związku użycia<
31 Metaklasa AbstractionAbstrakcja 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 <
32 Standardowe stereotypy związku abstrakcji<
33 Metaklasa RealizationRealizacja jest specjalizowanym związkiem abstrakcji pomiędzy specyfikacją (dostawca) a jej implementacją (klient)
34 Metaklasa SubstitutionPodstawienie 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.)
35 Notacja podstawienia
36 Pakiet UML::Classes::Interfaces
37 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)
38 Metaklasa Interface – ograniczenieself.feature->forAll(visibility = VisibilityKind::public)
39 Metaklasy Interface i InterfaceRealizationInterfejs – 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
40 Interfejsy – notacja
41 Interfejsy – przykład definicji protokołu
42 Pakiet UML::Classes::AssociationClasses
43 Kwalifikatory powiązań – metaklasa AssociationClasses::PropertyWł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..*
44 Notacja powiązań kwalifikowanych
45 Klasy powiązań – metaklasa AssociationClasses::AssociationClassElement 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
46 Notacja klas powiązań
47 Pakiet UML::Classes::PowerTypes
48 Zbiór uogólnień – metaklasa PowerTypes::GeneralizationSetDefiniuje 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ń
49 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
50 Notacja zbiorów uogólnień
51 Notacja atrybutów zbioru ogólnień
52 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ą
53 Typ potęgowy – przykład
54 Podstawowe diagramy strukturyDiagramy klas Diagramy pakietów Diagramy obiektów
55 Typowa zawartość diagramów klasWęzły Klasa Interfejs Krawędzie Powiązanie Agregacja Kompozycja Uogólnienie Zależność Realizacja (w tym realizacja interfejsu)
56 Typowa zawartość diagramów pakietówWęzły Pakiet Krawędzie Zależność Import pakietowy Scalenie pakietów
57 Typowa zawartość diagramów obiektówWęzły Specyfikacja instancji (klasy) Krawędzie Wiązanie (specyfikacja instancji powiązania)