Infrastruktura 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.
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania
Wzorce.
Prowadzący: mgr inż. Elżbieta Majka
Agregacja Agregacja jest rodzajem asocjacji; zadaniem agregacji jest modelowanie związku całość-część. agregacja jest asocjacją: dla obu jej końców są.
PROGRAMOWANIE STRUKTURALNE
Kamil Łącki Dominik Strzelichowski
Implementacja asocjacji
ISOiWUT Internetowy System Oferowania i Wyszukiwania Usług Transportowych.
Projektowanie Aplikacji Komputerowych
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 6: Tablice, rekordy, zbiory.
Co UML może zrobić dla Twojego projektu?
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
Bartosz Walter Prowadzący: Bartosz Walter
Struktury.
Pakiety i ATD 1 Definicja. Pakietem albo jednostką programową nazywamy grupę logicznie powiązanych elementów, które mogą być typami, podtypami, obiektami.
Typy pochodne 1 Często dogodnie jest wprowadzić nowy typ, który jest podobny do istniejącego, niemniej jednak różny. Niech T będzie pewnym typem. Możemy.
Typy danych – podstawy 1 W Adzie wszystkie dane muszą być określonego typu. Definicja Typ danych (data type) jest to zbiór wartości i operacji, które można.
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.
Unified Modeling Language Wykład 3 Diagram klas
DIAGRAMY KLAS i obiektów
Wykład 2 struktura programu elementy języka typy zmienne
Diagramy klas w języku UML
Projektowanie i programowanie obiektowe II - Wykład IV
Projektowanie i programowanie obiektowe II - Wykład II
Modele baz danych - spojrzenie na poziom fizyczny
Projektowanie - wprowadzenie
Wykład 5 UML - Unified Modeling Language
Wykład 3 Analiza i projektowanie strukturalne
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
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
Nadstruktura języka UML w wersji 2.2
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Diagramy obiegu dokumentów a UML w modelowaniu procesów biznesowych
Programowanie obiektowe III rok EiT
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 2013/2014
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
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.
Temat 3: Integralność danych. Integralność danych, określana również mianem spójności danych, jest to funkcja SZBD, która gwarantuje, że dane nie zostaną.
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Diagram aktywności (czynności)
Diagram klas Kluczowymi elementami są: klasy (class)
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.
Modelowanie obiektowe - system zarządzania projektami.
Infrastruktura języka UML w wersji 2.2 Część VI Pakiet Core::Constructs (diagramy: bazowy, przestrzeni nazewniczych, klasyfikatorów, wyrażeń, ograniczeń)
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.
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Projekt modułu Nazwa całego projektu Nazwa modułu Imię i Nazwisko Inżynieria Oprogramowania II dzień, godzina rok akademicki W szablonie na niebiesko zamieszczone.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Programowanie Zaawansowane
Zestaw pytań nr. 3 Typy generyczne Wyjątki OPRACOWALI: JAKUB GRYCZEWSKIKINGA ROSA DANIEL KAPTEJNYWOJCIECH ŁĘCZYCKI
Statyczna kontrola typów w SBQL Rafał Hryniów Polsko-Japońska Wyższa Szkoła Technik Komputerowych, Warszawa
Asocjacja,Kompozycja,Agregacja
Inżynieria systemów informacyjnych
Typy wyliczeniowe, kolekcje
Programowanie Obiektowe – Wykład 2
Projektowanie systemów informacyjnych
PGO Przeciążanie metod i konstruktorów
Zapis prezentacji:

Infrastruktura języka UML w wersji 2.2 Część VII Pakiet Core::Constructs (diagramy: operacji, klas, typów danych, pakietów)

Diagram operacji

Metaklasa BehavioralFeature Opiera się na definicji Abstractions::BehavioralFeatures::BehavioralFeature Dodaje możliwość zgłaszania wyjątków w trakcie wywołania

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ść

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

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ść

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

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

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

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’)

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

Przykłady notacji operacji display() -fireEvent() +findAllCustomers(): Person[*] {query, ordered} +giveRise(rate: Money, people: Employee[1..*]{unique})

Diagram klas

Metaklasa Operation (c.d.) Diagram pokazuje powiązanie metaklas Operation i Class reprezentujące przynależność operacji do klasy

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

Przykłady notacji atrybutów ClassB::id, ClassB::shape, ClassB::height i ClassB::width przedefiniowują odpowiednie atrybuty ClassA

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.

Typy kolekcji właściwości IsOrdered IsUnique Typ kolekcji false true Set OrderedSet Bag Sequence

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ą”

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

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>

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ń

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

Klasy – przykłady notacji

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

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

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

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

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

Powiązania – przykłady notacji

Powiązania – przykłady notacji

Diagram typów danych

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

Metaklasy Property i Operation (c.d.) Diagram pokazuje związek między typem danych a jego atrybutami (instancje Property) i operacjami (instancje Operation)

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

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

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

Diagram pakietów

Metaklasa Type (c.d.) Diagram pokazuje powiązanie między metaklasami Type i Package reprezentujące przynależność typu do pakietu

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

Pakiety – notacja

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

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

Scalenie pakietów – notacja

Scalenie pakietów – widok konceptualny Uwaga: to NIE jest diagram UML.

Semantyka scalania pakietów P3::A reprezentuje wynik scalenia P1::A z P2::A

Scalanie pakietów – przykład @ NIE jest standardowym operatorem scalania

Scalanie pakietów – przykład (c.d.)