Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 1/33 Wykład 5 Model obiektowy (3) dr inż. Ewa Stemposz

Podobne prezentacje


Prezentacja na temat: "E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 1/33 Wykład 5 Model obiektowy (3) dr inż. Ewa Stemposz"— Zapis prezentacji:

1 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 1/33 Wykład 5 Model obiektowy (3) dr inż. Ewa Stemposz

2 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 2/33 Zagadnienia Asocjacja binarna Asocjacje pochodne Dziedziczenie asocjacji Role wielowartościowe Agregacja a kompozycja Agregacja rekursywna Asocjacja kwalifikowana Asocjacja n-arna

3 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 3/33 Powiązanie a asocjacja Powiązanie: Fizyczny lub pojęciowy związek między obiektami, odwzorowywujący relację istniejącą między odpowiednimi bytami w analizowanej dziedzinie problemowej. Asocjacja: Grupa powiązań posiadających wspólną strukturę i semantykę. Powiązanie jest wystąpieniem asocjacji. Asocjacja, która łączy dwie klasy nazywana jest asocjacją binarną. :Osoba imię=Zuzanna :Firma krawiecka pracuje w :Osoba imię=Jan :Firma szewska :Osoba imię=Ewa pracuje w Obiekty i powiązania na diagramie obiektów Asocjacje, łączące więcej niż dwie klasy, nazywane są asocjacjami n-arnymi. Osoba imię Firma rodzaj pracuje w Klasy i asocjacja na diagramie klas

4 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 4/33 Oznaczanie asocjacji Nazwa asocjacji (np. pracuje_dla), wyznacza semantykę asocjacji w modelu pojęciowym opisującym daną dziedzinę przedmiotową. Czarny trójkącik określa kierunek czytania. Na diagramie poniżej oznacza to, że to osoba pracuje dla firmy, a nie firma dla osoby. Firma Osoba pracuje_dla Asocjacje mogą być wyposażone w oznaczenia liczności (ang. multiplicity). Liczność oznacza, ile obiektów innej klasy może być powiązane z jednym obiektem danej klasy; zwykle określa się to poprzez parę liczb (całowite, nieujemne), oznaczających minimalną i maksymalną liczbę takich obiektów.

5 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 5/33 Liczność asocjacji (1) Cecha o dużym znaczeniu informacyjnym w analizie (i modelowaniu w ogóle).  jaka jest minimalna liczba obiektów B powiązana z jednym obiektem A, A --> B  jaka jest maksymalna liczba obiektów B powiązana z jednym obiektem A, A --> B  jaka jest minimalna liczba obiektów A powiązana z jednym obiektem B, B --> A  jaka jest maksymalna liczba obiektów A powiązana z jednym obiektem B, B --> A. AAAA B A BB AB: min = 0, max = 1 BA: min = 1, max = 2 AB: min = 1, max = 3 BA: min = 2, max = 3 A B A B a) b) ,2 AAAA B A BB ,3 b) a) Zwykle, minimalna liczba jest 0 lub 1, maksymalna zaś 1 lub * (dowolnie dużo). Jeżeli asocjacja wiąże klasy A i B, to istotne jest:

6 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 6/33 Liczność asocjacji (2) Liczność jest oznaczana na obu końcach asocjacji. 1 1,2,3,... 2,3,4,... 3,4,5 2,4,18 1, ? 0,1 0,1,2, * 2..* ,4, * * UML znaczenie PaństwoStolica FirmaPracownik OsobaAdres 1 * 0..*0..1 Oznaczać czy nie oznaczać liczność 1? Przykłady:

7 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 7/33 Asocjacje skierowane Zamówienie dataZłożenia czyZapłacone sumaDoZapłaty realizuj() zamknij() Klient nazwisko adres wiarygodność() *1 Produkt *1 1 * Na diagramach UML można oznaczać kierunek nawigowania wzdłuż danej asocjacji. W takim przypadku asocjacja jest rysowana w postaci strzałki; nawigacja jest możliwa zgodnie z jej kierunkiem, ale nie odwrotnie. PozycjaZamówienia ilość cena czyZrealizowana

