i 14. Warto zauważyć, że typem adresu jest napis, a nie struktura, jak to jest w przypadku atrybutu adres w klasie Gwiazda w wierszu 10. Nie ma nic złego w określaniu tą samą nazwą atrybutów o różnych typach, jeśli występują w różnych klasach.
W wierszu 7 zapisano związek naleźyDo skierowany od filmów do studiów filmowych. Ponieważ typ związku określono jako Studio, a nic set<Studio>, zatem należy domniemywać, żc każdy film może należeć tylko do jednego studia. Związek odwrotny odnajdujemy w wierszu 15. Tutaj występuje związek posiada skierowany od studiów filmowych do filmów. Typ tego zw iązku zdefiniowano jako Set<Filmy>, wskazując w ten sposób, żc każde studio ma cały zbiór filmów: być może jest ich 0, być może I, a być może bardzo dużo.
1)
2)
3)
4)
5)
6) 7)
interface F:Lmy{
atributo string tytuł; attributc integer rok; attributo integer długość; attributo enum Taśma {kolor, czarno-biała} TypTaśmy;
relationship Set<Gwiazda> gwiazdy
inverse Gwiazda::występujeW; relationship Studio noLeżyDo
inverse Studio::posiada;
);
8) interface Gwiazda!
9) attribute string nazwisko;
10) attribute Struct Adr
{string ulica, string miasto) adres;
11) relationship Set<Fiimy> występujeW
inverse Filmy::gwiazdy;
);
12) interface Studio {
13) attributc string nazwa;
14) attribute string adres;
15) relationship Set<Filmy> posiada
inverso Filmy::naleźyDo;
);
RYSUNEK 2.6
Niektóre klasy w języku 01)1. i związki między nimi
□
Rodzaj związku wynikający z zależności między nim a jego odwrotnością nazywa się liczebnością lub fwikcyjnością (rnultiplicity) związku. Są trzy najbardziej powszechne rodzaje związków:
1. Związek z klasy ('do klasy /> jest typu wiele do wiele, jeśli z każdym obiektem klasy C jest związany zbiór obiektów klasy /->, a w związku odwrotnym z każdym obiektem klasy Z> jest związany zbiór obiektów klasy C. W przykładzie z rys. 2.6 związek gwiazdy reprezentuje związek wiele do wiele z klasy Filmy do klasy Gwiazda, a wystę-pujcW jest związkiem typu wiele do wicie od klasy Gwiazda do klasy Filmy. Elementem związanym może być zbiór pusty, co oznacza żc w pewnym lllmic nic wystąpiła żadna gwiazda.
2. Związek z klasy C do klasy D jest typu wiele do jeden, jeśli z każdym obiektem klasy C jest związany dokładnie jeden obiekt klasy D, ale wf związku odwrotnym z każdym obiektem klasy D jest związany zbiór obiektów klasy C. W przykładzie z rys. 2.6 związek naleźyDo między klasą Film a klasą Studio jest typu wiele do jeden, a związek posiada, prowadzący od klasy Studio do klasy Film, jest typu jeden do wiele.
3. Związek z klasy (do klasy D jest typu jeden do jeden, jeśli z każdym obiektem klasy C jest związany dokładnie jeden obiekt klasy D, a w związku odwrotnym z każdym obiektem klasy D jest związany dokładnie jeden obiekt klasy C. Rozszerzmy przykład z rys. 2.6 o klasę Prezes, która reprezentuje prezesów studiów filmowych. Zakłada się, żc każde studio ma tylko jednego prezesa, a żaden prezes nie jest prezesem w więcej niż jednym studiu. Przy takim założeniu związek między studiami filmowymi a ich prezesami jest typu jeden do jeden w obu kierunkach.
Relacje między różnymi związkami
Trzeba zdawać sobie sprawę z tego. że związek w iele do jeden jest przypadkiem specjalnym związku wiele do wiele, a związek jeden do jeden jest przypadkiem specjalnym związku wiele do jeden. Oznacza to, że dowolna istotna właściwość związku wiele do wiele przysługuje także związkom wiele do jeden, a także dowolna istotna właściwość związku wiele do jeden dotyczy również związku jeden do jeden. Na przykład struktura danych, która reprezentuje związek wiele do jeden, działa tak samo dobrze w związku jeden do jeden, ale może nic obow iązywać w zw iązku w iele do wicie.
Należy również dostrzec, że jeśli określamy związek R jako wicie do wiele, to przysługuje mu swoboda na poziomic wiele do wicie. Oznacza to, żc dla niektórych obiektów może ona określać związek typu wiele do jeden, a nawet jeden do jeden. Podobnie związek R typu wiele do jeden może dla niektórych obiektów oznaczać związek jeden do jeden.