Język UML. dr inż. Piotr Szwed C3, pok. 212 e-mail: pszwed@ia.agh.edu.pl http://pszwed.ia.agh.edu.pl

Podobne dokumenty
Rysunek 1: Przykłady graficznej prezentacji klas.

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Modelowanie obiektowe

Diagramy klas. dr Jarosław Skaruz

Świat rzeczywisty i jego model

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Podstawy projektowania systemów komputerowych

Diagramy klas. WYKŁAD Piotr Ciskowski

UML w Visual Studio. Michał Ciećwierz

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Paweł Kurzawa, Delfina Kongo

Programowanie obiektowe

MODELOWANIE OBIEKTOWE

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

TECHNOLOGIE OBIEKTOWE. Wykład 3

Programowanie obiektowe - 1.

Modelowanie klas i obiektów. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Technologie obiektowe

Diagramy przypadków użycia. WYKŁAD Piotr Ciskowski

Modelowanie diagramów klas w języku UML. Łukasz Gorzel @stud.umk.pl 7 marca 2014

Programowanie obiektowe

Wprowadzenie do systemów informacyjnych

Język UML w modelowaniu systemów informatycznych

Dziedziczenie. Tomasz Borzyszkowski

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

problem w określonym kontekście siły istotę jego rozwiązania

Modelowanie danych, projektowanie systemu informatycznego

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Podstawy programowania III WYKŁAD 4

Programowanie obiektowe

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Laboratorium 6 DIAGRAM KLAS (Class Diagram)

Technologie i usługi internetowe cz. 2

Język UML w modelowaniu systemów informatycznych

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Zalety projektowania obiektowego

Programowanie Obiektowe i C++

JAVA W SUPER EXPRESOWEJ PIGUŁCE

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA. Modelowanie danych. Model związków-encji

Dziedziczenie. dr Jarosław Skaruz

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Faza analizy (modelowania) Faza projektowania

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

UML. zastosowanie i projektowanie w języku UML

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Analiza i projektowanie obiektowe 2017/2018. Wykład 3: Model wiedzy dziedzinowej

Podstawy Programowania Obiektowego

Zaawansowane programowanie w C++ (PCP)

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Szablony funkcji i klas (templates)

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Podstawy modelowania w języku UML

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Polimorfizm. dr Jarosław Skaruz

Programowanie obiektowe

Język UML. dr inż. Piotr Szwed C3, pok

TEMAT : KLASY DZIEDZICZENIE

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Projektowanie logiki aplikacji

IX Konferencja Informatyki Stosowanej

1 Projektowanie systemu informatycznego

Mariusz Trzaska Modelowanie i implementacja systemów informatycznych

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

DIAGRAM KLAS. Kamila Vestergaard. materiał dydaktyczny

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Podstawy Języka Java

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie Obiektowe i C++ Marcin Benke

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

UML - zarys 2007/2008

Język UML w modelowaniu systemów informatycznych

Zaawansowane programowanie w C++ (PCP)

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Spis treúci. 1. Wprowadzenie... 13

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni


> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Inżynieria Oprogramowania. UML Schematy klas

Dziedziczenie. Zadanie 1

Wypożyczalnia VIDEO. Technologie obiektowe

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Programowanie obiektowe

Charakterystyka oprogramowania obiektowego

Programowanie obiektowe. Wprowadzenie

Analiza i projektowanie aplikacji Java

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Zaawansowane programowanie obiektowe - wykład 5

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Mechanizm dziedziczenia

Transkrypt:

Język UML dr inż. Piotr Szwed C3, pok. 212 e-mail: pszwed@ia.agh.edu.pl http://pszwed.ia.agh.edu.pl

Diagramy klas

Diagramy klas Diagramy klas są najbardziej charakterystycznym elementem wszystkich języków graficznych modelowania obiektowego. Przedstawiają one statyczne elementy należące do pewnej dziedziny (klasy) oraz związki pomiędzy nimi. Obiekt Obiektem jest każdy byt pojęcie lub rzecz mający znaczenie w kontekście rozwiązywania problemu w danej dziedzinie przedmiotowej.

Cechy obiektów Każdy obiekt posiada trzy podstawowe cechy: Tożsamość - unikalny uchwyt, dzięki któremu obiekt odróżniany jest od innych. Stan - zawartość komórek przechowujących dane opisujące obiekt. Sposób zachowania - zbiór akcji, które potrafi wykonywać obiekt.