8 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 8/33 Role asocjacji (1) Asocjacje mogą być także wyposażone w nazwy ról (przy końcach asocjacji), np. pracodawca i pracownik. Firma Osoba pracuje_dla * 1..* pracodawcapracownik szef podwładny * 0..1 Role asocjacji są niezbędne, gdy powiązania łączą obiekty tej samej klasy. Jak oznaczać asocjacje binarne? (1) Można opuszczać nazwę asocjacji, gdy jest oczywista (?) i jest jedyną asocjacją łączącą dwie klasy. FirmaPracownik 1..*1

9 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 9/33 Role asocjacji (2) jest_członkiem 1..* * jest_przewodniczącym 1* Na diagramie powyżej, dwie asocjacje łączą te same klasy; w takim wypadku (dwie klasy połączone więcej niż jedną asocjacją) wszystkie asocjacje muszą być oznaczone. (2) Do oznaczenia asocjacji można użyć nazwy, dwóch ról lub jednej roli. Pracownik szef * 0..1 Z diagramów, dla zwiększenia czytelności, usuwa się wszelką informację redundantną – dlatego jednoczesne używanie zarówno nazwy, jak i ról asocjacji nie jest zalecane. OsobaKomitet

10 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 10/33 Atrybuty asocjacji Plik Użytkownik Prawo dostępu dostęp dostępny dla { dostęp oznacza: czytanie lub czytanie-pisanie} * * Osoba nazwisko pesel adres Firma nazwa adres Zatrudnienie zarobek stanowisko szef pracuje_w Ocena wydajności ocena 0..1 * 1..* Przykład 1: Przykład 2:

11 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 11/33 Kiedy wykorzystywać atrybuty asocjacji? Forma nie zalecana, mniej elastyczna: np. po zmianie powiązania na wiele-do-wielu trzeba zmieniać położenie atrybutów. Zalecane jest, by przypisywać do klasy tylko te atrybuty, które są dla tej klasy stabilne. Eksperyment myślowy: co będzie, jeżeli liczność asocjacji się zmieni? Dość często okazuje się wtedy, że atrybut jest atrybutem asocjacji, a nie klasy. Osoba nazwisko pesel adres Firma nazwa adres pracuje_w Zatrudnienie zarobek stanowisko * Osoba nazwisko pesel adres zarobek stanowisko Firma nazwa adres pracuje_w *

12 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 12/33 Atrybuty i asocjacje pochodne Własność pochodna jest zdefiniowana poprzez funkcję działającą na jednym lub więcej elementach modelu, które też mogą być pochodne. Własność pochodna oznaczana jest przez poprzedzenie jej nazwy ukośnikiem /. data_urodzenia /wiek wiek = data_bieżąca - data_urodzenia Asocjacja pracuje_w jest asocjacją pochodną, którą można wyznaczyć poprzez asocjacje zatrudnia i zlokalizowana_w. Asocjację pochodną oznacza się poprzedzając ukośnikiem nazwę asocjacji lub jej rolę. atrybut pochodny: /wiek WydziałSekcjaPracownik zatrudnia zlokalizowana_w /pracuje_w * * * * Osoba asocjacja pochodna: /pracuje_w Budynek

13 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 13/33 Dziedziczenie asocjacji (1) Aby obie asocjacje a (diagram po lewej stronie) mogły zostać zastąpione jedną asocjacją a poprowadzoną od nadklasy K1 do klasy K (diagram po prawej stronie), asocjacje a z diagramu po lewej stronie muszą spełniać następujące warunki:  muszą mieć tę samą semantykę,  muszą mieć tę samą strukturę,  asocjacja a musi łączyć klasę K z wszystkimi podklasami klasy K1 (?). K1 K2 K3 K4 K a a ? K1 K2 K3 K a

