Referat 3 v3

background image

R

R

ealizacja Asocjacji

ealizacja Asocjacji

Monika Bombol

Monika Bombol

Igor Czechak

Igor Czechak

Referat 3

Referat 3

background image

Indeks zagadnień

Indeks zagadnień

Co to są asocjacje i powiązania

Co to są asocjacje i powiązania

Rodzaje asocjacji

Rodzaje asocjacji

Implementacja asocjacji

Implementacja asocjacji

Pola

Pola

Tablice

Tablice

Kolekcje

Kolekcje

Zadania

Zadania

background image

Asocjacje

Asocjacje

Grupa powiązań między klasami

Grupa powiązań między klasami

posiadającymi wspólną strukturę i

posiadającymi wspólną strukturę i

semantykę

semantykę

Posiadają:

Posiadają:

Osob

a

Firma

jest_w

Umożliwiają nawigację po

Umożliwiają nawigację po

diagramie

diagramie

nazw
ę

liczność

kierunek

Osoba

stanowis

ko

1..*

*

atrybut

klasa

background image

Rodzaje asocjacji

Rodzaje asocjacji

Dwuargumentowa (binarne)

Dwuargumentowa (binarne)

Rekurencyjna

Rekurencyjna

Klasa asocjacji lub asocjacja z

Klasa asocjacji lub asocjacja z

atrybutami

atrybutami

Agregacja

Agregacja

background image

Rodzaje powiązań (1)

Rodzaje powiązań (1)

Dwuargumentowe (binarne):

Dwuargumentowe (binarne):

Firma

Osoba

pracuje_w

1..*

1

:Osoba

Kasia

:Firma

Krawiecka

pracuje_w

:Osoba

Ewa

pracuje_w

Diagram obiektów:

Diagram obiektów:

background image

Asocjacja

Asocjacja

rekurencyjna

rekurencyjna

Asocjacje mogą łączyć obiekty tej samej

Asocjacje mogą łączyć obiekty tej samej

klasy. Stosuje się wtedy tzw.

klasy. Stosuje się wtedy tzw.

role asocjacji

role asocjacji

.

.

Nazwy ról (np.

Nazwy ról (np.

szef

szef

) umieszcza się przy

) umieszcza się przy

odpowiednich końcach asocjacji. Określają

odpowiednich końcach asocjacji. Określają

one rodzaj nawigowania;

one rodzaj nawigowania;

Pracownik w roli szefa ma od 0 do wielu

Pracownik w roli szefa ma od 0 do wielu

podwładnych. Pracownik w roli

podwładnych. Pracownik w roli

podwładnego ma 0 lub 1 szefa.

podwładnego ma 0 lub 1 szefa.

Pracownik

szef

*

0..1

podwładny

background image

Asocjacja z

Asocjacja z

atrybutami

atrybutami

Asocjacje mogą być wyposażone

Asocjacje mogą być wyposażone

w atrybuty lub klasy asocjacji.

w atrybuty lub klasy asocjacji.

Wewnątrz klasy asocjacji można

Wewnątrz klasy asocjacji można

zdefiniować atrybuty, operacje i inne

zdefiniować atrybuty, operacje i inne

cechy asocjacji.

cechy asocjacji.

Osoba
nazwisko
pesel
adres

Firma
nazwa
adres

pracuje_w

Zatrudnienie
zarobek
stanowisko

*

1..*

Osoba
nazwisko
pesel
adres

Firma
nazwa
adres

Zatrudnienie
zarobek
stanowisko

1

1

1..*

*

background image

grupa

*

Dom

pokój

*

Agregacja i

Agregacja i

kompozycja

kompozycja

Agregacja jest szczególnym rodzajem asocjacji
wyrażającym zależność część-całość.

Używamy jej jako pomocniczy środek do
modelowania dowolnej innej sytuacji, kiedy
grupę obiektów warto - w pewnych sytuacjach -
potraktować jak całość.

student

W przypadku, gdy cykl składowej
zawiera się w cyklu życia całości, oraz
składowa nie może być współdzielona,
wtedy mamy do czynienia z
kompozycją.

background image

Zadanie 1

Zadanie 1

Zamień poniższą asocjacje wiele-do-

Zamień poniższą asocjacje wiele-do-

wiele na asocjację rekurencyjną

wiele na asocjację rekurencyjną

używając ról asocjacji.

używając ról asocjacji.

Niani
a

Opiekuje się

0..1

*

Dzieck
o

background image

Rozwiązanie zad.1

Rozwiązanie zad.1

0..1 Opiekun

Osoba

Imię

