Obiektowe bazy danych
Wprowadzenie
• Era stosowania ogólnego, jednorodnego podejścia przy tworzeniu
systemów przetwarzania danych dobiega końca.
• Jest wiele różnych sposobów specyfikowania i programowania systemów.
Różne zadania mogą mieć różne charakterystyki, wymagające różnych
podejść. Wyzwanie polega na wybieraniu i łączeniu tych podejść.
• Tradycyjne podejście JEŚLI … TO, DOPÓKI WYKONUJ jest popularne w wielu
sytuacjach (nie jest jednak ani jedyne, ani najlepsze).
• Przykładowo: system stawiania diagnoz medycznych najlepiej daje się
zaprogramować za pomocą reguł i mechanizmu wnioskującego. W innej
sytuacji posłużenie się siecią neuronową lub algorytmem genetycznym
może wydajnie doprowadzić do pożądanego wyniku. Kiedy indziej logika
predykatów lub wyrażenie funkcyjne będzie najlepszą metodą określenia
programu.
• Zezwolenie twórcy na wybór tych podejść, które najlepiej rozwiązują dany
problem jest właściwe.
• We współczesnej informatyce pojęcie obiektowość ma wiele różnych
znaczeń. Termin ten był po raz pierwszy zastosowany w odniesieniu do
grupy języków programowania wywodzących się z języka będącego
odkryciem pochodzenia skandynawskiego, znanego jako Simula. Język
Simula był pierwszym językiem, który wprowadził pojęcie abstrakcyjnego
typu danych jako zintegrowanego pakietu struktur danych i procedur.
Zasady podejścia
obiektowego
• Obiekty
• Hermetyzacja
• Klasy
• Dziedziczenie
• Polimorfizm
• Przekazywanie komunikatów
Zasady podejścia
obiektowego
• Obiekty – są to podstawowe elementy, z których
składa się modelowany świat rzeczywisty. Każdy
obiekt ma tożsamość, która pozwala odróżnić jeden
obiekt od drugiego. Dwa obiekty o tych samych
wartościach atrybutów są różne i rozróżnialne. W
obiektowy systemach programowania tożsamość
obiektów jest realizowana przez identyfikatory
przydzielane przez system obiektom podczas ich
tworzenia. Takie identyfikatory są niezmienne i
niepowtarzalne. Obiektowi jest przypisany typ, który
wyznacza jego budowę, oraz zachowanie, czyli zbiór
operacji (zw. metodami), które można wykonać na
obiekcie. Obiekt może być powiązany z innymi
obiektami. Obiekt zawsze znajduje się w określonym
stanie, wyznaczonym przez wartość jego atrybutów i
powiązań z innymi obiektami.
Zasady podejścia
obiektowego
• Hermetyzacja – oznacza, że obiekt nie ujawnia
otoczeniu swojej budowy, udostępniając jedynie
operacje zdefiniowane na swoim interfejsie.
Hermetyzacja jest przejawem modularności, czyli
oddzielenia zewnętrznych aspektów obiektu,
dostępnych dla innych obiektów, od szczegółów
jego wewnętrznej realizacji, niedostępnych z
zewnątrz
. Konsekwentne stosowanie hermetyzacji
prowadzi do uniezależnienia programu od zmian
implementacji obiektów, większej niezależności
od siebie poszczególnych części systemu, a tym
samym zwiększa odporność na błędy
powodowane w trakcie dokonywania modyfikacji.
Zasady podejścia
obiektowego
Klasy
– obiekty, które mają ten sam typ i
zachowanie należą do tej samej klasy. Klasa jest
pojęciem, które pozwala analitykowi na ograniczenie
złożoności analizowanego wycinka rzeczywistości
przez rozważanie grupy podobnych do siebie
obiektów – czyli klasy – zamiast pojedynczych
obiektów. W systemach wykonawczych obiektowych
języków programowania klasa jest też generatorem
(„fabryką”) obiektów: wywołując określoną operację
klasy, potrafimy utworzyć nowy obiekt należący do
tej klasy. Klasyfikowanie obiektów jest przykładem
zastosowania bardziej ogólnej zasady abstrakcji,
przejawiającej się w ignorowaniu szczegółów,
którymi różnią się obiekty, na rzecz wydobywania
istotnych dla danej aplikacji podobieństw.
Zasady podejścia
obiektowego
Dziedziczenie
– klasy tworzą hierarchie
dziedziczenia, w których klasy podrzędne, zw.
podklasami przejmują (czyli dziedziczą)
wszystkie właściwości (atrybuty i operacje)
klas nadrzędnych, zw. nadklasami, a ponadto
mają właściwości specyficzne dla siebie,
których nie mają nadklasy. Każdy obiekt
należący do danej klasy (a więc generowany
przez daną klasę) może pełnić rolę obiektu
(jest wystąpieniem) każdej nadklasy tej klasy,
gdyż ma wszystkie cechy (budowę i
zachowanie) obiektu nadklasy.
Zasady podejścia
obiektowego
Polimorfizm
– w systemie obiektowym
ta sama nazwa
może oznaczać różne elementy systemu, w zależności
od tego, do jakiego obiektu się odnosi
. Polimorfizm
(czyli wielopostaciowość) może w zależności od
kontekstu odnosić się zarówno do atrybutów, jak i
(częściej) do metod. Przykładowo operacja wyświetl()
może być zrealizowana przez różne obiekty. To obiekt
„wie”, jak wykonać konkretną, adresowaną do niego
operację wyświetl(). W programie napisanym w
obiektowym języku programowania nie zawsze z góry
(tzn. na etapie kompilacji wiadomo, do obiektu jakiej
klasy będzie adresowana dana operacja. W związku z
tym polimorfizm metod wymaga stosowania późnego
wiązania, czyli mechanizmu kojarzenia wywołania
metody z odpowiednim fragmentem programu
(procedurą) na etapie wykonywania programu, a nie
na etapie kompilacji programu.
Zasady podejścia
obiektowego
Przekazywanie komunikatów
– w podejściu
obiektowym system informatyczny traktujemy
jako zbiór niezależnie od siebie istniejących
obiektów, które porozumiewają się ze sobą za
pośrednictwem komunikatów.
Komunikat jest
wyrażeniem językowym skierowanym do obiektu i
wywołującym jedną z metod, które są związane z
obiektem
. Komunikat zwykle niesie ze sobą dane,
które stają się parametrami wywoływanej przezeń
metody obiektu. Komunikaty mogą być
synchroniczne lub asynchroniczne. Po wysłaniu
komunikatu asynchronicznego obiekt nie czeka na
odpowiedź, lecz kontynuuje działanie.
Zasady podejścia
obiektowego
Tworzenie SI zgodnie z paradygmatem
obiektowym polega na
utworzeniu
szeregu modeli wizualnych na
diagramach UML
. Modele te dotyczą:
– wymiaru funkcjonalnego – model
przypadków użycia,
– wymiaru strukturalnego – model
statyczny,
– wymiaru dynamicznego – model
behawioralny.
Obiektowość w systemach
komputerowych
• Obiektowość jest jednym ze
sposobów osiągnięcia spójności
. Jest to
technika organizowania
i jako taka jest bardzo
użytecznym narzędziem
integrującym
.
• W szerokim rozumieniu obiektowość oznacza sposób organizowania naszych
sądów o naszym świecie. To organizowanie bazuje na typach rzeczy – lub
typach obiektowych – w naszym świecie. W ten sposób
możemy definiować
atrybuty tych typów obiektowych, operacje przeprowadzane na
typach obiektowych, reguły oparte na typach obiektowych,
maszynowe uczenie się oparte na typach obiektowych
itp. Zamiast
pojedynczej fizycznej jednostki zawierającej zmienne i metody, ogólniejsze
podejście obiektowe dostarcza metody organizowania naszej wiedzy na
poziomie koncepcyjnym.
• Obiektowość zatem
dostarcza skorowidza dla naszej wiedzy
-niezależnie
od tego, czy ta wiedza jest wyrażona w kategoriach reguł, logiki, funkcji,
języków relacyjnych, sieci neuronowych itd.
• Obiektowość można używać jako podejścia do
organizowania i łączenia
wielu różnych technik programistycznych
, włączając w to bazy wiedzy,
obliczenia równoległe, restrukturyzację procesów przedsiębiorstwa i szybkie
tworzenie programów.
• Obiektowość
nie ogranicza się do systemów informatycznych
.
Obiektowość systemów w
ogólności
• Obiektowość powstała z potrzeby
łatwiejszego
sposobu symulowania systemów
– nie tylko
symulowania systemów informatycznych, lecz
dowolnych rodzajów systemów.
• Obiektowość dostarcza
metodę do tworzenia
dowolnych systemów
– niezależnie od tego,
jak te systemy będą implementowane. Ponadto
tej samej obiektowej specyfikacji można użyć w
wielu innych dziedzinach, niezależnie od tego
czy dotyczą one ludzi, maszyn lub komputerów.
Podejście obiektowe
• Podejście obiektowe
modeluje sposób w jaki ludzie
rozumieją i przetwarzają rzeczywistość
(podkreśla się
rolę ludzi, ponieważ to oni tworzą systemy).
• Jeśli chcemy budować systemy działające poprawnie i
spójnie, nasze
specyfikacje powinny być jasne, zwięzłe
i jednoznaczne
. Takie specyfikacje są możliwe jedynie
wówczas, gdy używa się formalnych podstaw. Te
reprezentacje mogą mieć postać tekstową lub graficzną.
Mogą pod
określić strukturę i zachowanie systemu
względem koncepcyjnym lub implementacyjnym. Mogą być
implementacjami wyrażonymi w językach programowania,
językach definiowania baz danych (DDL) i językami
manipulowania danymi (DML). Takie implementacje można
by jeszcze rozszerzyć tak, by zawierały inne
zautomatyzowane podejścia, takie jak jednostki sterujące,
robotykę i układy komputerowe.
Pojęcia i rzeczywistość
• Tworzenie pojęć ułatwia nam porządkowanie
naszego życia.
• Pojęcie jest wyobrażeniem lub oznaczeniem,
które stosujemy do rzeczy lub obiektów w naszej
świadomości.
• Wiemy, że posiedliśmy pojęcie, kiedy możemy je
z powodzeniem zastosować do rzeczy wokół nas.
• Pojęcia są środkiem służącym do
rozpoznawania.
• Używane przez nas pojęcia mogą być bardzo
różnorodne, ponieważ sami je wybieramy.
Przykłady pojęć
Materialne
Niematerialne Role
Opinie
Osoba
Ołówek
Samochód
Czas
Jakość
Firma
Doktor
Pacjent
Właściciel
Wydajna
praca
Wysoka
zapłata
Dobry
przykład
Relacyjne
Zdarzenia
Inne typy pojęć
Małżeństwo
Partnerstwo
Posiadanie
Sprzedaż
Zakup
Załamanie
rynku
Zestaw
Liczba
Ikona
Obraz
Sygnał
Proces
Intensja i ekstensja
• Intensja jest
pełną definicją
pojęcia
i testu określającego, czy to
pojęcie odnosi się do danego obiektu.
• Ekstensja jest
zbiorem wszystkich
obiektów
, do których stosuje się to
pojęcie.
• Intensja i ekstensja są dwiema
stronami tej samej monety – termin
„pojęcie” zawiera obie.
Pojęcie Instrument muzyczny można traktować jako
jednostkowy element mający instensje i ekstensje
Instrument
muzyczny
Dowolne urządzenie
zdolne do
wydawania
melodyjnych i
harmonijnych
dźwięków
Symbolizowanie intensji i
ekstensji
• Symbole są
zwięzłym sposobem odwoływania się
do obiektów
. Są szczególnie pomocne wtedy, gdy
chcemy przekazywać informacje o pojęciach nie
używając ich definicji. Symbolem pojęcia
instrument muzyczny jest prostokąt z etykietą
instrument muzyczny.
• Na kolejnym slajdzie pojęcie jest symbolizowane
słowami Instrument muzyczny zawartymi w
prostokącie. Jego intensja jest wyrażona przez opisową
definicję, a jego ekstensją jest zbiór egzemplarzy
Instrumentów muzycznych. W ten sposób,
kiedykolwiek pojęcie zostanie zidentyfikowane podczas
analizy, może zostać przedyskutowane w kategoriach
nazwy, definicji i obiektów do których się stosuje.
Instrument
muzyczny
(Ekstensja)
Pojęcie
(Symbolizuje)
Instrument muzyczny
Dowolne urządzenie
zdolne do
wydawania
melodyjnych i
harmonijnych
dźwięków
(Intensja)
Trójka pojęciowa dla
Instrumentu muzycznego
Wzięte razem, dwustronna natura pojęcia i jego symboliczna reprezentacja,
wspomagają analityka obiektowego w rozumieniu i przekazywaniu pojęć związanych z
dziedziną zastosowań.
Trójka pojęciowa
z rysunku ilustruje sposób myślenia o tych
trzech aspektach. Na samej górze jest
symbol
pojęcia. Lewa strona przedstawia
intensję, definicję, pomysł
lub
wytłumaczenie
pojęcia. Prawa strona przedstawia
przykłady elementów
ekstensji
lub
zbioru obiektów
, do których stosuje się to
pojęcie.
Brak
Prowizja od zakupu,
sprzedaży lub
dostarczania
towarów lub usług
Niepełna trójka pojęciowa, w które pojęcie nie ma ani nazwy, ani
symbolu
Używanie trójki pojęciowej jest ważne podczas analizy obiektowej. Pod pewnymi
warunkami można pominąć jeden lub więcej aspektów trójki pojęciowej. Przykładowo
ktoś może zdefiniować pojęcie bez symbolizującej je nazwy. Pojęcia i odpowiadające
im obiekty nie wymagają istnienia nazw. Jednak ludzie wydajniej się porozumiewają,
używając nazw do wyrażania pojęć. Odwoływanie się wyłącznie do definicji pojęcia
spowalnia proces komunikowania się (ciągłe cytowanie definicji byłoby długie i nudne.
Wybranie symbolu takiego jak np. Zamówienie do oznaczenia pojęcia umożliwia
wprowadzanie skrótów do porozumiewania się.
48291
Pojęcia bez nazwy
Sabotażyst
a w
korporacji
Osoba niszcząca
własność z intencją
zaszkodzenia
korporacji
Niepełna trójka pojęciowa, w które pojęcie nie ma żadnych
egzemplarzy
Przykład niepełnej trójki, z symbolem pojęcia i definicją, lecz bez obiektów w zbiorze
egzemplarzy. Możemy mieć np. pojęcie Sabotażysty w korporacji, lecz
jednocześnie mieć nadzieję, iż unikniemy jego egzemplarzy. Wprowadzenie pojęcia
Sabotażysty w korporacji pozwoliłoby tej organizacji wykryć rzeczy
niespodziewane. Bez tego pojęcia wykrycie nie byłoby możliwe.
Idealny produkt mógłby być następnym przykładem pojęcia nie mającego
egzemplarzy. Jednak jak można by oceniać produkty bez pojęcia produktu idealnego.
Nowa firma może mieć pojęcie Zamówienia i Klienta, lecz jeszcze nie mieć żadnych
klientów ani zamówień.
Pojęcia bez egzemplarzy
Brak
P-CD-X99
Brak
Niepełna trójka pojęciowa, w które pojęcie nie ma definicji
Uwaga: Należy wystrzegać się sytuacji, w której nie można ustalić żadnej definicji
pojęcia, a wydaje się jednak, że udało się określić odpowiadający mu zbiór obiektów.
Przykładowo przedstawiono zbiór zawierający „X17”, „Z42”, … i nie mający żadnej
udokumentowanej definicji odnoszącego się do tych obiektów pojęcia P-CD-X99. Ten
rodzaj problemów jest widoczny w organizacjach, które budują systemy bez
dokumentacji. Analityk powinien zadbać o zdefiniowanie definicji każdego pojęcia w
systemie. Pojęcie bez definicji nie jest pojęciem. Jest dosłownie bez znaczenia.
Pojęcia bez definicji
„X17”,
„Z42”.
…
Klient, Interesant
Osoba lub
organizacja
kupująca dobra lub
usługi
Zdarzają się sytuacje, w których dla danego pojęcia występuje więcej niż jeden
symbol lub definicja. Przykładowo Klient i Interesant mogłyby być dwiema nazwami
tego samego pojęcia. Czyli pojęcie może mieć jedną definicję i kilka nazw. To zjawisko
jest czasami nazywane synonimem lub aliasem. Sprawia ono kłopot wielu
administratorom danych, ponieważ chcieliby mieć proste i uporządkowane
środowisko, w którym wszystko ma jedną standardową nazwę. O ile standaryzacja
jest użyteczna, o tyle wymuszanie jednej nazwy jest niepraktyczne. W jednej firmie
może istnieć kilka standardowych nazw jakiegoś pojęcia.
Pojęcia z synonimami
„IBM”,
„Jan Kowalski”
Sfinalizowana sprzedaż
Sprzedaż
zatwierdzona
podaniem rąk
Zdarzają się sytuacje, w których trójka z homonimem ma, zamiast definicji z wieloma
nazwami, nazwę z wieloma definicjami. Przykładowo większość firm ma dwie różne
definicje Sformalizowanej sprzedaży. Dla sprzedawcy sprzedaż jest potwierdzana
podaniem rąk i potwierdzającym skinieniem głowy. Dla księgowości sprzedaż istnieje
dopiero po zatwierdzeniu i podpisaniu kontraktu sprzedaży. Wprawdzie jest możliwe,
że ten sam obiekt jest egzemplarzem spełniającym obie definicje, jednak podstawowy
problem pojawia się wtedy, kiedy te dwa zbiory są różne.
Większość repozytoriów nie potrafi efektywnie obsługiwać homonimów. Obecnie ten
kto rejestruje nazwę pojęcia jako pierwszy dostaje pełne prawa do tego słowa. W ten
sposób, jeśli księgowość jako pierwsza użyje nazwy Sprzedaż, to dział sprzedaży
będzie musiał wybrać inne słowo.
Pojęcia z homonimami
48291
48291
Sprzedaż
zatwierdzona
podpisaniem
kontraktu
Dziedziny
• Dziedzina jest wybranym obszarem zainteresowań, który zawiera
kolekcje obiektów będących egzemplarzami specyfikacji dziedziny.
• Specyfikacja dziedziny jest kolekcją pojęć odnoszących się do
dziedziny.
• Dziedziny mogą być konkretne, tak jak zapas części, abstrakcyjne jak
zamówienie lub złożone, w których nie zachodzi żadne przetwarzanie.
Jednak systemy zwykle mają zarówno składniki strukturalne, jak i
odnoszące się do zachowań.
• Dziedzina jest „sferą … aktywności i oddziaływania”, umożliwiającą
zdefiniowanie perspektywy lub kontekstu.
• Bez perspektywy czy kontekstu nasze umysły mogą źle zrozumieć
zawartość przekazu. Dla analityka oznacza to, że może być zagrożona
koncepcyjna ścisłość.
• Dziedziny określają zakres, który formalnie ogranicza i koncentruje
nasze wysiłki związane ze specyfikowaniem. Ograniczenie naszych
wysiłków pomaga nam koncentrować się na tym co jest naszym obszarem
zainteresowań. Zatem zdefiniowanie dziedziny wspomaga analityka przez
umożliwienie mu dotarcia do sedna analizowanych zagadnień.
• Dziedzina systemu jest analizowanym przez analityka rzeczywistym
światem; specyfikacja dziedziny jest produktem analizy systemu.
Specyfikacja dziedziny zatem definiuje zbiór pojęć (tak strukturalnych, jak
i odnoszących się do zachowań) dla konkretnej dziedziny.
Obiekt
• Obiekt jest to coś, do czego da się zastosować jakieś pojęcie. Obiekt
jest egzemplarzem pojęcia.
• Terminy obiekt i egzemplarz można stosować wymiennie.
• Większość obiektów istnieje tylko przez pewien okres. Dla tych
obiektów można sensownie zdefiniować momenty początkowy i
końcowy.
• O ile obiekty są pojedynczymi, niezależnymi egzemplarzami, to
zbiór jest pewną kolekcją (klasą) obiektów. Należenie do zbioru
jest całkowicie określone przez pełną definicję (instensję) związanego
z nim pojęcia. Ta definicja działa jak filtr, który przesiewa wszystkie
obiekty, przepuszczając do zbioru tylko te, które przejdą test
należenia do zbioru. Zbiór jest inną nazwą ekstensji pojęcia.
• Zbiór może zawierać wiele obiektów, a każdy obiekt może być
elementem wielu zbiorów. Każdy zbiór jest kolekcją tych obiektów,
które pomyślnie przeszły test przynależności określony przez pojęcie.
• Gdy stwierdzamy, że pojęcie stosuje się do konkretnego obiektu, ten
obiekt jest sklasyfikowany jako element pewnego zbioru.
• Obiekt może w dowolnym momencie należeć do wielu zbiorów. To
zjawisko nazywamy wielokrotną klasyfikacją. Ponadto, wraz z
upływem czasu, obiekt może należeć do różnych zbiorów – to zjawisko
nazywamy dynamiczną klasyfikacją.
Pojęcie a typ obiektowy
• Typ obiektowy jest powszechnie
stosowanym terminem na określenie
pojęcia w środowisku osób
zajmujących się standardami analizy
obiektowej (niektórzy używają
terminu klasa).
Ewa
Jan
Kobieta
Mężczyzna
Pracownik
O ile obiekty są pojedynczymi, niezależnymi egzemplarzami, to
zbiór jest pewną kolekcją (klasą) obiektów. Zbiór może zawierać
wiele obiektów, a każdy obiekt może być elementem wielu
zbiorów.
Na rysunku pokazano trzy pojęcia: Kobieta, Mężczyzna i Pracownik.
Obiekt Ewa należy jednocześnie do dwu zbiorów: Kobieta i
Pracownik. Oczywiście może należeć także do innych zbiorów
takich jak: Żona, Matka, Dobry przyjaciel.
Powiązanie obiektów
• Powiązania umożliwiają łączenie w
sensowny sposób obiektów różnych
typów (dwa typy obiektowe
Organizacja i Osoba są ze sobą
powiązane).
Powiązanie dwóch typów obiektowych
(klas)
Typy obiektowe są oznaczone prostokątnymi węzłami, linia
oznacza powiązanie.
Węzły są użytecznym mechanizmem prezentacji, gdyż graficznie
odróżniają typy obiektowe od związanych z nimi struktur.
O ile typy obiektowe dotyczą zbiorów obiektów, o tyle powiązania
dotyczą połączeń obiektów między zbiorami.
class pracownicy
Osoba
Organizacja
Folder
Plik
*
zatrudnia
zawiera
*
Model statyczny
Model obrazujący wymiar strukturalny systemu, przedstawiany
jest na diagramach klas i diagramach obiektów. Podstawowe
elementy występujące na diagramach klas to klasy (class) i
związki (association).
W klasie zdefiniowana jest struktura obiektów
(wyznaczona
przez typ klasy)
i ich zachowanie
(wyznaczone przez zbiór
operacji (metod) klasy). Atrybuty i operacje nazywamy
właściwościami klasy i jej obiektów. Zazwyczaj każda właściwość
klasy występuje we wszystkich obiektach należących do tej klasy.
Mówimy, że taka właściwość ma zasięg lokalny: odnosi się
zawsze do jednego, konkretnego obiektu. Klasa może mieć
również właściwości o zasięgu globalnym, czyli takie, które
dotyczą wszystkich obiektów należących do tej klasy, a nie są
bezpośrednio właściwościami żadnego z tych obiektów.
Przykładem atrybutu globalnego może być liczba obiektów
należących do danej klasy. Przykładem metody globalnej może być
metoda podająca liczbę obiektów należących do klasy.
Przechowywanie atrybutów globalnych w każdym obiekcie klasy
byłoby niecelowe i bardzo kosztowne, w związku z czym są one
zazwyczaj przechowywane w wyróżnionym obiekcie
reprezentującym klasę jako całość (tzw. obiekcie kontenerowym).
class Domain Objects
Osoba
- pesel: int
- nazwisko: char
- adres: char
- liczebność: int
+ podaj_opis() : void
+ podaj_liczebność() : void
Samochód
- nr_rejestracyjny: int
- rok_produkcji: int
- marka: char
- liczenność: int
+ podaj_opis() : void
+ podaj_liczebność() : void
+ podaj_średni_wiek() : void
jest_właścicielem
*
Rysunek przedstawia prosty diagram klas dla systemu przechowującego
informacje o samochodach i ich właścicielach. Występują na nim dwie klasy: Osoba
i Samochód.
Klasa Osoba, poza atrybutami o zasięgu obiektu (pesel, nazwisko i adres), ma też
atrybut liczebność, o zasięgu klasy. Ma jedną metodę o zasięgu obiektu,
podaj_opis() oraz jedną metodę o zasięgu klasy, podaj_liczebność(). Właściwości
globalne są podkreślone.
Klasa Samochód ma również właściwości lokalne: nr_rej, rok_produkcji, marka,
podaj_opis() oraz globalne: liczebność, podaj_liczebność(), podaj_średni_wiek().
Klasy Osoba i Samochód nie są od siebie niezależne; są powiązane ze sobą
związkiem o nazwie jest właścicielem.
Prosty diagram klas: Samochody i ich właściciele
object model statyczny
J an:Osoba
-
671212:
-
J AN KOWALSKI:
-
GDAŃSK, MOKRA 6:
bmw:Samochód
-
GD 12345:
-
1999:
-
BMW 315i:
fiacik:Samochód
-
GDKM1234:
-
1984: int
-
FIAT 126p:
jest_właścicielem
jest_właścicielem
Na rysunku zamieszczono diagram obiektów będący jednym z
niezliczonych możliwych wystąpień diagramu klas. Z tego diagramu
wynika, że wymieniona na nim osoba (Jan Kowalski z Gdańska) jest
właścicielem dwóch samochodów, których szczegóły podano jako
wartości ich atrybutów. Obiekty klas Osoba i Samochód zostały tu
wyróżnione poprzez ich nazwy (identyfikatory) poprzedzające nazwę
klasy. Użycie nazwy obiektu jest nieobowiązkowe; konieczne jest
natomiast umieszczenie (po znaku dwukropka) nazwy klasy, do której
należy dany obiekt.
Przykładowe wystąpienie diagramu klas
class pracownicy
Osoba
- nazwisko:
Firma
- nazwa:
Zatrudnienie
- okres_umowy: int
- stanowisko:
- płaca:
+ zawrzyj_umowę() : void
+ awansuj() : void
+ rozwiąż_umowę() : void
+pracuje_w
1..*
+zatrudnia
1..*
Związek jako klasa
Mamy tu 3 klasy: Osoba, Firma i Zatrudnienie. Związek pomiędzy klasą Osoba i
klasą Firma reprezentuje powiązania pomiędzy poszczególnymi osobami i firmami, w
których te osoby pracują. Ten związek nie został na diagramie nazwany; zamiast tego
przy ikonach reprezentujących klasy umieszczono nazwy ról, jakie pełnią obiekty
danej klasy w tym związku. I tak każda osoba pełni rolę „pracuje_w”, a każda firma
rolę „zatrudnia”. Z umieszczonych na diagramie oznaczeń liczebności wynika, że
każda osoba może pracować w jednej lub więcej firmach, a każda firma może
zatrudniać jedną lub więcej osób. Z uwagi na przyjętą liczność związku ważne
informacje dotyczące zatrudnienia danej osoby w danej firmie, takie jak: stanowisko,
okres umowy, płaca itp., nie są atrybutami ani osoby, ani firmy, ale atrybutami pary
(osoba, firma), a więc atrybutami powiązań pomiędzy konkretnymi obiektami klasy
Osoba i Firma.
Celowe jest utworzenie klasy
reprezentującej ten związek,
czyli klasy Zatrudnienie. Klasa
ta zawiera również metody
potrzebne do zarządzania
związkiem, np. metodę
umożliwiającą zmianę
stanowiska czy zmianę płacy. W
takim rozwiązaniu nie ma
potrzeby przechowywania w
strukturze obiektu informacji o
jego powiązaniach z innymi
obiektami, gdyż wszystkie
informacje mogą być
przechowywane w obiektach
reprezentujących te powiązania.
class pracownicy
Wykładowca
- nazwisko:
Student
- nr_albumu:
Przedmiot
- nazwisko:
nauka
*
*
*
Związek stopnia 3 pomiędzy wykładowcami, studentami i
przedmiotami
Stopień (degree lub arity) związku jest to liczba klas, pomiędzy którymi
zachodzi dany związek. W związku podwójnym obiekty związanych ze sobą
klas są powiązane ze sobą w pary, w związku potrójnym w trójki itp.
Na diagramie przedstawiono przykład związku potrójnego, zachodzącego
pomiędzy przedmiotami, wykładowcami i studentami pewnej szkoły.
Przyjmijmy założenie, że wszystkie podwójne między parami (Wykładowca,
Przedmiot), (Wykładowca, Student), (Przedmiot, Student) mają liczebność typu
„wiele do wielu”. Aby dowiedzieć się, do którego wykładowcy dany student
uczęszczał na dany przedmiot, nie wystarczy żaden zestaw par (w,s), (w,p) i
(s,p). Musimy mieć do dyspozycji trójki (w,s,p). Potrzebne są więc wystąpienia
związku potrójnego zachodzącego pomiędzy tymi klasami, nazwanego tu
nauka.
class model statyczny
Student
Pracownik
Osoba
Profesor
Wykład
Kurs
1
prowadzi
*
1..*
zawiera
1
1..*
zapisany na
1..*
+poprzedza 0..1
+następuje po *
Zadanie
Przedstaw diagram klas odpowiadający następującym wymaganiom:
System ma za zadanie przechowywać informacje o pracownikach (w tym profesorach), studentach
oraz przeprowadzonych kursach. Kurs może być poprzedzony innym kursem; sam także może
poprzedzać inne kursy. Każdy kurs składa się z co najmniej jednego wykładu. Wykład wchodzi w
skład tylko jednego kursu. Należy pamiętać informacje o tym, na które wykłady był zapisany każdy
ze studentów. Student może być zapisany na wiele wykładów (co najmniej jeden). Na jeden
wykład może być zapisanych wielu studentów (co najmniej jeden). Wykład jest prowadzony przez
jednego profesora. Profesor może prowadzić wiele wykładów; może też nie prowadzić żadnego
wykładu.
Przykład agregacji:
Zadanie: W skład grupy wchodzi od jednego do piętnastu
studentów, przy czym student może należeć do dowolnej liczby
grup; dla każdego studenta przechowywana jest informacja o
tym, w jakim okresie należał do danej grupy.
class model statyczny
Grupa
- plan:
+ zmień_plan() : void
Student
- plan:
+ zmiań_plan() : void
Termin
- do:
- od:
*
1..15
class Plan zajęć
Rejestracja na
semestry::
SemestrAkademicki
- poraRoku:
- rok_rozpoczęcia:
- status:
Rejestracja na
semestry::
Przedmiot
OgólnyPlanZajęć
GrupaStudencka
Przedmioty, sprawdziany, oceny::
Zajęcia
- czas_trwania: int
- dzień_tygodnia: dni
- godzina_rozpoczęcia: godziny
PracownikDydaktyczny
PlanZajęć
ParametryUdostępnianiaOglnegoPlanuZajęć
- filtr_grup_dziekańskicj: char
- filtr_pracowników_dydaktycznych: char
- sposób_pokazywania: boolean = G/L
ParametryUdostępnianiaPlanuZajęć
- sposób_pokazywania: boolean = L/T
«system»
«system»
-plany semestralne
0..*
-grupa
1
-lista zajęć 1..*
1
0..1
1
-plany dla grup
1..*
1
-prowadzący
1
-przedmioty_prowadzone
0..*
0..*
1
-zarządzający
1
-przedmioty_zarządzane
0..*