Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Infrastruktura języka UML w wersji 2.2
Część VII Pakiet Core::Constructs (diagramy: operacji, klas, typów danych, pakietów)
2
Diagram operacji
3
Metaklasa BehavioralFeature
Opiera się na definicji Abstractions::BehavioralFeatures::BehavioralFeature Dodaje możliwość zgłaszania wyjątków w trakcie wywołania
4
Typ wyliczeniowy ParameterDirectionKind
Definiuje literały używane do określenia kierunku przekazywania parametrów: in – parametr wejściowy inout – parametr wejściowo-wyjściowy out – parametr wyjściowy return – zwracana wartość
5
Metaklasa Parameter Scala definicje Basic::Parameter i Abstractions::BehavioralFeatures::Parameter Dodatkowo specjalizuje Constructs::MultiplicityElement zawiera specyfikację kierunku – domyślnie in daje możliwość określenia wartości domyślnej
6
Metaklasa Operation Operacja to cecha czynnościowa klasyfikatora określająca nazwę, typ, parametry i ograniczenia dla wywołania powiązanego zachowania Atrybuty pochodne /isOrdered, /isUnique, /lower i /upper odnoszą się do wartości zwracanej przez daną operację Atrybut isQuery określa czy wykonanie operacji zmienia stan systemu Wartość domyślna: false (nie zmienia) Operacja może zwracać najwyżej jedną wartość
7
Metaklasa Operation – powiązania
/type (pochodny) – określa typ zwracanej wartości redefinedOperation – wskazuje operację przedefiniowywaną przez daną operację raisedException – określa typy zgłaszanych wyjątków precondition – ograniczenia stanu systemu, które muszą być spełnione w momencie wywołania operacji każda implementacja operacji może zakładać ich spełnienie postcondition – ograniczenia określające stan systemu po pomyślnym zakończeniu operacji (o ile spełnione były warunki wstępne) każda implementacja operacji musi gwarantować ich spełnienie bodyCondition – opcjonalne ograniczenie na zwracaną wartość może być przedefiniowane (w przeciwieństwie do postcondition) tylko dla isQuery = true
8
Metaklasa Operation – semantyka dodatkowa
Jeśli wywołanie operacji zgłasza wyjątek, nie można zakładać spełnienia ograniczeń postcondition i bodyCondition Na tym poziomie nie określa się zachowania wywołania operacji wobec niespełnienia warunków precondition
9
Przedefiniowywanie operacji
Operacja może być przedefiniowana w specjalizacji swojego klasyfikatora Operacja przedefiniowująca może Wyspecjalizować typy parametrów Dodać nowe warunki wstępne i końcowe Dodać zgłaszane wyjątki W inny sposób wzbogacić specyfikację operacji Dodatkowe reguły niezmienności, kowariancji lub kontrawariancji typów i warunków wstępnych decydują o tym czy specjalizowany klasyfikator może zastąpić klasyfikator bardziej ogólny
10
Notacja operacji [<visibility>] <name> ‘(‘ [<parameter-list>] ‘)’ [‘:’ [<return-type>] [‘[‘ <multiplicity> ‘]’] [‘{‘ <oper-property> [‘,’ <oper-property>]* ‘}’]] <oper-property> ::= ‘redefines’ <oper-name> | ‘query’ | ‘ordered’ | ‘unique’ | <oper-constraint> <parameter-list> ::= <parameter> [‘,’<parameter>]* <parameter> ::= [<direction>] <parameter-name> ‘:’ <type-expression> [‘[‘<multiplicity>’]’] [‘=’ <default>] [‘{‘ <parm-property> [‘,’ <parm-property>]* ‘}’] <direction> ::= ‘in’ | ‘out’ | ‘inout’ (domyślnie ‘in’)
11
Opcje prezentacyjne Lista parametrów może zostać pominięta
Zwracana wartość może być pokazana jako parametr toString(return: String) albo jako typ operacji toString(): String
12
Przykłady notacji operacji
display() -fireEvent() +findAllCustomers(): Person[*] {query, ordered} +giveRise(rate: Money, people: Employee[1..*]{unique})
13
Diagram klas
14
Metaklasa Operation (c.d.)
Diagram pokazuje powiązanie metaklas Operation i Class reprezentujące przynależność operacji do klasy
15
Metaklasa Classifier (c.d.)
Diagram pokazuje powiązanie między metaklasami Classifier i Property, które reprezentuje atrybuty klasyfikatora Wszystkie instancje klasyfikatora zawierają wartości odpowiadające jego atrybutom
16
Przykłady notacji atrybutów
ClassB::id, ClassB::shape, ClassB::height i ClassB::width przedefiniowują odpowiednie atrybuty ClassA
17
Metaklasa Property Właściwość jest rodzajem cechy strukturalnej klasyfikatora Opisuje deklarowany stan instancji klasyfikatora w formie nazwanego związku z wartością lub zbiorem wartości Właściwość związana z klasyfikatorem jako attribute reprezentuje jego atrybut, może także reprezentować koniec powiązania Wartość (wartości) właściwości są przechowywane w szczelinach (slots) instancji klasyfikatora Właściwość związana z powiązaniem jako memberEnd reprezentuje koniec powiązania Wartość (wartości) właściwości stanowi odniesienie do instancji na innych końcach powiązania Zwykłe Association nie ma atrybutów (?). Powiązane Property jest końcem powiązania.
18
Typy kolekcji właściwości
IsOrdered IsUnique Typ kolekcji false true Set OrderedSet Bag Sequence
19
Semantyka właściwości
Właściwość jest pochodna (isDerived = true) jeśli jej wartość (wartości) może być wyliczona skądinąd Właściwości pochodne zwykle są tylko do odczytu (isReadOnly = true) Reguła wyliczenia wartości właściwości pochodnej może być określona przez ograniczenie Właściwość pochodna może przedefiniowywać właściwość „pierwotną”
20
Semantyka właściwości (c.d.)
Właściwość może być oznaczona jako podzbiór innej (subsettedProperty) Kolekcja związana z instancją pierwszej właściwości musi być podzbiorem kolekcji odpowiadającej instancji drugiej właściwości Warunkiem koniecznym jest zgodność odpowiednich elementów Właściwość może być oznaczona jako suma pochodna (isDerivedUnion = true). Znaczy to, że kolekcja wartości wyznaczonych przez właściwość w pewnym kontekście jest wyliczona jako suma (mnogościowa) wszystkich kolekcji wartości wyznaczonych w tym samym kontekście przez właściwości-podzbiory. isDerivedUnion implikuje isDerived i isReadOnly
21
Notacja właściwości <property> ::= [<visibility>] [‘/’] <name> [‘:’ <prop-type>] [‘[‘ <multiplicity> ‘]’] [‘=’ <default>] [‘{‘ <prop-modifier > [‘,’ <prop-modifier >]* ’}’] <prop-modifier> ::= ‘readOnly’ | ‘union’ | ‘subsets‘ <property-name> | ‘redefines’ <property-name> | ‘ordered’ | ‘unique’ | <prop-constraint>
22
Metaklasa Class Klasa opisuje zbiór obiektów współdzielących specyfikację cech, ograniczeń i semantyki Klasa to klasyfikator, którego cechami są atrybuty i operacje Atrybutami klasy są instancje metaklasy Property będące własnością tej klasy Niektóre z atrybutów mogą reprezentować nawigowalne końce binarnych powiązań
23
Notacja klas Klasa używa notacji klasyfikatora
Ponieważ klasa jest najpowszechniej używanym rodzajem klasyfikatora, opuszcza się z reguły słowo kluczowe <<class>> wewnątrz symbolu klasyfikatora
24
Klasy – przykłady notacji
25
Metaklasa Association
Powiązanie opisuje zbiór krotek złożonych z instancji typów końców powiązania Instancją powiązania (association) jest wiązanie (link) Powiązanie specyfikuje związek semantyczny, który może zajść między typowanymi instancjami Powiązanie ma co najmniej 2 końce reprezentowane przez właściwości typów będących końcami
26
Nawigowalność końca powiązania
Końcem nawigowalnym z przeciwnych końców jest taki, który Jest własnością klasy końca (ownedAttribute) LUB Jest określony jako nawigowalny koniec posiadany (navigableOwnedEnd) Zakłada się, że można dojść (w czasie wykonania) z obiektów uczestniczących w wiązaniach na innych końcach powiązania do obiektów na końcach nawigowalnych Do obiektów osiągalnych w ten sposób można w zwykły sposób wysyłać komunikaty
27
Dodatkowa semantyka powiązań
Koniec powiązania może być oznaczony jako podzbiór końca innego powiązania jeśli Oba powiązania mają tyle samo końców Odpowiednie typy końców są zgodne Koniec powiązania może być oznaczony jako przedefiniowujący koniec innego powiązania (pod analogicznymi warunkami) Wtedy dla konkretnego zbioru instancji na innych końcach obu powiązań kolekcje wyznaczone przez koniec przedefiniowujący i przedefiniowany są takie same
28
Dodatkowa semantyka powiązań (c.d.)
Powiązania mogą być specjalizowane Istnienie wiązania w powiązaniu specjalizującym implikuje istnienie wiązania wiążącego ten sam zbiór instancji w powiązaniu specjalizowanym Powiązanie (tylko binarne) może reprezentować kompozycję czyli agregację całkowitą (isComposite = true) Jest to silna postać agregacji czyli związku całość-część, w której instancja części jest zawarta w co najwyżej jednej instancji całości w danej chwili Usunięcie całości pociąga za sobą usunięcie wszystkich części
29
Uwagi Nie jest określony porządek i sposób tworzenia instancji części w kompozycji Nie jest określony związek między specjalizacją powiązania a przedefiniowywaniem i braniem podzbioru jego końca Nie jest określony związek logiczny między wyznaczaniem powiązania pochodnego a wyznaczaniem jego (pochodnych) końców
30
Powiązania – przykłady notacji
31
Powiązania – przykłady notacji
32
Diagram typów danych
33
Metaklasa DataType Typ danych (DataType) to klasyfikator (typ), którego instancje są identyfikowane tylko przez swoją wartość Może zawierać atrybuty – pozwala to modelować typy strukturalne
34
Metaklasy Property i Operation (c.d.)
Diagram pokazuje związek między typem danych a jego atrybutami (instancje Property) i operacjami (instancje Operation)
35
Metaklasa PrimitiveType
Podstawowy typ danych specyfikuje predefiniowany typ danych bez interesującej struktury wewnętrznej Jego operacje mogą być określone poza UML 4 typy podstawowe z Core::PrimitiveTypes są instancjami PrimitiveType
36
Metaklasa Enumeration
Wyliczenie to typ danych, którego wartości są wymienione w modelu jako literały wyliczenia Jest możliwe poszerzenie dostępnych literałów wyliczenia w innym pakiecie lub profilu
37
Metaklasa EnumerationLiteral
Zdefiniowana przez użytkownika wartość typu wyliczeniowego Ma nazwę identyfikującą go w ramach wyliczenia Nazwy literałów wyliczeń nie są globalne i muszą na ogół być kwalifikowane
38
Diagram pakietów
39
Metaklasa Type (c.d.) Diagram pokazuje powiązanie między metaklasami Type i Package reprezentujące przynależność typu do pakietu
40
Metaklasa Package Pakiet stanowi zgrupowanie elementów, zapewnia dla swoich elementów przestrzeń nazewniczą Może zawierać inne pakiety oraz scalać inne pakiety Jeśli element pakietu ma określoną widzialność, to jest ona prywatna albo publiczna
41
Pakiety – notacja
42
Metaklasa PackageMerge
Scalenie pakietów to skierowany związek między dwoma pakietami określający jak elementy jednego pakietu rozszerzają elementy innego pakietu Powinno być używane wtedy, gdy elementy różnych pakietów mają takie same nazwy i reprezentują to samo pojęcie Pozwala to przyrostowo definiować pojęcia
43
Metaklasa PackageMerge (c.d.)
Scalenie może być rozumiane jako operacja, która na podstawie zawartości 2 pakietów produkuje nowy pakiet, którego elementy stanowią kombinację elementów obu zaangażowanych pakietów Implikuje to wykonanie na elementach reprezentujących te same pojęcia szeregu transformacji podlegających formalnie określonym regułom Pakiet źródłowy (przyjmujący – receivingPackage) reprezentuje zarówno operand scalania, jak i rezultat scalania Formalne reguły transformacji opisane są szczegółowo w specyfikacji Infrastruktury UML
44
Scalenie pakietów – notacja
45
Scalenie pakietów – widok konceptualny
Uwaga: to NIE jest diagram UML.
46
Semantyka scalania pakietów
P3::A reprezentuje wynik scalenia P1::A z P2::A
47
Scalanie pakietów – przykład
@ NIE jest standardowym operatorem scalania
48
Scalanie pakietów – przykład (c.d.)
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.