Dziedzina przedmiotowa W zależności od modelu obiekt może reprezentować: element dziedziny problemu element programu

Element dziedziny problemu Systemy, które modelujemy przetwarzają dane. Dane te odpowiadają pojęciom pojawiającym się w opisie dziedziny problemu. Są to na przykład: dane klienta, towar, zamówienie, faktura dla sklepu dane pojazdu (rok produkcji, marka, typ, numer nadwozia, data rejestracji) dane właściciela (imię, nazwisko, PESEL, adres) dla systemu rejestracji pojazdów dane pojazdu (marka, model, elementy wyposażenia, cena) dane klienta (imię, nazwisko, adres) dla systemu obsługi komisu samochodowego zdarzenie wygenerowane przez czujnik, zmierzona wartość, czas pomiaru dla systemu sterowania

Element programu Obiekt może reprezentować element składowy programu. Jest on odpowiedzialny za przechowywanie, przetwarzanie i przesyłanie danych. Przykładami mogą być: dokument, widok okno dialogowe baza danych (lub jej obiektowe opakowanie) wątek, kolejka komunikatów, semafor

Klasa 1 Dowolny obiekt jest instancją abstrakcyjnego pojęcia, jakim jest klasa. Podstawę identyfikacji klas stanowią grupy obiektów charakteryzujących się: identyczną strukturą danych, czyli takimi samymi atrybutami identycznym zachowaniem, czyli takimi samymi operacjami identycznymi związkami identycznym znaczeniem w określonym kontekście

Klasa 2 Klasa Jest uogólnieniem zbioru obiektów, które mają takie same atrybuty, operacje, związki i znaczenie. Klasa także zawiera opis, który umożliwia stworzenie obiektów należących do danej klasy.

Atrybut Atrybut jest nazwaną własnością (cechą) klasy. Określa zbiór wartości, jakie można przypisać do poszczególnych egzemplarzy tej klasy. Klasa może mieć dowolną liczbę atrybutów, lub nie mieć wcale. Atrybut reprezentuje właściwość modelowanego bytu, określoną dla wszystkich jego wystąpień.

Przykłady klas z atrybutami Klient +imie : string +nazwisko : string +adres : string +telefon : string CzujnikTemperatury +min_value : double = -40 +max_value : double = 75 -currentvalue : double = 0 KlasaPrzyk adowa +atrybutpubliczny -atrybutprywatny #atrybutchroniony

Operacja Operacja to implementacja pewnej usługi, której wykonania można zażądać od każdego obiektu klasy. Klasa może mieć dowolną liczbę operacji lub nie mieć ich wcale. Diagram klas nie specyfikuje, w jaki sposób jest zaimplementowana usługa, ale pokazuje sygnatury operacji zdefiniowanych dla danej klasy, czyli ich interfejs. CzujnikProgowy Dialog Stos +ustawpoziom(in prog : double) +ustawodbiorcesygnalu(in odbiorca) +odczytajstan() : bool +onok() +oncancel() +push(in obj : object) +pop() : object

Odpowiedzialność Odpowiedzialność (responsibility) jest wyrażona kontraktem lub zobowiązaniem typu lub klasy. Odpowiedzialność jest formą specyfikacji zadań, jakie klasa będzie pełniła w rozwijanym modelu. Zazwyczaj jest ona jawnie lub niejawnie określana przed przydzieleniem klasie atrybutów i operacji (czyli przed podjęciem pewnych decyzji projektowych, które określają, jak dana odpowiedzialność zostanie zrealizowana).

Odpowiedzialność - przykłady Klasa Klient odpowiada za przechowywanie danych klienta: imienia, nazwiska, adresu i numeru telefonu. Klient +imie : string +nazwisko : string +adres : string +telefon : string Klasa Pojazd odpowiada za symulację zachowania pojazdu w modelowanym systemie, stąd odpowiednie atrybuty i operacje: Pojazd -x : double -y : double -dx : double -dy : double -predkosc : double -przyspieszenie : double +rysuj(in graphics)

Związki 1 W paradygmacie programowania obiektowego program może być traktowany jako sieć obiektów, które wysyłają do siebie komunikaty. Typową implementacją komunikatu jest wywołanie metody. Aby wysłać właściwy komunikat do właściwego odbiorcy obiekt musi znać odbiorcę, znać jego interfejs. Z tego powodu konstruując program definiujemy związki pomiędzy klasami.

