MAS dr. Inż. Mariusz Trzaska Wykład 5 Model obiektowy cz. 3
Zagadnienia Dziedziczenie asocjacji Asocjacje pochodne Redukcja liczności Role wielowartościowe Trochę więcej o agregacji Agregacja rekursywna Trochę więcej o asocjacji kwalifikowanej Trochę więcej o mechanizmach rozszerzalności Wykorzystano materiały z wykładu PRI autorstwa dr inż. Ewy Stemposz oraz prof. Kazimierza Subiety 2
Dziedziczenie asocjacji () K K2 K3 K4 K a a K a K2 K3 K Aby obie asocjacje a (diagram po lewej stronie) mogły zostać zastąpione jedną asocjacją a poprowadzoną od nadklasy K do klasy K (diagram po prawej stronie), asocjacje a z diagramu po lewej stronie powinny spełniać następujące warunki: powinny mieć tę samą semantykę, powinny mieć tę samą strukturę, byłoby dobrze, gdyby asocjacja a łączyła klasę K z wszystkimi podklasami klasy K (? 3
Dziedziczenie asocjacji (2) 0.. Referat {abstract} tytuł autorzy[..] Zaproszony Zwykły ocena Termin godz... wygłaszany wygłaszany.. 0.. 0.. Sesja nazwa data Nazwa dla klasy asocjacji? wygłaszany Termin godz. Termin godz. Wykorzystanie faktu, że asocjacje są dziedziczone spowodowało, że część informacji nie została przeniesiona na nowy diagram (zmiany oznaczono czerwonym kolorem). Aby zapobiec utracie informacji, do diagramu należałoby wprowadzić odpowiednie ograniczenia. 4
Asocjacje pochodne pracownik Osoba.... mieszka Miasto ) Jeśli Osoba mieszka w mieście, w którym pracuje, to jedna z asocjacji: mieszka lub znajduje się albo powinna zostać oznaczona jako pochodna albo powinna być usunięta z diagramu. 0..? pracodawca Firma znajduje się.. Możliwe asocjacje pochodne: /mieszka lub /znajduje się 2) Jeśli liczność roli pracodawca zmienimy na 0.., to asocjacja mieszka nie będzie pochodna, ponieważ nie dla wszystkich obiektów powiązania mieszka będą mogły być wydedukowane. Podobnie, jeśli liczność roli pracownik zmienimy na, to asocjacja znajduje się nie będzie pochodna. 5
Redukcja liczności Wykorzystanie klasy pośredniczącej dla redukcji liczności związków wiele-do-wie K x K y K2 K K a a2 y x K2 a a2 gdzie: x, y oznaczają liczności wiele Przykład: Osoba.. Zatrudnienie stanowisko pensja Firma Osoba.. Zatrudnienie.. stanowisko pensja Firma /pracodawca 6
Role wielowartościowe () Rola wielowartościowa to taka rola, dla której górna granica liczności jest większa o K r r2 K2 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. Ograniczenie {ordered} pozwala na uporządkowanie zbioru obiektów opisanego daną rolą. K a {ordered}..2 K2 W UML przyjmuje się domyślnie, że: zbiór obiektów, opisywany daną rolą, jest nieuporządkowany, dany obiekt pojawia się tylko jeden raz w w zbiorze obiektów opisanym rolą, powyższe reguły mogą zostać zmienione dzięki ograniczeniom {ordered}, {bag} i stereotypowi «history». źle dobrze :K :K a a a a :K2 :K2 :K2 7
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. Osoba pracuje {subset} jest dyrektorem Ograniczenie: {bag} pracuje Osoba.. Firma Zatrudnienie data zatrudnienia data zwolnienia stanowisko pensja 0.. Firma 0.. Nowak : Osoba pracuje jest dyrektorem pracuje :Zatrudnienie 0.0.990 5.2.995 programista 2000 IBM : Firma {bag} X:Osoba Y:Firma pracuje :Zatrudnienie 0.0.998 NULL analityk 5000 8
Role wielowartościowe (3) Stereotyp: «history» dla oznaczenia roli pracodawca Osoba.. «history» pracodawca Firma pracuje :Zatrudnienie Zatrudnienie data zatrudnienia data zwolnienia stanowisko pensja :Osoba Stereotyp «history» podobnie jak ograniczenie {bag} pozwala na utworzenie więcej niż jednego powiązania (o danej semantyce) między dwoma obiektami; wykorzystywanie tego stereotypu jest ukierunkowane na rejestrowanie zmian w czasie. 0.0.990 5.2.995 programista 2000 pracuje :Zatrudnienie 0.0.998 NULL analityk 5000 :Firma 9
Role wielowartościowe (4) Zatrudnienie Osoba data zatrudnienia data zwolnienia stanowisko pensja.. Firma :Zatrudnienie :Osoba 0.0.990 5.2.995 programista 2000 :Firma 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 pozwala na uwidocznienie tego faktu. :Zatrudnienie 0.0.998 NULL analityk 5000 0
Agregacja () 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, ponadto (jak każda asocjacja) może mieć atrybuty, np. Grupa..5 Termin od do Student agregacja jest wykorzystywana do modelowania związku całość-część Grupa..5 całość część Student
Inne nazwy dla ról agregacji: Agregacja (2) całość askłada się z azawiera aobejmuje, itp. część awchodzi w skład anależy ajest zawarta w, itp. Nazwa agregacji i nazwy jej ról, jako oczywiste, są z reguły (?) pomijane. Własności agregacji: A B jest relacją niesymetryczną, tzn. jeśli B jest częścią A, to A nie jest częścią B A B C jest relacją przechodnią (tranzytywną), tzn. jeśli C je częścią B i B jest częścią A, to C jest częścią A 2
Agregacja (3) Kryteria służące analitykowi pomocą w podjęciu decyzji czy do modelowania pojęciowego wykorzystać agregację/kompozycję, czy też zwykłą asocjację: plan 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, w drugą stronę ta reguła nie obowiązuje), kryterium fizycznej części. Grupa zmień plan zmień plan..5 Termin od do Student plan zmień plan Wszystkie kryteria zawiodły, a mimo to zastosowano agregację, gdyż 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. 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). 3
Agregacja rekursywna Agregacja rekursywna ()? K? Obiekt klasy K może zarówno wchodzić w skład innych obiektów klasy K, jak i może zawierać obiekty klasy K. 0.. K 0.. :K :K :K a Co by było, gdyby któryś z końców tej agregacji (lub oba końce) oznaczyć licznością dokładnie zamiast liczności opcjonalnej 0..? a Jakie zmiany wprowadziłoby do powyższego diagramu zastosowanie zwykłej asocjacji zamiast agregacji? a Czy można tu zastosować kompozycję? 4
Agregacja rekursywna (2) K 0.. :K :K :K :K :K :K :K a Czy można tu zastosować liczność dokładnie zamiast 0.. i liczność.. zamiast liczności? a Czy można tu zastosować kompozycję? I Część nazwa materiał rozmiary 0.. II Firma Oddział 0.. b Dla którego z obu powyższych diagramów możliwość zastosowania kompozycji wydaje się być bezdyskusyjna? 5
Agregacja rekursywna (3) o Modelowanie nie ogranicza się tylko do opisywania kwestii biznesowych, np. produktów, klientów, pracowników. o Jak wyglądałby diagram klas służący do przechowywania wyrażeń matematycznych, np.: (x + y/2) (x/3 - y) 6
Agregacja rekursywna (4) K :K :K :K :K Czy tu można zastosować kompozycję? :K :K :K Przykłady agregacji rekursywnych I Program II.. Blok 2-gi operand -szy operand Człon a Jak wyglądałby diagram obiektowy dla wyrażenia, np. (x + y/2) (x/3 - y) Instrukcja złożona Instrukcja prosta Wyrażenie 0.. operator binarny Gdzie można by tu zastosować kompozycję w I czy w II? Zmienna nazwa Stała wartość 7
Asocjacja kwalifikowana () Katalog Plik nazwa { nazwa pliku jest unikatowa w ramach katalogu } Katalog nazwa pliku 0.. Plik Perspektywa pojęciowa plik jest w ramach katalogu jednoznacznie identyfikowany przez nazwę. Perspektywa projektowa wskazanie na to, że katalog plików można zorganizować jako tablicę asocjacyjną (słownik) (przeszukiwanie za pomocą nazwy pliku). 8
Tablica Tablica Asocjacja kwalifikowana (2) 00 Kwadrat rząd kolumna przypisany do przypisany do rząd kolumna Kwadrat Kwalifikator asocjacji może być określony przez więcej niż jeden atrybut. Warunek wartości tych atrybutów muszą pozwolić na jednoznaczną identyfikację obiektu/ grupy obiektów w ramach pewnego zbioru obiektów (tutaj w ramach zbioru kwadratów przypisanych do jednej konkretnej tablicy, czyli do jednego obiektu klasy Tablica). Asocjacja kwalifikowana, jak każda asocjacja, może posiadać atrybuty. Bank nazwa Osoba imię nazwisko Bank nazwa nr. konta 0.. Osoba imię nazwisko nr konta data założ. data założ. 9
Ograniczenia Ograniczenia specyfikują restrykcje nakładane na elementy modelu. Mogą stanowić wyrażenia języka naturalnego czy języka formalnego (np. OCL w UML), mogą też przyjmować postać formuły matematycznej lub fragmentu kodu (czy też pseudokodu). Notacja: Ograniczenia są zawarte wewnątrz {} i umieszczane za elementem w klasie, lub poza klasą. Z reguły są umieszczane w komentarzu (przykład na następnej folii). ograniczenie statyczne Pracownik Pracownik imię {<=0 000} imię nazwisko nazwisko {pensja nie wzrasta o pensja pensja {<=0 000} więcej niż 300} zmień pensję (pensja) ograniczenie dynamiczne W przypadku ograniczenia dynamicznego w przeciwieństwie do ograniczenia statycznego interesuje nas poprzedni stan elementu, dla którego wyspecyfikowano ograniczenie. Czy powiedzie się próba zmiany pensji z 2500 na 5500, przy ograniczeniach jak powyżej? 20
Ograniczenia; przykłady Symbole, takie jak - - - - oraz - - - - > są używane do wskazywania elementów, na które zostały nałożone ograniczenia. Konto należy do {xor} 0.. 0.. Firma Osoba podwładny 0.. szef Osoba.. pracownik 0.. pracodawca Firma {Osoba.pracodawca = Osoba.szef.pracodawca} ograniczenie w komentarzu 2
Ograniczenia predefiniowane; przykłady j. angielski j. polski {complete} {incomplete} {disjoint} {overlapping} {or} {xor} {ordered} {subset} {bag} {hierarchy} {dag} dag - directed acyclic graph {podział całkowity} {podział nie całkowity} {podział rozłączny} {podział nierozłączny} {lub} (suma logiczna) {albo} (różnica symetryczna) {uporządkowane} {podzbiór} {wielozbiór} {hierarchia} {graf acykliczny skierowany} 22