Top Banner
Inżynieria Oprogramowania, UML 1 Inżynieria Oprogramowania UML Schematy klas dr Krzysztof Podlaski Instytut Fizyki, Uniwersytetu Łódzkiego 18.12.2009 Łódź
43

Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Feb 09, 2019

Download

Documents

ngohuong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 1

Inżynieria Oprogramowania

UMLSchematy klas

dr Krzysztof Podlaski

Instytut Fizyki, Uniwersytetu Łódzkiego

18.12.2009 Łódź

Page 2: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 2

Paradygmat obiektowości

• Małe przypomienie

• Założenia

– Abstrakcja

– Hermetyzacja

– Polimorfizm

– Dziedziczenie

Page 3: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 3

• Obiekt to model abstrakcyjny czegoś– Ma swój stan

– Ma pewne umiejętności/zachowania

• Reprezentuje jakiś obiekt rzeczywisty– Często w uproszczeniu

– Izolacja ważnych cech• Pomijamy cechy nie istotne/mniej istotne

Abstrakcja

Page 4: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 4

• Tworzymy aplikację sterowania ruchem

kolejowym

• Mamy Pociągi, Tory i Semafory

• Semafor kolejowy

– Nie interesuje nas jego wygląd

– A jedynie• Położenie (gdzie stoi)

• Jaki ma stan

– Zielone/czerwone

Abstrakcja cd.

Page 5: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 5

• Obiekt ma pewne prywatne cechy

– TYLKO ON ma do nich dostęp

• Pozwala na rozdział uprawnień

• Zabezpiecza przed błędami

– Ułatwia testowanie

• Testujemy kawałkami

• Wprowadza jasny podział logiczny

– Podział na moduły

Hermetyzacja

Page 6: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 6

• Zwykle stan jest prywatny

• Obiekt posiada metody do jego zmiany

– Operacje Atomowe/jednostkowe

– Pełna kontrola stanu

• Ukrywanie implementacji

– Pozwala na bardzo abstrakcyjne obiekty

• Odczyt

– Z Pliku, Z strony WWW, Z Urządzenia

– Odczyt strumieniowy.

Hermetyzacja cd.

Page 7: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 7

• Programowanie operacji dla ogólnych

typów

– Rysowanie na ekranie

• Inaczej rysujemy Koło

• Inaczej rysujemy Trójkąt

• To jak co rysujemy zależy od implementacji

– Wybór może być

» Dynamiczny

» Statyczny

Polimorfizm

Page 8: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 8

• Przejmowanie własności innych obiektów

– Umożliwia tworzenie bogatego drzewa

abstrakcji

• POJAZD

– ROWER

– MOTOCYKL

– SAMOCHOD

» OSOBOWY

» CIEZAROWY

Dziedziczenie

Page 9: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 9

• Budowanie z klocków

• Uszczegóławianie abstrakcji

• Nie musimy kopiować kodu

– Łatwiejsze poprawki

– Mniej testowania

– Przeładowywanie metod

• Jeżeli coś trzeba zmienić to zmieniamy

Dziedziczenie cd.

Page 10: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Klasa

• Klasa

– Definicja pewnego typu obiektów

• Definicja Struktury (pola)

• Definicja Interfejsu (metody)

• Interfejs

– Zbiór akcji/zachowań obiektu

• Co można z obiektem zrobić

Inżynieria Oprogramowania, UML 10

Page 11: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Obiekt

• Konkretna instancja klasy

• Obiekt posiada

– Tożsamość

• Np. adres w pamięci

– Pozwala na rozróżnienie obiektów

– Stan

• Wartości pól

– Zachowanie

• Takie same dla danej klasy

Inżynieria Oprogramowania, UML 11

Page 12: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Klasa a Obiekt

• Klasy są tworzone na poziomie kompilacji

• Obiekt jest typu jakiejś klasy

• Obiekty są tworzone dynamicznie

– W odróżnieniu do zmiennych prymitywnych

• Do obiektu dowiązania do metod klasy

– Nie powielamy tych samych informacji

– Metody/pola statyczne

Inżynieria Oprogramowania, UML 12

Page 13: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 13

Programowanie Obiektowe

• Dwa światy• Problem do rozwiązania (abstrakcja problemu)

• Specyfika maszyny (abstrakcja implementacji)

Semafor:

własności:

• stan: (zapalony, zgaszony)

czynności:

• włączanie (zapal, zgaś)

• sprawdzanie stanu

Klasa: Semafor

wlaczony

on()

off()

czyZapalony()

Page 14: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 14

• Przykładowa implementacja w języku JAVA

Semafor

wlaczony

on()

off()

czyZapalony()

class Semafor

{

boolean wlaczony;

void on() {wlaczony = true;}

void off() {wlaczony = false;}

boolean czyZapalony {return wlaczony;}

}

Page 15: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Klasy a UML

• UML

– Umożliwia opis klas

• Abstrakcja klasy

– Sama struktura i interfejs

– Bez implementacji

• Niezależny od języka programowania

• Umożliwia generowanie szablonu programu