Związki 2 Związki także mogą wynikać ze zobowiązań klas ustalanych w trakcie analizy dziedziny. Na przykład klasa Faktura musi przechowywać informacje o Nabywcy, Sprzedawcy i zakupionych Towarach lub Usługach. Związek to relacja między elementami. W diagramach UML związki są przedstawiane jako różne (w zależności od rodzaju związku) linie łączące elementy.

Rodzaje związków W języku UML wyróżnia się trzy rodzaje związków: Zależność (ang. dependency) definicja klasy lub jej implementacja wymaga informacji o innej klasie Uogólnienie (ang. generalization) -związek między klasą bardziej ogólną a klasą wyspecjalizowaną (w językach obiektowych implementowany jako dziedziczenie) Powiązanie (ang. association) - związek strukturalny pomiędzy klasami odpowiadający sytuacji, gdy obiekt danej klasy przechowuje informacje o obiektach innej klasy.

Zależność 1 Zależność jest związkiem użycia. Zmiany dokonane w specyfikacji elementu mają wpływ na inny element, który go używa (ale niekoniecznie na odwrót). Na diagramie związek ten jest przedstawiany jako linia przerywana z grotem skierowanym na element, od którego coś zależy. Użycie nie oznacza konieczności przechowywania informacji o obiekcie innej klasy. Kiedy klasa dziedziczy po innej klasie lub przechowuje informacje o obiekcie innej klasy, mimo że używa innej klasy stosujemy mocniejsze powiązanie (uogólnienie lub asocjację).

Zależność 2 Zazwyczaj związek zależności rezerwowany jest dla sytuacji, kiedy formalnym parametrem metody lub zwracaną wartością jest obiekt (grupa obiektów) innej klasy. W językach programowania na poziomie kodu źródłowego zależność może być wyrażana jako dyrektywa #include preprocesora (C++) lub import (Java).

Zależność 3 Zależność związana z formalnym parametrem metody Dokument Drukarka +drukuj(in drukarka : Drukarka) Zależność związana z typem zwracanej wartości Collection Enumeration +elements() : Enumeration PHPScript MainPageHTML +createmainpage() Ostatni przykład przedstawia zależność pomiędzy skryptem generującym stronę HTML a obiektem reprezentującym stronę (skrypt musi wiedzieć, jak wygenerować stronę).

Uogólnienie 1 Uogólnienie jest związkiem między elementem ogólnym (nazywanym nadklasą, przodkiem, klasą bazową) a pewnym specyficznym jego rodzajem (nazywaną podklasą, klasą potomną, klasą pochodną). Uogólnieniu odpowiada fraza języka naturalnego jest, jest rodzajem. Przykłady: SamochódOsobowy jest Słoń jest Zwierzęciem Pojazdem Stół jest Meblem jest Przedmiotem

Uogólnienie 2 Shape FilledShape Line Ellipse Rectangle Grupa klas powiązanych relacją uogólnienia tworzy hierarchię. Klasę najbardziej ogólną zazwyczaj umieszczamy u góry.

Uogólnienie 3 Klasa może mieć jednego przodka, kilku przodków lub nie mieć ich wcale. Object String Integer Osoba WłaścicielPojazdu Firma Kierowca WłaścicielPrywatny WłaścicielInstytucjonalny KierowcaPosiadacz Pojazd

Uogólnienie 4 Line -p1 : Point -p2 : Point +move() +display() +scale() Shape -linecolor : Color +move() +display() +scale() +setlinecolor() Ellipse -center : Point -rx : double -ry : double -rotationangle +move() +display() +scale() FilledShape -fillcolor : Color +setfillcolor() Rectangle -p1 : Point -p2 : Point +move() +display() +scale() Potomek dziedziczy właściwości przodka, w szczególności atrybuty i operacje. Równocześnie może dodawać atrybuty i przedefiniowywać operacje.

Uogólnienie 5 Line -p1 : Point -p2 : Point +move() +display() +scale() Shape -linecolor : Color +move() +display() +scale() +setlinecolor() Ellipse -center : Point -rx : double -ry : double -rotationangle +move() +display() +scale() FilledShape -fillcolor : Color +setfillcolor() Rectangle -p1 : Point -p2 : Point +move() +display() +scale() Operacja potomka, mająca tę samą sygnaturę jest ważniejsza niż operacja przodka (polimorfizm). Potomek może wystąpić wszędzie tam gdzie spodziewany jest przodek, lecz nie na odwrót. (automatyczne rzutowanie w górę, upcasting)