Nazwisk
o

wiek

Podopieczny *

Opiekuje się

background image

Implementacja asocjacji

Implementacja asocjacji

Asocjacje o różnych licznościach

Asocjacje o różnych licznościach

implementujemy w różny sposób:

implementujemy w różny sposób:

1 – przez pole z referencją

1 – przez pole z referencją

np. [2-5] – przez tablicę statyczną

np. [2-5] – przez tablicę statyczną

* – przez jedną z kolekcji (Vector,

* – przez jedną z kolekcji (Vector,

HashTable)

HashTable)

background image

Pole z referencją

Pole z referencją

Obiekt przechowuje w sobie pole z

Obiekt przechowuje w sobie pole z

referencją do drugiej klasy

referencją do drugiej klasy

class Student {

Indeks nrIndeksu;
Student() {

//konstruktor

}

}

class Indeks {

Student idStudenta;
Indeks() {

//konstruktor

}

}

background image

Tablica statyczna

Tablica statyczna

Obiekt przechowuje tablicę referencji do

Obiekt przechowuje tablicę referencji do

powiązanych obiektów

powiązanych obiektów

Tylko gdy liczność asocjacji jest

Tylko gdy liczność asocjacji jest

ograniczona (np. 1..3 lub 2..5)

ograniczona (np. 1..3 lub 2..5)

class Osoba {

Firma pracodawca;
Osoba() {

//konstruktor

}

}

class Firma {

Osoba[] pracownicy;
Firma() {

//konstruktor
pracownicy = new Osoba[10];

//przykładowo

}

}

background image

Vector

Vector

class Osoba {

Firma pracodawca;
Osoba() {

//konstruktor

}

}

class Firma {

Vector pracownicy;
Firma() {

//konstruktor
pracownicy = new

Vector();

}
void zatrudnij(Osoba

pracownik) {

pracownicy.add(pracownik);

}

}

Gdy liczność

Gdy liczność

asocjacji nie

asocjacji nie

jest

jest

ograniczona (*)

ograniczona (*)

Obiekt

Obiekt

przechowuje

przechowuje

kolekcję z

kolekcję z

referencjami do

referencjami do

powiązanych

powiązanych

obiektów

obiektów

background image

Użycie HashTable

Użycie HashTable

Hashtable przechowuje pary: klucz,

Hashtable przechowuje pary: klucz,

wartość

wartość

Klucz to obiekt z którego wychodzi

Klucz to obiekt z którego wychodzi

asocjacja

asocjacja

Wartość to obiekt wskazywany (koniec

Wartość to obiekt wskazywany (koniec

asocjacji)

asocjacji)

Hashtable może być np. przechowywany

Hashtable może być np. przechowywany

statycznie wewnątrz klasy

statycznie wewnątrz klasy

background image

Hashtable

Hashtable

class Osoba {

String imie;

}

class Firma {

static Hashtable zatrudnienie;
void zatrudnij(Osoba pracownik) {

zatrudnienie.put(this,

pracownik);

}

}

Tablica haszująca przechowuje

Tablica haszująca przechowuje

referencję do pracownika firmy

referencję do pracownika firmy

background image

Hashtable – relacja 1- *

Hashtable – relacja 1- *

Tablica przechowuje wektor z

Tablica przechowuje wektor z

referencjami do powiązanych obiektów

referencjami do powiązanych obiektów

class Osoba {

String imie;

}
class Firma {

static Hashtable zatrudnienie;
Firma() {

zatrudnienie.put(this, new Vector());

}
void zatrudnij(Osoba pracownik) {

((Vector)(zatrudnienie.get(this))).add(pracownik);

}

}

background image

Atrybuty asocjacji

Atrybuty asocjacji

Atrybuty asocjacji implementuje się jako

Atrybuty asocjacji implementuje się jako

klasę pośredniczącą zawierającą referencje

klasę pośredniczącą zawierającą referencje

do klas które łączy

do klas które łączy

class Osoba {

Hashtable zatrudnienie; }

class Firma {

Hashtable zatrudnienie; }

class Zatrudnienie {

Osoba pracownik;
Firma pracodawca;
int czas;
Zatrudnienie(Osoba pracownik, Firma pracodawca, int

czas) { }
}

Relacje mogą być zrealizowane jednym z wcześniej

Relacje mogą być zrealizowane jednym z wcześniej

opisanych sposobów (np. Hashtable)

opisanych sposobów (np. Hashtable)

Osoba
nazwisko
pesel
adres

Firma
nazwa
adres

Zatrudnienie
zarobek
stanowisko

1

1