14 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 14/33 Dziedziczenie asocjacji (2) Referat {abstract} tytuł autorzy: [1..*] Referat Zaproszony Referat zwykły ocena Sesja nazwa data Termin godz. Termin godz. wygłaszany 1..* 0..1 wygłaszany Termin godz * Zastosowanie dziedziczenia asocjacji spowodowało, że część informacji nie została przeniesiona na nowy diagram (zmiany zostały oznaczone czerwonym kolorem). wygłaszany Nazwa dla klasy asocjacji ? Ograniczenia dla przeniesienia brakującej informacji.

15 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 15/33 Redukcja liczności K1 K a1 a2 1y K2 1 x K1K2 K a1 a2 xy Wykorzystanie klasy pośredniczącej dla redukcji liczności związków wiele-do-wielu Przykład: Zatrudnienie stanowisko pensja Osoba 1..* Firma * Osoba * Firma 1..* Zatrudnienie stanowisko pensja 1 1 /pracodawca 1..* * gdzie: x, y oznaczają liczności wiele pracodawca

16 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 16/33 Role wielowartościowe (1) Rola wielowartościowa: to taka rola, dla której górna granica liczności jest większa od 1. K1K2 r1r2 Przyjmuje się domyślnie:  zbiór obiektów, opisujący daną rolę, jest nieuporządkowany,  dany obiekt pojawia się tylko jeden raz w w zbiorze obiektów opisującym rolę,  powyższe reguły mogą zostać zmienione dzięki ograniczeniom {ordered}, {bag} i stereotypowi «history ». * 1 Rola r2 jest tu rolą wielowartościową. Uwaga: W sensie dosłownym, liczności obu końców asocjacji oznaczają liczności obu ról. :K1 :K2 a a a K1K a * {ordered} Ograniczenie {ordered} pozwala na uporządkowanie zbioru obiektów, który opisuje daną rolę. a źle dobrze

17 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 17/33 Role wielowartościowe (2) Między dwoma tymi samymi obiektami może wystąpić więcej niż jedno powiązanie (np. jak na diagramie poniżej), ale nie mogą to być – jak poprzednio – powiązania o tej samej semantyce. OsobaFirma pracuje jest dyrektorem * Nowak : OsobaIBM : Firma pracuje jest dyrektorem Ograniczenie: {bag} Zatrudnienie data zatrudnienia data zwolnienia stanowisko pensja Osoba 1..* Firma * {bag} X:Osoba Y:Firma :Zatrudnienie programista 2000 :Zatrudnienie NULL analityk 5000 {subset} pracuje

18 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 18/33 Role wielowartościowe (3) Stereotyp: «history» dla oznaczenia roli pracodawca Zatrudnienie data zatrudnienia data zwolnienia stanowisko pensja Osoba 1..* Firma * «history» pracodawca :Osoba :Firma :Zatrudnienie programista 2000 :Zatrudnienie NULL analityk 5000 Stereotyp «history» – podobnie jak ograniczenie {bag} – pozwala na utworzenie więcej niż jednego powiązania (o danej semantyce) między dwoma obiektami; wykorzystywanie go jest ukierunkowane na rejestrowanie zmian w czasie. pracuje

19 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 19/33 Role wielowartościowe (4) Zatrudnienie data zatrudnienia data zwolnienia stanowisko pensja Osoba 1..* Firma * :Osoba :Firma :Zatrudnienie programista 2000 :Zatrudnienie NULL analityk 5000 Zastosowanie klasy pośredniczącej Zatrudnienie wprawdzie pozwala na utworzenie wielu powiązań pracuje między dwoma tymi samymi obiektami, wystąpieniami klas Osoba i Firma, ale nie uwidacznia tego faktu. 11

20 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 20/33 Agregacja (1) Agregacja: jest rodzajem asocjacji; zadaniem agregacji jest modelowanie związku całość-część.  agregacja jest asocjacją – dla obu jej końców są określane liczności, a także może mieć atrybuty, np. GrupaStudent Termin od do *  agregacja jest wykorzystywana do modelowania związku całość-część GrupaStudent * całość część

