OMT - Model obiektów, cz.2.

Slides:



Advertisements
Podobne prezentacje
Teoria układów logicznych
Advertisements

Modelowanie logiczne (dla relacyjnych SZBD)
Związki w UML.
Projektowanie systemów informacyjnych
Relacyjny model danych
Sposoby obejścia dziedziczenia
Implementacja asocjacji
Zrównoleglanie programu sekwencyjnego
PROF. DR HAB. WIESŁAWA PRZYBYLSKA-KAPUŚCIŃSKA
MS Access 2000 Normalizacja Paweł Górczyński 2005.
Projektowanie Aplikacji Komputerowych
Projektowanie systemów informacyjnych
Projektowanie systemów informacyjnych
Modelowanie i język UML
08: ERD – podencje, łuki i pułapki
Projektowanie systemów informacyjnych
Diagramy klas w języku UML
E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, Wykład 8, Slajd 1 Projektowanie systemów informacyjnych Ewa Stemposz, Kazimierz Subieta.
Projektowanie i programowanie obiektowe II - Wykład IV
Projektowanie i programowanie obiektowe II - Wykład II
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Modele baz danych - spojrzenie na poziom fizyczny
Wykład 4 Analiza i projektowanie obiektowe
Wykład 3 Analiza i projektowanie strukturalne
Bibliotekarz – odkrywca. Agenda Proces tworzenia informacji Indeksy wyszukiwawcze Budowa rekordu w Promaxie Zapytania.
Teoria relacyjnych baz danych
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
OPERACJA DZIELENIA W SQL
Zależności funkcyjne.
Model przestrzenny Diagramu Obiegu Dokumentów
Bazy danych.
Źródła: podręcznikopracował: A. Jędryczkowski.
Prezentacja i szkolenie
OMT - Model obiektów, cz.3.
Projektowanie obiektowe
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Wybrane zagadnienia relacyjnych baz danych
Podsumowanie metodologii OMT
Model relacyjny.
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
Komendy SQL do pracy z tabelami i bazami
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
1 Każdy obiekt jest scharakteryzowany poprzez: tożsamość – daje się jednoznacznie wyróżnić; stan; zachowanie. W analizie obiektowej podstawową strukturą
Modelowanie obiektowe Diagramy klas
Projektowanie relacyjnych baz danych – postacie normalne
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Temat 3: Integralność danych. Integralność danych, określana również mianem spójności danych, jest to funkcja SZBD, która gwarantuje, że dane nie zostaną.
Michał Krawczykowski kl. IIIB
Model obiektowy bazy danych
Diagram klas Kluczowymi elementami są: klasy (class)
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Projektowanie relacyjnych baz danych – diagramy związków encji
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.
Programowanie Zaawansowane
Modelowanie model związków encji
E. Stemposz. UML i Analiza Obiektowa, Wykład 4, Slajd 1/20 Wykład 4 Model obiektowy (2) dr inż. Ewa Stemposz
E. Stemposz. UML i Analiza Obiektowa, Wykład 3, Slajd 1/18 Wykład 3 Model obiektowy (1) dr inż. Ewa Stemposz
Asocjacja,Kompozycja,Agregacja
Projektowanie systemów informacyjnych
Inżynieria systemów informacyjnych
Projektowanie systemów informacyjnych
Nazwa – pojęcie i podziały
Indeksy.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
PGO Dziedziczenie Michail Mokkas.
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

OMT - Model obiektów, cz.2

OMT - model obiektów Agregacje - nieco dokładniej Klasy abstrakcyjne Delegacja Wielokrotne dziedziczenie Jak obejść brak wielodziedziczenia? Jak obejść brak dziedziczenia? Klucze