– W dowolnym języku

» StarUML i inne programy

– Struktury projektu

• Zależności pomiędzy klasami

Inżynieria Oprogramowania, UML 15

Page 16: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Przykład klasy

Inżynieria Oprogramowania, UML 16

Osoba

-imie: String-nazwisko: String-pesel: String-dataUr: String

+getImie(): String+setImie(im: String): String

Nazwa

Własności/

Pola/

Atrybuty

Operacje

Page 17: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Składnia

• Własności klasy dostęp nazwa : typ[krotność] {ograniczenia} = wartość_dom

• Po kolei

– Dostęp – kto ma dostęp do pola

– Typ – jakiego typu ta własność

– Krotność – ile elementów

– Ograniczenia – dodatkowe warunki

– Wartość_dom – wartość domyślna

Inżynieria Oprogramowania, UML 17

Page 18: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Dostęp

• 4 poziomy widoczności

– Publiczny/public

• +

– Prywatny/private

• -

– Chroniony/protected

• #

– Pakietowy/package access

• ~

Inżynieria Oprogramowania, UML 18

Page 19: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Krotność

• Można ograniczyć ilość– 1

• Dokładnie jeden (domyślna watrość/pomija się)

– *

• Dowolnie wiele

– od..do (3..12)

• Nie mniej niż,

• Nie więcej niż

– 0..1 (co najwyżej jeden)

– 1..* (co najmniej jeden)

Inżynieria Oprogramowania, UML 19

Page 20: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Krotność cd.

• Istotne są krotności

– 1 i *

– Konkretna dowolna np. 7 nie jest tak wazna

• Może się zmieniać i zależy od wielu czynników

• W UML 2.0 nie powinno się tego stosować

Inżynieria Oprogramowania, UML 20

Page 21: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Ograniczenia

• Dodatkowe informacje o atrybutach

– ordered – elementy są uporządkowane

– unordered

– unique – elementy są unikalne/rozróżnialne

– nonunique

– readOnly – tylko do odczytu

– frozen – stałe bądź nie podlegają zmianom po

zainicjowaniu

Inżynieria Oprogramowania, UML 21

Page 22: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Elementy statyczne

• Elementy statyczne

– Należą do klasy

• To samo dla wszystkich instancji/obiektów

• Nie trzeba tworzyć ani jednego obiektu klasy

• Oznaczamy podkreśleniem

Inżynieria Oprogramowania, UML 22

Page 23: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Operacje

• Operacje klasy dostęp nazwa(par_A, par_B,…) : typ_zwracany {ograniczenia}

• Spis parametrów

– par_A,par_B w postaci:

• kierunek nazwa:typ[krotność]=wart_dom

– Kierunek

» in – wejściowy

» out – wyjściowy

» inout – w obie strony

» return – zwracany

Inżynieria Oprogramowania, UML 23

Page 24: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Ograniczenia dla operacji

• Dodatkowe informacje o atrybutach

– query – brak modyfikacji stanu obiektu

– exception – zgłasza wyjątek

Inżynieria Oprogramowania, UML 24

Page 25: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Relacje pomiędzy klasami

• Zaprojektowanie klasy nie są niezależne

– Wzajemnie się wykorzystywać

– Mogą być elementami innych (pola)

– Być tworzone przez inne (Fabryki obiektów)

– Być Integralną częścią

– Dziedziczyć po sobie

• Te relacje znajdują się na diagramie

Inżynieria Oprogramowania, UML 25

Page 26: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Zależności na diagramie

• Pomiędzy elementami

– <<call>

• Wywołanie metod innej klasy wewnątrz

– <<create>>

• Tworzy instancje klasy

– <<instance>>

• Jest instancją

– <<use>>

• Wykorzystuje obiekt klasy

Inżynieria Oprogramowania, UML 26

Page 27: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 27

Osoba

-imie: String-nazwisko: String-pesel: String-dataUr: String

+getImie(): String+setImie(im: String): String

ListaOsobowa

-pracownicy: Osoba[*]

+addNewOsoba(o: Osoba): void

<<call>>

Page 28: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Asocjacje

• Powiązania pomiędzy klasami

– Mogą zastąpić definiowanie własności

– Analogia do modelu relacyjnego baz danych

– Posiada referencje do obiektu klasy

– Może posiadać kierunek

• Zwykle jednokierunkowa

– Strzałka

• Dwukierunkowa = referencje wzajemne

– Bez strzałek

Inżynieria Oprogramowania, UML 28

Page 29: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 29

Osoba

-imie: String-nazwisko: String-pesel: String-dataUr: String

+getImie(): String+setImie(im: String): String

ListaOsobowa

+addNewOsoba(o: Osoba): voidpracownicy -posiada

* 1

Page 30: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Kiedy stosować

• Atrybuty

– Dla typów prostych

• Asocjacje

– Dla instancji klas

– Daje nam widoczne powiązania

• Bez dokładnego czytania

Inżynieria Oprogramowania, UML 30

Page 31: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Lepszy opis Asocjacji