1..*

*

background image

Implementacja agregacji

Implementacja agregacji

Agregację można zaimplementować

Agregację można zaimplementować

przy pomocy klasy wewnętrznej

przy pomocy klasy wewnętrznej

class Dom {

Pokój[] pokoje;
Dom(int ilośćPokojów) {

pokoje = new Pokój[ilośćPokojów];

}
class Pokój() {

Pokój() {//konstruktor}

}

}

background image

Zadanie (2)

Zadanie (2)

Stół ma od jednej do trzech nóg.

Stół ma od jednej do trzech nóg.

Zaproponuj diagram klas i

Zaproponuj diagram klas i

rozwiązanie implementacyjne.

rozwiązanie implementacyjne.

background image

Odpowiedź do zadania (2)

Odpowiedź do zadania (2)

class Stół {

Noga[] nogi;
Stół(int ilośćNóg) {

this.nogi = new Noga[ilośćNóg];
//stworzenie nóg
for (int i=0; i<ilośćNóg; i++) {

nogi[i] = new Noga();

}

}

}
class Noga {

Noga() {

//konstruktor

}

}

background image

Zadanie (3)

Zadanie (3)

Na jednym wydziale studiuje wiele

Na jednym wydziale studiuje wiele

osób. Osoba może studiować na

osób. Osoba może studiować na

wielu wydziałach jednocześnie.

wielu wydziałach jednocześnie.

Jak będzie wyglądał przykładowy

Jak będzie wyglądał przykładowy

diagram klas?

diagram klas?

W jaki sposób zaimplementować

W jaki sposób zaimplementować

można taką asocjację?

można taką asocjację?

background image

Odpowiedź do zadania (3)

Odpowiedź do zadania (3)

Implementacja za pomocą klasy

Implementacja za pomocą klasy

pośredniczącej przechowującej

pośredniczącej przechowującej

referencje do obu klas.

referencje do obu klas.

Relacja 1-* do klasy pośredniej może

Relacja 1-* do klasy pośredniej może

być zaimplementowana np. za

być zaimplementowana np. za

pomocą wektora.

pomocą wektora.

background image

Zadanie (4)

Zadanie (4)

W pudełku są czekoladki. Czekoladki

W pudełku są czekoladki. Czekoladki

nie mogą istnieć bez pudełka.

nie mogą istnieć bez pudełka.

Zaproponuj implementację powyższej

Zaproponuj implementację powyższej

zależności przy założeniu, że mamy

zależności przy założeniu, że mamy

do czynienia z kompozycją

do czynienia z kompozycją

background image

Odpowiedź do zadania (4)

Odpowiedź do zadania (4)

class Pudełko {

Czekoladka[] zawartość;
Pudełko() {

zawartość = new Czekoladka[20];
//stworzenie czekoladek
for (int i=0; i<20; i++) {

zawartość[i] = new

Czekoladka();

}

}
class Czekoladka() {

Czekoladka() {//konstruktor}

}

}

Tworzymy klasę Czekoladka

Tworzymy klasę Czekoladka

wewnątrz klasy Pudełko

wewnątrz klasy Pudełko

background image

Źródła do których warto

Źródła do których warto

zajrzeć

zajrzeć

Wykłady z PRI. Ewa Stemposz i

Wykłady z PRI. Ewa Stemposz i

Kazimierz Subieta

Kazimierz Subieta

http://www.jot.fm/issues/issue_2003_0

http://www.jot.fm/issues/issue_2003_0

9/article4

9/article4

- Mapping UML Associations into

- Mapping UML Associations into

Java Code

Java Code

Carlos Ruiz del Castillo.

Carlos Ruiz del Castillo.

Implementación en Java de

Implementación en Java de

asociaciones binarias UML

asociaciones binarias UML


Document Outline


Wyszukiwarka

Podobne podstrony:
Referat Inżynieria Produkcji Rolniczej
referat solidy
statystyka referat MPrzybyl
referat 4
Referat 4
br9000 mic v3
04 referat Pieprzyk szczelność powietrzna
ITIL v3 Cykl życia usług IT
Prywatne znaczy gorsze referat a krol 0
referat z biochemi, notatki

referat - adamek, resocjalizacja
referat bibliografia Fakultet, polityka społeczna fakultet
Referat - Pedagogika społ. - Szkoła, Studia =), Resocjalizacja
referat - obrzęd świecki w 30 tezach, KULTUROZNAWSTWO, antropologia widowisk
Referat o Irlandii, Dokumenty( referaty, opisy, sprawdziany, itp.)

więcej podobnych podstron