Agregacje Agregacja jest specjalną formą związku, którego podstawową intencją jest odwzorowanie zależności część-całość. Kiedy warto używać agregacji? Decyzja jest często arbitralna. Czy właściwe jest użycie frazy “jest częścią”? Czy operacje na całości automatycznie są propagowane na jej części? Czy jakiś atrybut całości jest automatycznie propagowny do jej części? Czy istnieje wewnętrzna asymetria w asocjacji, kiedy jakaś klasa jest podporządkowana innej klasie? Firma Oddział Wydział Pracuje w Osoba

Agregacja vs. generalizacja Wystąpienie agregacji wiąże dwa obiekty. Nie można mówić o wystąpieniu generalizacji; jest to związek między klasami. Lampa Lampa żarówkowa Lampa flurescencyjna Oprawa Klosz Wyłącznik Przewody Oprawka Dławik Zamocowanie świetlówki Starter Agregacje mogą być rekurencyjne; generalizacje nie mogą.

Propagacja operacji Przesunięcie agregatu (np. okienka na ekranie) implikuje przesunięcie wszystkich obiektów w tym okienku. Skopiowanie dokumentu oznacza skopiowanie wszystkich jego składowych. kopiuj kopiuj Osoba Posiada Dokument kopiuj Paragraf kopiuj Znak kopiuj Propagacja jest zaznaczona na diagramach OMT w postaci małej strzałki nad agregacją lub asocjacją, z zaznaczeniem operacji, która jest propagowana.

Delegacja Pojęcie ściśle związane z agregacją. Samochód start stop Operacje start i stop samochodu są oddelegowane do operacji start i stop silnika, które z kolei są oddelegowane do operacji włącz i wyłącz rozrusznika i zapłonu. Silnik start stop W wielu przypadkach agregacja i delegacja umożliwiają obejście braku dziedziczenia i wielodziedziczenia. (wyjaśnienie będzie później) Rozrusznik włącz wyłącz Zapłon

Klasy abstrakcyjne Pracownik Masarz Piekarz Cukiernik . . . Klasa abstrakcyjna nie bezpośrednich wystąpień. Jest ona wspólną częścia definicji innych klas. Klasa konkretna może mieć bezpośrednie wystąpienia. Klasa konkretna nie musi być liściem w drzewie klas. Pracownik Klasa Pracownik nie jest klasą abstrakcyjną ponieważ może być pracownik bez zawodu. Masarz Piekarz Cukiernik . . . Wielokropek oznacza istnienie innych podklas, które nie są przedstawione na diagramie, np. z powodu braku miejsca lub dlatego, że są mniej istotne dla rozpatrywanego przypadku

Abstrakcyjne operacje Klasa abstrakcyjna może mieć abstrakcyjne operacje. Są one wyspecyfikowane w takiej klasie, ale ich implementacja znajduje się w ramach każdej pod-klasy Pracownik już-zarobił-w-tym-roku oblicz wypłatę {abstract} Pracownik godzinowy stawka godzinowa stawka świąteczna oblicz wypłatę Pracownik etatowy zarobek tygodniowy oblicz wypłatę Pracownik na zlecenie zarobek miesięczny oblicz wypłatę Specyfikacja metody oblicz wypłatę znajduje się w ramach klasy abstrakcyjnej Pracownik. Każda klasa konkretna zawiera specyficzną implementację tej metody.

Rozszerzenia i ograniczenia w ramach podklasy Wystąpienie klasy jest jednocześnie wystąpieniem wszystkich jej nadklas. Podklasa nie może omijać lub dowolnie zmieniać atrybuty nadklasy. Podklasa może zmienić (przesłonić) metodę, ale bez zmiany jej zewnętrznej specyfikacji. Podlasa może dowolnie dodawać nowe atrybuty i metody (rozszerzać). Podklasa może ograniczać wartości atrybutów. Np. koło jest podklasą elipsy, gdzie obie średnice elipsy są sobie równe. Ograniczenia mogą spowodować, że część metod przestanie być poprawna. Np. zmiana jednej ze średnic elipsy nie jest dopuszczalna w podklasie koło, gdyż muszą tam być zmienione obie średnice.