• Klasa asocjacji (klasa asocjacyjna)

– Klasa opisująca asocjację

– Łączymy linią przerywaną z asocjacją

– Obiekt Asocjacyjny

• Pośrednik relacji

– Obiekt pośredniczący

• Zbędny przy prostych relacjach

Inżynieria Oprogramowania, UML 31

Page 32: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Agregacja

• Asocjacja ale

– Z warunkiem „podległości”

• „Należy do”

• Ale nie jest wyłącznym właścicielem

– Nie tworzy obiektu

– Nie niszczy

– Nie musi istnieć obiekt nadrzędny

• Przykład

– Sklep Komputerowy

» Elementy HDD, RAM, Monitory …

» Zestaw komputerowy

Inżynieria Oprogramowania, UML 32

Page 33: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 33

HDD Zestaw Komputerowy

•Dyski istnieją niezależnie od zestawu

•Ale są jego integralną częścią

•Niezbędne do jego istnienie

•Oznaczamy Pustym Rombem po stronie nadrzędnego obiektu

Page 34: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Kompozycja

• Relacja silniejsza od agregacji

– Element jest integralną częścią

– Nie może istnieć samodzielnie

– Najczęściej mamy tu wyłączność

– Przykład

• Płyta główna i Chipset

• Komputer i BIOS

Inżynieria Oprogramowania, UML 34

Page 35: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 35

Plyta glównaChipset

•Nie może istnieć jedno bez drugiego

•Posiadanie na wyłączność

•Usunięcie Płyty główniej niszczy Chipset

•Oznaczamy Pełnym Rombem po stronie nadrzędnego obiektu

Page 36: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Uogólnienie

• Uszczegółowienie typu

– Zmniejszenie poziomu abstrakcji

– Najczęściej kojarzy się z dziedziczeniem

• W Javie także implementacja

– Typ niższego rzędu jest typu rzędu wyższego

• Samochód jest Pojazdem

– Ale nie każdy pojazd jest Samochodem

Inżynieria Oprogramowania, UML 36

Page 37: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 37

Pojazd

-wlasciciel: Osoba-predkoscMax: double-predkosc: double

+stan(): void+przyspiesz(oIle: double): void+predkosc(): double+setWlasciciel(os: Osoba): void+getWlasciciel(): Osoba

Samochód Rower

MotocyklOsobowy

Ciezarowy

Page 38: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Interfejsy i klasy abstrakcyjne

• Definiowanie szablonu klasy

– Nie definiujemy wszystkich operacji

• Jedynie deklaracje

– Nazwa

– Rodzaje Parametrów

– Zwracane wartości

• Interfejs

– TYLKO deklaracje

• Klasa Abstrakcyjna

– Może mieć część „pełnych” metod

Inżynieria Oprogramowania, UML 38

Page 39: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 39

Obiekt Graficzny

Kwadrat

+narysuj(): void

Kolo

+narysuj(): void

Trójkat

+narysuj(): void

•Obiekt Graficzny posiada operację narysuj():void

•Wysoki poziom abstrakcji

•Nie można podać definicji operacji

Page 40: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Przykład

• Projektujemy Forum internetowe

– Jak zbudować klasy

– Zależności pomiędzy nimi

– Wymyślamy możliwe klasy

• Data, User, Rola/Uprawnienia, Stan Użytkownika,

• Temat, Post

• Wyszukiwanie

Inżynieria Oprogramowania, UML 40

Page 41: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Inżynieria Oprogramowania, UML 41

Data

-data: longint

+toString(): String+dzienTygodnia(): String+dzienMiesiaca(): int+miesiac(): int+rok(): int+ileDniTemu(): int

Post

-tresc: String-data: Data-dataModyfikacji: Data

+toHtml(): String

Temat

-nazwa: String

+addPost(post: Post)

Dzial

-nazwa: String

+addTemat(temat: Temat)

User

#imie: String#login: String#email: String

Rola

#uprawnienia

Moderator

-dzial: Dzial

Administrator

Page 42: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Dodajemy do tego relacje

Inżynieria Oprogramowania, UML 42

Post

-tresc: String-data: Data-dataModyfikacji: Data

+toHtml(): String

Temat

-nazwa: String

+addPost(post: Post)

Dzial

-nazwa: String

+addTemat(temat: Temat)

+<<posiada>>

* 1

+<<posiada>>

*

1

Page 43: Wstęp do Java - merlin.fic.uni.lodz.plmerlin.fic.uni.lodz.pl/KPodlaski/zaj/inz_op/Wyklad_UML_diagramy...Inżynieria Oprogramowania, UML 6 •Zwykle stan jest prywatny •Obiekt posiada

Relacje cd.

Inżynieria Oprogramowania, UML 43

Post

-data: Data-tresc: String-dataModyfikacji: Data

+toHtml(): String

User

#imie: String#login: String#email: String

+<<tworzy>>+<<autor>>

1*

+<<uprawninienia>>

1

*

Rola

#uprawnienia

Administrator

Moderator

+dzial: Dzial