21 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 21/33 Agregacja (2) Inne nazwy dla ról agregacji: całość  składa się z  zawiera  obejmuje, itp. część  wchodzi w skład  jest zawarta w  należy, itp. Nazwa agregacji i nazwy jej ról, jako oczywiste, są zazwyczaj pomijane. A B Własności agregacji:  jest relacją niesymetryczną, tzn. jeśli B jest częścią A, to A nie jest częścią B A BC  jest relacją przechodnią (tranzytywną), tzn. jeśli C jest częścią B i B jest częścią A, to C jest częścią A

22 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 22/33 Agregacja (3) Kryteria służące analitykowi pomocą w podjęciu decyzji czy do modelowania pojęciowego wykorzystać agregację, czy też zwykłą asocjację:  kryterium istnienia (część nie istnieje samodzielnie bez całości),  kryterium wstawiania (nie ma sensu wstawianie części do systemu, jeśli nie wstawiono do niego całości),  kryterium usuwania (usuwanie całości powinno skutkować usunięciem wszystkich powiązanych z tą całością części),  kryterium fizycznej części. Wszystkie kryteria zawiodły, a mimo to zdecydowano się zastosować agregację, bo lepiej niż zwykła asocjacja modeluje związek część-całość – pewne operacje można wykonywać na całości, a nie na każdej z części oddzielnie. Grupa Termin od do * zmień plan Student zmień plan Operacja zmień plan została oznaczona jako ta, która będzie automatycznie wykonana dla wszystkich części, wtedy gdy zostanie wywołana dla całości (tzw. propagacja operacji). plan

23 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 23/33 Pojęcie agregacji jest rozumiane na dwa sposoby: W UML te dwie sytuacje zostały rozdzielone. Pierwszą formę nazwano kompozycją. Kompozycja oznacza, że: (1)cykl życiowy części zawiera się w cyklu życiowym całości, (2)część nie może być współdzielona – co wynika z (1).  Jako „silny” związek część-całość pomiędzy obiektami świata rzeczywistego; np. silnik jest częścią samochodu.  Jako „słabszy” związek część-całość wykorzystywany najczęściej do modelowania w sytuacjach, takich jak np. gdy informacja o części jest współdzielona przez wiele całości (np. jeden student może wchodzić w skład wielu grup). Kompozycja jako mocna postać agregacji Kc Ks * * agregacja Kc Ks * kompozycja

24 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 24/33 Wielobok Punkt Styl kolor czyWypełniony Okrąg promień { ordered } 3..* * * Agregacja a kompozycja; przykład W przedstawionym rozwiązaniu, punkt na płaszczyźnie, w którym przecina się wiele środków Okręgów i wierzchołków Wieloboków, jest odwzorowywany w wiele (?) obiektów klasy Punkt, natomiast mniej problemów nastręcza usuwanie punktów * * {alternatywnie}

25 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 25/33 Alternatywne sposoby prezentowania kompozycji Samochód k: Koło [4..5] s: Silnik Samochód KołoSilnik k: Koło 1 s: Silnik Samochód k: Koło s: Silnik Samochód

26 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 26/33 Agregacja rekursywna (1) Agregacja rekursywna: ? K ? Obiekt klasy K może zarówno wchodzić w skład innych obiektów klasy K, jak i zawierać obiekty klasy K. K 0..1 :K  Co by było, gdyby któryś z końców tej agregacji (lub oba końce) oznaczyć licznością dokładnie 1 zamiast liczności opcjonalnej 0..1 ?  Jakie zmiany wprowadziłoby do powyższego diagramu zastosowanie zwykłej asocjacji zamiast agregacji ?  Czy można tu zastosować kompozycję?

27 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 27/33 Agregacja rekursywna (2) K 0..1 * :K  Czy można tu zastosować liczność dokładnie 1 zamiast 0..1 i liczność 1..* zamiast liczności * ? Część nazwa materiał rozmiary 0..1 * III Firma Oddział 1 * * 0..1  Dla którego z obu powyższych diagramów możliwość zastosowania kompozycji wydaje się być bezdyskusyjna?