Uogólnienie 6 Pułapki dziedziczenia? Circle Ellipse -center -r : double -ry : double -rotationangle +move() +display() +scale()? -center -r : double +move() +display() +scale() -ry:double -rotationangle Ellipse Circle Constraint: r=rx

Asocjacja 1 Asocjacja (powiązanie) to związek strukturalny pomiędzy klasami, który wskazuje, że ich obiekty są ze sobą połączone. Istnienie powiązania między klasami oznacza, że możliwe jest przejście (nawigacja) pomiędzy obiektami. Aby to było możliwe, obiekty muszą przechowywać informacje o innych powiązanych obiektach w postaci przeznaczonych specjalnie do tego atrybutów.

Asocjacja 2 Asocjacja może być relacją dwuargumentową (binarną) wieloargumentową (n-arną). Nieruchomosc Kupujacy Sprzedacjacy Pojazd Właściciel UmowaKupna Asocjacja binarna Asocjacja n-arna

Nazwa Asocjacja 3: Nazwa Asocjacja może mieć nazwę określającą istotę danego związku. Obok nazwy może wystąpić trójkątny znacznik pokazujący kierunek, w jakim należy odczytywać powiązanie. Pojazd jest właścicielem Właściciel

Role Asocjacja 4: Role Klasa uczestnicząca w powiązaniu odgrywa w nim pewną rolę. Rola może być nazwana i pokazana na diagramie. Czytelnik -czytelnik Wypożyczenie -ksiazka Książka Wiele narzędzi do tworzenia diagramów UML jest w stanie automatycznie wygenerować kod klas na podstawie diagramu. Zazwyczaj nazwa roli jest wtedy wykorzystywana jako nazwa atrybutu w klasie występującej z drugiej strony asocjacji.

Asocjacja 5: Role Przykład: wygenerowany zostanie kod klasy Wypożyczenie zawierający referencje (Java) lub wskaźniki (C++) o nazwie czytelnik i ksiazka. Nie należy wprowadzać do zestawu klasy atrybutów, które są odpowiedzialne za role, bo wystąpiłyby dwukrotnie Czytelnik -czytelnik Wypożyczenie -ksiazka Książka class Wypozyczenie { Czytelnik czytelnik; Ksiazka ksziazka; Wypozyczenie(Czytelnik c, Ksiazka k){ czytelnik = c; ksiazka = k } }

Asocjacja 6: Nawigacja Asocjacja jest w zasadzie relacją dwukierunkową, co oznacza, że nawigacja jest możliwa w obie strony. W wielu przypadkach taka nawigacja nie jest wymagana, stąd na diagramie może być wskazany kierunek nawigacji. Producent -buffer Bufor -buffer Konsument W sytuacji pokazanej na rysunku możliwa jest nawigacja od obiektów klasy Producent i Konsument do obiektu klasy Bufor, ale nie w przeciwną stronę. W klasach Producent i Konsument jest przechowywana informacja o buforze (atrybuty buffer mogą zostać wygenerowane na podstawie nazwy roli asocjacji).

Asocjacja 7: Nawigacja Producent -buffer Bufor -buffer Konsument Warto zwrócić uwagę, że z diagramu klas nie wynika, że Producent i Konsument dzielą wspólny obiekt klasy Buffer. Jest to widoczne na diagramie obiektów lub komunikacji. put() producent buffer bufor1 get() konsument buffer bufor2 put() get() producent buffer bufo buffer konsument

Asocjacja 8: Liczebność Liczebność (krotność) asocjacji określa ile obiektów może zostać połączonych przez jeden egzemplarz powiązania. Liczebność może być konkretną wartością lub być określona jako przedział. Oznaczenie Interpretacja 1 Dokładnie jeden n Dokładnie n (n>1) * Wiele (dowolna liczba) 0..* Zero lub wiele 0..1 Zero lub 1 1..* Jeden lub wiele

Asocjacja 9: Liczebność Liczebność może dotyczyć każdego elementu biorącego udział w relacji (każdego zakończenia łuku) Pojazd Właściciel 1..* 1..* Faktura Towar 0..* 1..* Lista ElementListy 1 0..*

Asocjacja 10: Wielokrotne asocjacje Pomiędzy klasami mogą występować wielokrotne asocjacje odpowiadające różnym rolom. KlientAllegro -sprzedajacy AukacjaAllegro -aukcja -towar Towar 1 * * -liczbajednostek : uint 1 1 0..* -licytujacy W przedstawionym przykładzie AukcjaAllegro ma dokładnie jednego sprzedającego i 0..* licytujących.

