Projektowanie systemów informacyjnych

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Projektowanie baz danych
Programowanie obiektowe
Związki w UML.
Programowanie obiektowe
Modelowanie klas i obiektów
Projektowanie systemów informacyjnych
Agregacja Agregacja jest rodzajem asocjacji; zadaniem agregacji jest modelowanie związku całość-część. agregacja jest asocjacją: dla obu jej końców są.
Projektowanie systemów informacyjnych
Badania operacyjne. Wykład 2
Kamil Łącki Dominik Strzelichowski
Implementacja asocjacji
Materiały pochodzą z Platformy Edukacyjnej Portalu
Projektowanie systemów informacyjnych
Co UML może zrobić dla Twojego projektu?
08: ERD – podencje, łuki i pułapki
Projektowanie systemów informacyjnych
Projektowanie systemów informacyjnych
Diagramy klas w języku UML
Projektowanie systemów informacyjnych
E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, Wykład 8, Slajd 1 Projektowanie systemów informacyjnych Ewa Stemposz, Kazimierz Subieta.
Wstęp do programowania obiektowego
Projektowanie i programowanie obiektowe II - Wykład IV
Projektowanie i programowanie obiektowe II - Wykład II
Projektowanie - wprowadzenie
Model dziedziny. Świat rzeczywisty i jego model Świat rzeczywisty (dziedzina problemu) Świat obiektów (model dziedziny) Samochód Osoba Dom Modelowanie.
Układ równań stopnia I z dwoma niewiadomymi
Wykład 4 Analiza i projektowanie obiektowe
Wykład 5 UML - Unified Modeling Language
Wykład 3 Analiza i projektowanie strukturalne
Unified Modeling Language graficzny język wizualizacji, specyfikowania, tworzenia i dokumentowania systemów informatycznych.
Nadstruktura języka UML w wersji 2.2 Część V Wdrożenie (pakiet UML::Deployments)
Infrastruktura języka UML w wersji 2.2
Nadstruktura języka UML w wersji 2.2
Diagramy ER (Entity-relationship diagrams)
Źródła: podręcznikopracował: A. Jędryczkowski.
OMT - Model obiektów, cz.3.
OMT - Model obiektów, cz.1.
Dziedziczenie Maciek Mięczakowski
Wybrane zagadnienia relacyjnych baz danych
Związki Agregacje Związki n-arne Ograniczenia.
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
OCHRONA DANYCH OSOBOWYCH Dr hab. Mariusz Jagielski
Wprowadzenie do UML dr hab. inż. Kazimierz Subieta profesor PJWSTK.
Modelowanie obiektowe Diagramy klas
Intuicjonizm etyczny George’a E. Moore’a
Programowanie w języku C++
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Diagram klas Kluczowymi elementami są: klasy (class)
E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, Wykład 8, Slajd 1 Projektowanie systemów informacyjnych Ewa Stemposz, Kazimierz Subieta.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Projektowanie bazy danych z użyciem diagramów UML Obiektowe projektowanie relacyjnej bazy danych Paweł Jarecki.
Geneza obiektowości Obiektowość jest stosunkowo nową ideologią, która wynika z zaobserwowanych wad istniejącego świata i podaje jakąś receptę, jak te wady.
Modelowanie model związków encji
Wstęp do systemów informatycznych Diagramy klas. Odbiór świata  Myślenie o dziedzinie problemu powinno być możliwie zbliżone do myślenia o systemie 
Wykład 5 Model obiektowy (3)
E. Stemposz. UML i Analiza Obiektowa, Wykład 3, Slajd 1/18 Wykład 3 Model obiektowy (1) dr inż. Ewa Stemposz
Modelowanie Danych (ERD) – część 1 (Wspomaganie Modelowania danych)
Asocjacja,Kompozycja,Agregacja
Implementacja asocjacji (z atrybutami i bez) przy użyciu: referencji (kolekcji referencji) tablic asocjacyjnych przygotował: Kamil Kowalczyk.
Projektowanie systemów informacyjnych
Inżynieria systemów informacyjnych
T. 18. E Proces DGA - Działania (operatorka).
Matematyka przed egzaminem czyli samouczek dla każdego
Zapis prezentacji:

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 Modelowanie generalizacji-specjalizacji Obejście dziedziczenia wielokrotnego Asocjacja kwalifikowana Asocjacja n-arna Ograniczenia

Powiązanie a asocjacja binarna Fizyczny lub pojęciowy zwią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 Kasia :Osoba Ewa :Osoba Jasio Osoba imię pracuje_w pracuje_w pracuje_w pracuje_w :Firma Krawiecka :Firma Szewska Firma rodzaj Klasy i asocjacja na diagramie klas Obiekty i powiązania na diagramie obiektów Asocjacje mogą też łączyć więcej niż dwie klasy, tzw. asocjacje n-arne.

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ą. 1 pracuje_dla 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.

Liczność asocjacji (1) 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 1,2 2,3 B B B B B B 0..1 1..3 A B: min = 0, max = 1 A B: min = 1, max = 3 B B B A: min = 1, max = 2 B A: min = 2, max = 3

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

Asocjacje skierowane 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. * PozycjaZamówienia ilość cena czyZrealizowana * 1 Produkt

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 0..1 szef 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. Firma 1 1..* Pracownik

jest_przewodniczącym Role asocjacji (2) * jest_członkiem * Osoba Komitet 1 jest_przewodniczącym * 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.

Atrybuty asocjacji Plik Prawo dostępu dostęp Osoba Firma nazwisko * dostępny dla Prawo dostępu dostęp zatrudnia Osoba nazwisko pesel adres Firma nazwa 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.

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

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 data_urodzenia /wiek Osoba {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.

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 *

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!

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. K Ks K 1 Ks * * * agregacja kompozycja

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.

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

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

Asocjacja kwalifikowana (1) Bank Osoba nr konta 0..1 1..* 0..1 Bank nr konta kwalifikator asocjacji 1 Osoba Bank Osoba * * Bank nr konta * Bank/Osoba nr konta 0..1 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.

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

Asocjacja n-arna Notacja 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

Asocjacja n-arna; 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

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

Ograniczenia; przykład (1) 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 Firma Osoba 1 Konto {xor} 1 0..1

Ograniczenia; przykład (2) 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 {Osoba.pracodawca = Osoba.szef.pracodawca}