28 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 28/33 Agregacja rekursywna (3) K * * :K Przykłady agregacji rekursywnych: Program 1..* Blok Instrukcja złożona Instrukcja prosta * I II 2-gi operand Człon * Wyrażenie operator binarny Zmienna nazwa 1 Stała wartość * 1 1-szy operand  Jak wyglądałby diagram obiektowy dla wyrażenia, np. (x + y/2) * (x/3 - y)

29 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 29/33 Kwalifikator jest atrybutem asocjacji (lub zestawem atrybutów), którego wartości służą do podziału zbioru obiektów definiowanych przez klasę znajdującą się na przeciwległym do kwalifikatora końcu asocjacji. Asocjacja kwalifikowana (1) Bank Osoba * * Bank/Osoba nr konta Bank * 0..1 Osoba nr konta Bank Osoba nr konta * 0..1 Bank Osoba nr konta 0..1 kwalifikator asocjacji 1

30 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 30/33 Asocjacja kwalifikowana (2) Zamówienie WierszZamówienia nazwa produktu ilość * pozycja 1 nazwa produktu Zamówienie WierszZamówienia ilość 0..1 pozycja 1

31 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 31/33 Asocjacja n-arna Asocjacja n-arna: to asocjacja, której wystąpienia łączą n obiektów, będących instancjami co najwyżej n klas: 3-arna – 3 obiekty (inna nazwa dla tej asocjacji to ternarna), 4-arna – 4 obiekty, itd. Dana klasa może pojawić się na więcej niż jednej pozycji w asocjacji. Asocjacja binarna ze swoją uproszczoną notacją i pewnymi dodatkowymi własnościami (takimi jak możliwość ustalania kierunku nawigowania, kwalifikatorów, związków agregacji czy kompozycji) jest specjalnym rodzajem asocjacji n-arnej (dla n=2). Asocjacja binarna i 2-arna są równoważne, nie istnieje między nimi różnica semantyczna, inny jest tylko sposób reprezentowania. Wymienione wyżej dodatkowe własności asocjacji binarnych są zabronione dla asocjacji n-arnych, gdzie n > 2. Notacja: K2 K1K3 A K1 K2 K3 r1 r2 asocjacja 3-arna asocjacja 4-arna

32 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 32/33 Asocjacja n-arna (cd.) Liczność asocjacji: Specyfikowanie liczności dla asocjacji n-arnych nie jest tak oczywiste, jak dla asocjacji binarnych i różni autorzy wygłaszają na ten temat różne zdania. UML odrzuciła poglądy, że liczność danej roli powinna być ustalana w odniesieniu do liczności pozostałych ról, traktowanych oddzielnie. Przyjęto zasadę, że liczność n-tej roli jest opisana przez zbiór możliwych wartości liczności, gdy sytuacja na n-1 końcach asocjacji jest ustalona. Np. dla ternarnej asocjacji łączącej klasy A, B i C liczność roli C specyfikuje, ile obiektów klasy C jest powiązanych z każdą możliwą parą obiektów klas A i B. Taka reguła jest zgodna z regułą przyjętą dla specyfikowania liczności asocjacji binarnych. Atrybuty asocjacji: ZespółGracz Rok Zapis gole nasze gole ich * bramkarz * * Mecz

33 E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 33/33 Obejście asocjacji n-arnej Asocjacje n-arne mają sens wtedy, gdy do identyfikacji powiązania (n-arnego) potrzebne są wszystkie obiekty, tzn. gdy liczność każdej z ról jest “wiele” (?). W pozostałych przypadkach asocjację n-arną warto jest zastępować asocjacjami binarnymi, które są łatwiejsze do implementacji i wyposażone w dodatkowe własności, o których była mowa poprzednio. Niestety traci się informację o związku, łączącym grupę obiektów w pewną całość. K1K3 K2 A a1 a2 m1 Asocjacja n-arna zostaje zamieniona na jedną klasę i n asocjacji binarnych. K1K3 K2 KA a1 a2 m1 A


Pobierz ppt "E. Stemposz. UML i Analiza Obiektowa, Wykład 5, Slajd 1/33 Wykład 5 Model obiektowy (3) dr inż. Ewa Stemposz"

Podobne prezentacje


Reklamy Google