160 likes | 354 Views
Realizacja asocjacji. :Osoba Ewa. :Osoba Jasio. :Osoba Kasia. Anna Kuran Artur Jendrzejak. pracuje_w. pracuje_w. pracuje_w. :Firma Szewska. :Firma Krawiecka. Referat 3. Indeks zagadnień. Powiązania Liczności asocjacji 1-do-1 i 1-do-wiele
E N D
Realizacja asocjacji :Osoba Ewa :Osoba Jasio :Osoba Kasia Anna Kuran Artur Jendrzejak pracuje_w pracuje_w pracuje_w :Firma Szewska :Firma Krawiecka Referat 3
Indeks zagadnień • Powiązania • Liczności asocjacji 1-do-1 i 1-do-wiele (dla określonej i dla nieokreślonej maksymalnej liczności) • Typy asocjacji - jednokierunkowa - dwukierunkowa • Realizacja asocjacji w zależności od liczności - pole - tablica - wektor • Asocjacja rekurencyjna • Asocjacja z atrybutami i klasa asocjacji
Klasyfikator • Jest to blok konstrukcyjny, który służy do opisania cech strukturalnych i czynnościowych; • Klasyfikatorami są klasy, interfejsy, typy danych, ...
Powiązanie (1) • To związek strukturalny określający zbiór połączeń między obiektami • Związek znaczeniowy między co najmniej dwoma klasyfikatorami, który określa połączenia między ich egzemplarzami
Powiązanie (2) • Specyfikacja asocjacji jest_w pomiędzy obiektami klasy Firma i obiektami klasy Miasto: jest_w Firma Miasto 1 1..* • Biały trójkącik określa kierunek czytania nazwy powiązania (w tym przypadku określa on, że firma znajduje się w mieście, a nie miasto w firmie) • „jest_w” to nazwa asocjacji, która wyznacza znaczenie tej asocjacji w modelu pojęciowym.
Rodzaje powiązań (1) • Dwuargumentowe (binarne): pracuje_w Firma Osoba 1 1..* Diagram obiektów: :Osoba Kasia pracuje_w :Firma Krawiecka :Osoba Ewa pracuje_w
Rodzaje powiązań (2) • Wieloargumentowe (n-arne): Rok sezon * * * Zespół Gracz bramkarz Zapis Mecz gole nasze gole ich
1 1 1 * Państwo Stolica Firma Pracownik 0..1 0..* Osoba Adres Liczności • Asocjacje mogą mieć oznaczenia liczności. Liczność oznacza, ile obiektów innej klasy może być powiązane z jednym obiektem danej klasy.
ma Student Index 1 1 Asocjacja dwukierunkowa 1-do-1 class Student{ String nazwisko; Index nrAlbumu; public Student(String naz, String tryb){ nazwisko = naz; nrAlbumu = new Index(String tryb, this); } } class Index{ String trybStudiow; int numer; Student wlasciciel; static int kolejnyNumer; public Index(String tryb, Student wlas){ numer = kolejnyNumer; trybStudiow = tryb; wlasciciel = wlas; kolejnyNumer++; } }
Asocjacja dwukierunkowa 1-do-wiele (tablica) class Osoba{ String imie; Firma pracodawca; public Osoba(String im){ imie = im; pracodawca = null; } public void zatrudnij(Firma f){ pracodawca = f; } } class Firma{ String nazwa; Osoba[] pracownicy; static int iluPracownikow = 10; public Firma(String naz, int iluPracownikow){ nazwa = naz; pracownicy = new Osoba[iluPracownikow]; } public void zatrudnij(Osoba nowa){ if (iloscPracownikow < iluPracownikow) { pracownicy[iloscPracownikow] = nowa; iloscPracownikow++; nowa.zatrudnij(this); } } } pracuje_w Firma Osoba 1 1..10
Asocjacja dwukierunkowa 1-do-wiele (Vector) class Osoba{ String imie; Firma pracodawca; public Osoba(String im){ imie = im; pracodawca = null; } public void zatrudnij(Firma f){ pracodawca = f; } } class Firma{ String nazwa; Vector pracownicy; public Firma(String naz){ nazwa = naz; pracownicy = new Vector(); } public void zatrudnij(Osoba nowa){ pracownicy.add(nowa); nowa.zatrudnij(this); } } pracuje_w Firma Osoba 1 1..*
podwładny * Pracownik 0..1 szef Asocjacja rekurencyjna Asocjacje mogą łączyć obiekty tej samej klasy. Stosuje się wtedy tzw. role asocjacji. Nazwy ról (np. szef ) umieszcza się przy odpo-wiednich końcach asocjacji. Określają one rodzaj nawigowania; specyfikują klasę „cel”. Pracownik w roli szefa ma od 0 do wielu podwładnych. Pracownik w roli podwładnego ma 0 lub 1 szefa.
podwładny * Pracownik 0..1 szef Asocjacja rekurencyjna class Pracownik{ String nazwisko; Pracownik szef = null; Vector podwładni = new Vector; public Pracownik(String nazwisko, Pracownik szef){ this.nazwisko = nazwisko; this.szef = szef; } public dodajPodwładnego(Pracownik pr){ podwładni.add(pr); } }
pracuje_w 1 1 Firma nazwa adres Firma nazwa adres Osoba nazwisko pesel adres Osoba nazwisko pesel adres 1..* * * 1..* Zatrudnienie zarobek stanowisko Zatrudnienie zarobek stanowisko Asocjacja z atrybutami • Asocjacje mogą być wyposażone w atrybuty lub klasy asocjacji. Wewnątrz klasy asocjacji można zdefiniować atrybuty, operacje i inne cechy asocjacji.
Asocjacja z atrybutami class Osoba{ String nazwisko; String pesel; String adres; OsobaZatrudniona zatrudnienie; } class Firma { String nazwa; String adres; OsobaZatrudniona[] osobyZatrudnione; } class OsobaZatrudniona { int zarobek; int stanowisko; Firma firmaZatrudniajaca; Osoba osobaZatrudniona; }
KONIEC Bibliografia • www.java.sun.com • Ewa Stemposz, Kazimiesz Subieta – Wykłady z PRI „Analiza i Projektowanie Systemów Informacyjnych” • Grady Booch, James Rumbaugh „UML przewodnik użytkownika” • Krzysztof Barteczko – „Podstawy programowania w JAVA” • Perdita Stevens, Rob Pooley „Using UML”