Wielokrotne dziedziczenie (wielo-dziedziczenie) Dopuszczalne jest, aby klasa miała więcej niż jedną nad-klasę. W wielu przypadkach wielodziedziczenie jest naturalnym odwzorowanie sytuacji; niekiedy wprowadza jednak dodatkową komplikację. Pracownik status płacowy stosunek do emerytury Pracownik godzinowy Pracownik etatowy Pracownik na zlecenie Pracownik nie emerytowany Pracownik emerytowany Pracownik godzinowy nie emerytowany Generalizacje mogą zależeć od aspektu

Transformacja diagramów klas Zamiana diagramu wejściowego na równoważny diagram wyjściowy. Co to znaczy równoważny ? matematyczne udowodnienie równoważności diagramó nie jest możliwe, z powodu ich nieformalnej semantyki; możliwe jest to wyłacznie na podstawie dogłębnego zrozumienia problemu. metody nieformalne porównują diagramy poprzez intuicyjną ocenę możliwości odwzorowania w nich pewnych elementarnych informacji. Niekiedy może być pomocny język zapytań typu SQL, gdyż możemy wtedy w sposób nieco bardziej formalny ocenić, czy dla obydwu porównywanych diagramów istnieje zapytanie realizujące ten sam cel wyszukiwania. np. “Podaj wszystkich studentów promowanych przez Kowalskiego” Powody równoważnego przekształcania diagramów: Uproszczenie, zdekomponowanie Dopasowanie do bazy realizacyjnej SZBD Uwzględnienie ilościowych charakterystyk przetwarzania

Jak obejść brak wielo-dziedziczenia: delegacja z użyciem ról Objeścia braku wielo-dziedziczenia są konieczne, ale często psują strukturę logiczną modelu i komplikują jego pielęgnację. Płace pracownika Pracownik Emerytura pracownika status płacowy stosunek do emerytury Pracownik godzinowy Pracownik etatowy Pracownik na zlecenie Pracownik nie emerytowany Pracownik emerytowany

Jak obejść brak wielo-dziedziczenia: użycie dziedziczenia i delegacji Pracownik Emerytura pracownika status płacowy stosunek do emerytury Pracownik godzinowy Pracownik etatowy Pracownik na zlecenie Pracownik nie emerytowany Pracownik emerytowany Delegacja Dziedziczenie

Jak obejść brak wielo-dziedziczenia: zagnieżdżona generalizacja Permutacja klas Pracownik status płacowy Pracownik godzinowy Pracownik etatowy Pracownik na zlecenie stosunek do emerytury stosunek do emerytury stosunek do emerytury Pracownik godzinowy nie emerytowany Pracownik godzinowy emerytowany Pracownik etatowy nie emerytowany Pracownik etatowy emerytowany Pracownik na zlecenie nie emerytowany Pracownik na zlecenie emerytowany

Brak wielo-dziedziczenia - zalecenia Jeżeli klasa ma kilka super-klas, wszystkie jednakowo ważne, najlepiej użyć delegacji, która zachowuje symetrię modelu. Jeżeli jedna super-klasa wyraźnie dominuje, zaś inne są mniej ważne, tę jedną zaimplementować poprzez dziedziczenie, zaś pozostałe przez delegację. Jeżeli liczba kombinacji klas jest mała, można rozpatrywać zagnieżdżoną generalizację. Jeżeli jedna superklasa ma zdecydowanie więcej cech niż pozostałe lub może powodować wąskie gardło w wydajności, wyróżnić tę superklasę poprzez dziedziczenie. Przy zagnieżdżonej generalizacji, najważniejszy czynnik powinien być pierwszym kryterium podziału; pozostałe dalej, w hierarchii ważności. Unikać zagnieżdżonych generalizacji, jeżeli duża ilość kodu musi być powtórzona. Rozpatrzyć ważność utrzymania dokładnej tożsamości. Tylko zagnieżdżona generalizacja ją zapewnia.

