1 / 25

Projektowanie systemów informacyjnych

Projektowanie systemów informacyjnych. Wykład 5. Model obiektowy (2). Ewa Stemposz, Kazimierz Subieta Instytut Podstaw Informatyki PAN, Warszawa Polsko-Japońska Wyższa Szkoła Technik Komputerowych, Warszawa. Zagadnienia. Asocjacja binarna Agregacja a kompozycja

zita
Download Presentation

Projektowanie systemów informacyjnych

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Projektowanie systemów informacyjnych Wykład 5 Model obiektowy (2) Ewa Stemposz, Kazimierz Subieta Instytut Podstaw Informatyki PAN, Warszawa Polsko-Japońska Wyższa Szkoła Technik Komputerowych, Warszawa

  2. Zagadnienia Asocjacja binarna Agregacja a kompozycja Modelowanie generalizacji-specjalizacji Obejście dziedziczenia wielokrotnego Asocjacja kwalifikowana Asocjacja n-arna Ograniczenia

  3. Powiązanie a asocjacja binarna Powiązanie Fizyczny lub pojęciowyzwiązek między obiektami, odwzorowywujący związek istniejący między odpowiednimi bytami w analizowanej dziedzinie przedmiotowej. 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 binarną. :Osoba Ewa :Osoba Jasio :Osoba Kasia Osoba imię pracuje_w pracuje_w pracuje_w pracuje_w :Firma Szewska :Firma Krawiecka Firma rodzaj Obiekty i powiązania na diagramie obiektów Klasy i asocjacja na diagramie klas Asocjacje mogą też łączyć więcej niż dwie klasy, tzw. asocjacje n-arne.

  4. Oznaczanie asocjacji Czarny trójkącik określa kierunek (czytania) wyznaczony przez nazwę asocjacji. W danym przypadku określa on, że osoba pracuje dla firmy, a nie firma pracuje dla osoby. Nazwy asocjacji, takie jak np. pracuje_dla, wyznaczają znaczenie tej asocjacji w modelu pojęciowym opisującym dziedzinę przedmiotową. pracuje_dla 1..* 1 Firma Osoba Asocjacje mogą być wyposażone w oznaczenia liczności. 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 (znaków), oznaczającą minimalną i maksymalną liczbę takich obiektów.

  5. Liczność asocjacji (1) A B: min = 0, max = 1 A B: min = 1, max = 3 B A: min = 2, max = 3 Liczność asocjacji, to cecha o dużym znaczeniu informacyjnym w analizie i modelowaniu. Jeżeli asocjacja wiąże klasy A i B, to istotne jest: • 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. Zwykle, minimalna liczba jest 0 lub 1, maksymalna zaś 1 lub * (dowolnie dużo). a) b) a) b) A A A A A A A A A A A A 2,3 1,2 B B B B B B 0..1 1..3 B B B A: min = 1, max = 2

  6. Liczność asocjacji (2) Liczność jest oznaczana na obu końcach asocjacji. Przykłady: UML znaczenie Państwo Stolica 1 1, 2, 3, ... 2, 3, 4, ... 3, 4, 5 2, 4, 18 1, ? 0, 1 0, 1, 2, ... 0, 1, 2, ... 1 1..* 2..* 3-5 2,4,18 0..1 0..* * 1 * Firma Pracownik 0..* 0..1 Osoba Adres Oznaczać czy nie oznaczać liczność 1?

  7. Asocjacje skierowane PozycjaZamówienia ilość cena czyZrealizowana Zamówienie dataZłożenia czyZapłacone sumaDoZapłaty realizuj() zamknij() Klient nazwisko adres wiarygodność() * 1 1 Na diagramach UML można zaznaczać kierunek nawigacji 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. * * 1 Produkt

  8. Role asocjacji (1) Asocjacje mogą być wyposażone w nazwy ról (przy końcach), np. pracodawca i pracownik.. Rola określa kierunek nawigowania, specyfikując klasę „cel”, np. rola pracodawca wyznacza kierunek nawigowania od obiektu klasy Osoba do powiązanych z nim obiektów klasy Firma. W tym sensie liczność asocjacji oznacza liczność roli. podwładny * pracuje_dla 1..* * Firma Osoba pracodawca pracownik szef 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. 1 1..* Firma Pracownik

  9. Role asocjacji (2) jest_członkiem * * Osoba Komitet jest_przewodniczącym 1 * Na diagramie powyżej, dwie asocjacje łączą te same klasy; w wypadku, gdy dwie klasy są połączone więcej niż jedną asocjacją, wszystkie asocjacje muszą być oznaczone. (2) Do oznaczenia asocjacji można użyć nazwy lub dwóch ról lub jednej roli. * Pracownik 0..1 szef Z diagramów, z założenia, usuwa się wszelką informację redundantną (dla zwiększenia ich czytelności) - dlatego używanie nazwy i ról asocjacji jednocześnie nie jest polecane.

  10. Atrybuty asocjacji Plik * Prawo dostępu dostęp dostępny dla zatrudnia Firma nazwa adres Osoba nazwisko pesel adres 1..* 0..1 { dostęp oznacza: czytanie lub czytanie-pisanie} * szef Użytkownik Zatrudnienie zarobek stanowisko 0..1 kieruje * pracownik Ocena wydajności ocena Jeśli klasa asocjacji nie zawiera metod ani asocjacji do innych klas to jej nazwa może być opuszczona dla podkreślenia faktu, że chodzi tu wyłącznie o atrybuty asocjacji.

  11. Kiedy stosować atrybuty asocjacji? pracuje_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. Firma nazwa adres Osoba nazwisko pesel adres 1..* 0..1 Zatrudnienie zarobek stanowisko pracuje_w Firma nazwa adres Osoba nazwisko pesel adres zarobek stanowisko 0..1 1..* Forma nie zalecana, mniej elastyczna: np. po zmianie powiązania na wiele-do-wielu trzeba zmieniać położenie atrybutów.

  12. Atrybuty i asocjacje pochodne Cecha pochodna jest zdefiniowana poprzez funkcję działającą na jednym lub więcej bytach modelu, które też mogą być pochodne. Cecha pochodna oznaczana jest ukośnikiem /. atrybut pochodny: /wiek Osoba data_urodzenia /wiek {wiek = data_bieżąca - data_urodzenia} zatrudnia * * Wydział Sekcja Pracownik * * zlokalizowana_w /pracuje_w Budynek asocjacja pochodna: /pracuje_w Asocjacja pracuje_w jest asocjacją pochodną, którą można wyznaczyć poprzez asocjacje zatrudnia i zlokalizowana_w. Asocjację pochodną można oznaczyć poprzedzając ukośnikiem nazwę lub rolę asocjacji.

  13. Przykładowy diagram klas Osoba poprzedza zapisany_na Student Pracownik 1..* 0..1 Kurs 1 Profesor * zawiera prowadzi 1 następuje_po 1..* 1..* Wykład *

  14. Agregacja • Agregacja jest szczególnym przypadkiem asocjacji wyrażającym zależność część-całość. Np. silnik jest częścią samochodu. • Nie istnieje jednak powszechnie akceptowana definicja agregacji. P. Coad podaje przykład agregacji jako związek pomiędzy organizacją i jej pracownikami; dla odmiany J. Rumbaugh twierdzi, że firma nie jest agregacją jej pracowników. • W wielu przypadkach związki agregacji są oczywiste. Jednakże wątpliwości powstają nawet w przypadku samochodu i silnika. Np. silnik może być towarem w sklepie nie związanym z żadnym samochodem. Ponadto, czy chodzi o konkretny samochód i silnik, czy też o typ samochodu i typ silnika? • Mętlik dookoła pojęcia agregacji wynika również z tego, że jest ona nadużywana w celu usprawiedliwienia pewnych ograniczeń modelu obiektowego. • Np. popularne wyjaśnienie powodów braku (wielo) dziedziczenia podaje, że można je „obejść przez agregację”, co jest nonsensem z punktu widzenia celów modelowania pojęciowego, tak samo jak zdanie: „asocjacje są zbędne, bo można je obejść przez atrybuty”. Wszysto można obejść .... w assemblerze!

  15. Kompozycja jako mocna postać agregacji Pojęcie agregacji jest rozumiane na dwa sposoby: • Jako związek część-całość pomiędzy obiektami świata rzeczywistego; np. silnik jest częścią samochodu. • Jako pomocniczy środek do modelowania dowolnej innej sytuacji, kiedy trzeba wydzielić podobiekty w pewnych obiektach. np. informacja o ubezpieczeniach wewnątrz obiektów pracowników. W UML te dwie sytuacje zostały rozdzielone. Pierwszą formę nazwano kompozycją. Kompozycja oznacza, że cykl życiowy składowej zawiera się w cyklu życiowym całości, oraz że składowa nie może być współdzielona. 1 K Ks K Ks * * * agregacja kompozycja

  16. Agregacja a kompozycja; przykład {ordered} Punkt 3..* 0..1 0..1 Wielobok Okrąg promień * * Styl kolor czyWypełniony W przedstawionym rozwiązaniu, punkt na płaszczyźnie, w którym przecinają się okrąg i wielobok, jest odwzorowywany w dwa (?) obiekty klasy Punkt.

  17. Modelowanie generalizacji-specjalizacji zastosowano dziedziczenie zastosowano kompozycję Student Pracownik Student Pracownik Student Pracownik Osoba Osoba 0..1 0..1 {xor} Osoba Osoba {overlapping} 0..1 0..1 Student Pracownik Dzięki kompozycji, podobiekty Student czy Pracownik są mocniej związane z obiektem Osoba, niż gdyby do użyto modelowania asocjacji.

  18. Obejście dziedziczenia wielokrotnego Student Student Pracownik Pracownik Osoba Osoba nie polecane 1 1 0..1 Student/Pracownik Student/Pracownik Osoba 0..1 0..1 Pracownik Student

  19. Asocjacja kwalifikowana (1) Bank nr konta Osoba 1..* 0..1 0..1 Bank nr konta kwalifikator asocjacji 1 Osoba Bank Osoba * * Bank nr konta * Bank/Osoba 0..1 nr konta Osoba 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 jednym z końców tej asocjacji.

  20. Asocjacja kwalifikowana (2) Zamówienie WierszZamówienia nazwa produktu ilość 1 * pozycja Zamówienie WierszZamówienia ilość 1 0..1 nazwa produktu pozycja

  21. 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. asocjacja 3-arna asocjacja 4-arna Notacja K1 K3 K1 nazwa asocjacji K3 K2 K2

  22. Asocjacja n-arna; liczności Liczności 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 Rok sezon * * Zespół Gracz bramkarz * Zapis Mecz gole nasze gole ich

  23. Obejście asocjacji n-arnej K2 K2 A KA K1 K3 K1 K3 a1 a2 m1 KA a1 a2 m1 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ść. Asocjacja n-arna zostaje zamieniona na klasę i n asocjacji binarnych.

  24. Ograniczenia; przykład (1) Osoba Firma ograniczenie statyczne Pracownik dane osobowe stanowisko pensja {pensja <= 5000} {pensja nigdy nie maleje} Ograniczenia stanowią kolejny z mechanizmów rozszerzalności w UML (po stereotypach i wartościach etykietowanych). ograniczenie dynamiczne (ważny jest poprzedni stan) 0..1 1 Konto {xor} 1 0..1

  25. Ograniczenia; przykład (2) {Osoba.pracodawca = Osoba.szef.pracodawca} jest_członkiem * * Osoba Komitet {podzbiór} * jest_przewodniczącym podwładny Osoba zatrudnia 0..1 * * Firma pracownik pracodawca 0..1 szef Ograniczenie lub adnotacja

More Related