Asocjacja 11: Asocjacja wiele do wielu Asocjacja, w której z każdej strony może wystąpić wiele obiektów jest kłopotliwa w implementacji. Do jej realizacji musimy wykorzystać dodatkowe struktury danych (klasy, rekordy bazy danych). Mogą być one wprowadzone ze względów czysto technicznych, ale często zawierają one dodatkowe atrybuty. W takim przypadku do asocjacji można dowiązać klasę odpowiedzialną za jej realizację (association class). Wypożyczenie -datawypozyczenia -datazwrotu Czytelnik 0..* 0..* Książka

Asocjacja 12: Asocjacja wiele do wielu PozycjaFaktury -liczbajednostek : int Faktura 0..* 1..* Towar Ta sama relacja może być wyrażona jako: Faktura 1 1..* PozycjaFaktury -liczbajednostek : int * 1 Towar

Agregacja 1 Asocjacja jeden do wielu jest bardzo często identyfikowana jako agregacja, czyli struktura całość-część, gdzie jedna klasa jest częścią większej całości. Frazą języka naturalnego wskazującą na istnienie agregacji jest ma, posiada, zawiera: Grupa zawiera Pojazd ma Koła Biblioteka posiada Faktura ma Studentów Książki PozycjeFaktury

Agregacja 2 Grupa -czlonkowie Student 1 * W zasadzie agregacja nie określa ani kierunku nawigacji, ani też czasu życia obiektów wchodzących w skład struktury. Jednakże istnienie agregacji w praktycznych implementacjach oznacza, że obiekt będący posiadaczem (reprezentujący całość ) używa kontenera do składowania posiadanych elementów (reprezentujących części ) i w związku z tym standardowo dostępna jest nawigacja od posiadacza do elementu posiadanego.

Agregacja 3 Nawigacja w przeciwną stronę może zależeć od praktycznych rozwiązań stosowanych przy generacji kodu i sposobu interpretacji wyspecyfikowanych ról. Grupa -grupa -czlonkowie Student 1 * Grupa -czlonkowie Student * 1 -grupa

Kompozycja 1 Kompozycja jest szczególnym przypadkiem agregacji. W przypadku kompozycji obiekt reprezentujący całość składa się z części. Województwo składa się z Powiat składa się z Rysunek składa się z Gmin Powiatów ElementówRysunku Rysunek ElementRysunku 1 *

Kompozycja 2 Potencjalnie, w przypadku agregacji elementy składowe mogą być dzielone, w przypadku kompozycji są one wyłączną własnością elementu nadrzędnego. Na ogół element nadrzędny kontroluje czas życia składowych. Wraz z destrukcją całości, są one usuwane. UML nie definiuje jednak semantyki. Różnice pomiędzy agregacją i kompozycją są umowne.

Kompozycja 3 W odniesieniu do systemów informatycznych i języków programowania rozróżnienie pomiędzy agregacją i kompozycją jest uzależnione od platformy, na której będą implementowane klasy występujące na diagramie. Język C++ promuje techniki kompozycji, wbudowane mechanizmy zapewniają usuwanie obiektów klas będących atrybutami, ze względu na konieczność jawnego zarządzania pamięcią kontenery są z reguły wyłącznymi właścicielami elementów. Równocześnie agregacja (rozumiana jako współdzielenie elementów) jest możliwa do zaimplementowania, ale jest traktowana jako rozwiązanie potencjalnie zwiększający zagrożenie wystąpienia błędów. Z kolei w języku Java (także C#) model zarządzania pamięcią promuje agregację -- czas życia obiektów nie jest dobrze określony i pozostaje pod kontrolą mechanizmu garbage collection maszyny wirtualnej.

Symbol graficzny Podsumowanie relacji Relacja Zależność. Klasy wiedzą coś o sobie. Dziedziczenie (specjalizacja) -rola1 -rola2 1 * -współwlascieciel 1 -elementy * Asocjacja (powiązanie). Klasy mają atrybuty odpowiedzialne za implementację relacji Agregacja. Mocniejsze powiązanie, obiekty mogą być dzielone. -wlascieciel 1 -elementy * Kompozycja. Najmocniejsze powiązanie, obiekt nadrzędny składa się z podrzędnych