Metody transformacji diagramu klas (1) ZAMIANA HIERARCHII KLAS (wynika z braku możliwości reprezentacji hierarchii klas w wielu systemach zarządzania bazą danych, np. relacyjnych) HIERARCIA KLAS ==> NADKLASA - zamiana hierarchii klas (nad- i pod- klasy) na pojedynczą klasę poprzez dodanie atrybutów i metod podklas do atrybutów i metod nadklasy uogólnienia oraz dodanie atrybutu - dyskryminatora przypadku HIERARCHIA KLAS ==> PODKLASA - usunięcie nadklasy i pozostawienie podklas z propagacją atrybutów i metod nadklasy i dublowaniem asocjacji nadklasy dla każdej podklasy HIERARCHIA KLAS ==> AGREGACJE - zamiana hierarchii klas na zestaw agregacji łączących nadklasę ze wszystkimi podklasami

Metody transformacji diagramu klas (2) PODZIAŁ KLASY: przyczyną jest fakt, że pewne operacje mają częsty dostęp do tych samych wystąpień lub atrybutów łącznie, a tym samym warto te wystąpienia lub atrybuty grupować PODZIAŁ POZIOMY - grupowanie wystąpień PODZIAŁ PIONOWY - grupowanie atrybutów i metod ŁĄCZENIE KLAS: stosuje się gdy wiele różnych operacji odwołuje się zawsze do kilku klas łącznie => możliwa utrata spójności modelu WYBÓR KLUCZA

Metoda: Hierarchia klas ==> nadklasa 1+ 1+ 1+ 1+ Klasa 2 Klasa 3 Klasa 2 Klasa 3

Metoda: Hierarchia klas ==> podklasy Klasa 3 Klasa 3 As21 As22 As2 1+ 1+ 1+ Klasa 1 a1 a2 m1 m2 Klasa 11 a1 a2 a3 m1 m2 m3 Klasa 12 a1 a2 a4 m1 m2 m4 a5 Klasa 11 a3 m3 Klasa 12 a4 m4 As1 Klasa 2 1+ As1 Klasa 2 1+

Metoda: Hierarchia klas ==> agregacje 1+ 1+

Podział poziomy klasy Klasa 1 Klasa 1 As1 As11 As12 Klasa 2 a1 a2 m1 m2 Klasa 21 a1 a2 ...? m1 m2 ...? Klasa 22 a1 ...? a2 m1 ...? m2 As2 As21 As22 Klasa 3 Klasa 3 Niekiedy przy takim podziale w niektórych klasach można zredukować atrybuty i/lub metody.

Podział pionowy klasy Klasa 1 Klasa 1 Klasa 2 a1 a2 a3 a4 m1 m2 m3 m4

Klucze kandydujące Dla obiektów. ID, lub jakaś kombinacja atrybutów Pojęcie znane z modelu relacyjnego Dla obiektów. ID, lub jakaś kombinacja atrybutów Dla asocjacji: Kombinacja nazw klas obiektów. Firma Osoba posiada akcje {Klucz kandydujący: (Osoba, Firma)} Osoba Kraj pracuje w ma stolicę Firma Miasto {Klucz kandydujący: (Osoba)} {Klucze kandydujące: (Kraj) (Miasto)}

Wybór klucza Może być wiele kluczy kandydujących ale tylko jeden klucz główny Kryteria wyboru klucza głównego: LICZBA OPERACJI, korzystających z danej klasy, odwołujących się bezpośrednio poprzez dany klucz TYP KLUCZA * klucze proste przed złożonymi * klucze wewnętrzne przed zewnętrznymi * klucze krótsze przed dłuższymi Pracownik Nazwisko Data_ur Nr_PESEL Nr_prac Nr_na_wydziale 1 Nazwisko + Data_ur 2 Nr_PESEL 3 Nr_prac Wydział Id_wydziału 4 Nr_na_wydziale