Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałStanisław Szymczak Został zmieniony 8 lat temu
1
Implementacja asocjacji (z atrybutami i bez) przy użyciu: referencji (kolekcji referencji) tablic asocjacyjnych przygotował: Kamil Kowalczyk
2
Asocjacja Jest to fizyczny związek pomiędzy rzeczywistymi bytami w analizowanej dziedzinie problemowej. Związki mogą występować między wieloma obiektami, lecz najczęściej wykożystujemy powiązania pomiędzy dwoma objektami tzw. asocjacje binarne
3
Asocjacje mogą posiadać nazwy, role, i liczności. Tłumaczyć???
4
Implementacja asocjacji bez żadnych „sztuczek”
5
public class Program{ public static void main(String[] args){ Panstwo polska = new Panstwo( "Polska", 312685, "Aleksander", "Kwaśniewski", 1954, 11, 15);} } class Osoba{ String imie, nazwisko; int rokUrodz, miesiacUrodz, dzienUrodz; public Osoba(String imie, String nazwisko, int rokUrodz, int miesiacUrodz, int dzienUrodz) { this.imie = imie; this.nazwisko = nazwisko; this.rokUrodz = rokUrodz; this.miesiacUrodz = miesiacUrodz; this.dzienUrodz = dzienUrodz; } } class Panstwo { String nazwa; int powierzchnia; Osoba prezydent; public Panstwo(String nazwa, int powierzchnia, String imiePrezydenta, String nazwiskoPrezydenta, int rokUrodzPrezydenta, int miesiacUrodzPrezydenta, int dzienUrodzPrezydenta) { this.nazwa = nazwa; this.powierzchnia = powierzchnia; prezydent = new Osoba(imiePrezydenta, nazwiskoPrezydenta, rokUrodzPrezydenta, miesiacUrodzPrezydenta, dzienUrodzPrezydenta); } public Panstwo(String nazwa, int powierzchnia, Osoba prezydent) { this.nazwa = nazwa; this.powierzchnia = powierzchnia; this.prezydent = prezydent; } }
6
Implementacja asocjacji jeden do wielu przy pomocy kolekcji referencji
7
class Osoba{ String imie, nazwisko, adres; int rokUrodz, miesiacUrodz, dzienUrodz; public Osoba(String imie, String nazwisko, String adres, int rokUrodz, int miesiacUrodz, int dzienUrodz) { this.imie = imie; this.nazwisko = nazwisko; this.adres = adres; this.rokUrodz = rokUrodz; this.miesiacUrodz = miesiacUrodz; this.dzienUrodz = dzienUrodz; } } class Firma { String nazwa, adres; Collection personel = new ArrayList(); public Firma(String nazwa, String adres, Osoba pracownik0) { this.nazwa = nazwa; this.adres = adres; //ponieważ nie może istnieć firma w której nikt nie pracuje, przy tworzeniu obiektu klasy Firma //prosimy o podanie jednej osoby dodajPracownika(pracownik0); } void dodajPracownika(Osoba pracownik) { personel.add(pracownik); } }
8
Implementacja asocjacji wiele do wielu przy pomocy kolekcji referencji
9
class Osoba{ String imie, nazwisko, adres; int rokUrodz, miesiacUrodz, dzienUrodz; Collection miejscaZatrudnienia = new ArrayList(); public Osoba(String imie, String nazwisko, String adres, int rokUrodz, int miesiacUrodz, int dzienUrodz) { this.imie = imie; this.nazwisko = nazwisko; this.adres = adres; this.rokUrodz = rokUrodz; this.miesiacUrodz = miesiacUrodz; this.dzienUrodz = dzienUrodz; } void dodajMiejsceZatrudnienia(Firma firma) { miejscaZatrudnienia.add(firma); } } class Firma { String nazwa, adres; Collection personel = new ArrayList(); public Firma(String nazwa, String adres, Osoba pracownik0) { this.nazwa = nazwa; this.adres = adres; //ponieważ nie może istnieć firma w której nikt nie pracuje, przy tworzeniu obiektu klasy Firma //prosimy o podanie jednej osoby dodajPracownika(pracownik0); } void dodajPracownika(Osoba pracownik) { personel.add(pracownik); } }
10
Tablice asocjacyjne Bardzo dobrymi tablicami asocjacyjnymi w Javie są obiekty klasy Map. Wbrew temu że może wyglądać jak klasa „kolekcyjna” nie jest to typowa kolekcja. Klasa ta służy do przechowywania par obiektów z których jeden jest kluczem a drugi wartością. Mamy do dyspozycji klasy HashMap i TreeMap.
11
Implementacja asocjacji jeden do wiele za pomocą tablic asocjacyjnych
12
public class Program{ public static void main(String[] args){ Firma firma = new Firma("Winex", "Truskaw"); Osoba osoba = new Osoba("Jan", "Kowalski", "Wałbrzyska 10/20", 1950, 3, 15); //.......................................... //naturalnie osób możemy zrobić nieskończenie wiele Map relacja = new HashMap(); Collection pracownicy = new LinkedList(); pracownicy.add(osoba); //........................................... //oczywiscie do listy tej trzeba dodać wszystkich pracowników danej firmy relacja.put(firma, pracownicy);} } class Osoba { String imie, nazwisko, adres; int rokUrodz, miesiacUrodz, dzienUrodz; public Osoba(String imie, String nazwisko, String adres, int rokUrodz, int miesiacUrodz, int dzienUrodz) { this.imie = imie; this.nazwisko = nazwisko; this.adres = adres; this.rokUrodz = rokUrodz; this.miesiacUrodz = miesiacUrodz; this.dzienUrodz = dzienUrodz; } } class Firma { String nazwa, adres; public Firma(String nazwa, String adres) { this.nazwa = nazwa; this.adres = adres; } }
13
Implementacja asocjacji wiele do wielu za pomocą tablic asocjacyjnych
14
public class Program { public static void main(String[] args){ Firma firma = new Firma("Winex", "Truskaw"); //.......................................... //naturalnie firm możemy zrobić nieskończenie wiele Osoba osoba = new Osoba("Jan", "Kowalski", "Wałbrzyska 10/20", 1950, 3, 15); //.......................................... //osób tak samo Map osobyWFirmie = new HashMap(); Map pracodawcyDlaOsoby = new HashMap(); Collection listaPracownikuw = new LinkedList(); Collection listaFirm = new LinkedList(); listaPracownikuw.add(osoba); //........................................... //oczywiscie do listy tej trzeba dodać wszystkie osoby listaFirm.add(firma); //........................................... //firmy tak samo //tutaj dodajemy pracowników do firmy osobyWFirmie.put(firma, listaPracownikuw); //a tutaj pracodawców dla osoby pracodawcyDlaOsoby.put(osoba, listaFirm);} } class Osoba{ String imie, nazwisko, adres; int rokUrodz, miesiacUrodz, dzienUrodz; public Osoba(String imie, String nazwisko, String adres, int rokUrodz, int miesiacUrodz, int dzienUrodz) { this.imie = imie; this.nazwisko = nazwisko; this.adres = adres; this.rokUrodz = rokUrodz; this.miesiacUrodz = miesiacUrodz; this.dzienUrodz = dzienUrodz; } } class Firma{ String nazwa, adres; public Firma(String nazwa, String adres){ this.nazwa = nazwa; this.adres = adres; } }
15
Asocjacje z atrybutami Tłumaczyć???
16
Implementacja asocjacji z ATRYBUTAMI jeden do wielu za pomocą kolekcji referencji
17
class Osoba{ String imie, nazwisko, adres; int rokUrodz, miesiacUrodz, dzienUrodz; public Osoba(String imie, String nazwisko, String adres, int rokUrodz, int miesiacUrodz, int dzienUrodz){ this.imie = imie; this.nazwisko = nazwisko; this.adres = adres; this.rokUrodz = rokUrodz; this.miesiacUrodz = miesiacUrodz; this.dzienUrodz = dzienUrodz;} } class Atrybuty{ String stanowisko; int zarobek; public Atrybuty(String stanowisko, int zarobek){ this.stanowisko = stanowisko; this.zarobek = zarobek;} } class Firma { String nazwa, adres; Map pracownicy = new HashMap(); public Firma(String nazwa, String adres, Osoba pracownik0, Atrybuty stanZarob) { this.nazwa = nazwa; this.adres = adres; //ponieważ nie może istnieć firma w której nikt nie pracuje, przy tworzeniu obiektu klasy Firma //prosimy o podanie jednej osoby dodajPracownika(pracownik0, stanZarob0); } void dodajPracownika(Osoba pracownik, Atrybuty stanZarob0) { pracownicy.put(pracownik, stanZarob0); } }
18
Implementacja asocjacji z ATRYBUTAMI wiele do wielu za pomocą kolekcji referencji
19
class Osoba{ String imie, nazwisko, adres; int rokUrodz, miesiacUrodz, dzienUrodz; Map miejscaZatrudnienia = new HashMap(); public Osoba(String imie, String nazwisko, String adres, int rokUrodz, int miesiacUrodz, int dzienUrodz){ this.imie = imie; this.nazwisko = nazwisko; this.adres = adres; this.rokUrodz = rokUrodz; this.miesiacUrodz = miesiacUrodz; this.dzienUrodz = dzienUrodz;} void dodajMiejsceZatrudnienia(Firma firma, Atrybuty stanZarob){ miejscaZatrudnienia.put(firma, stanZarob);} } class Atrybuty{ String stanowisko; int zarobek; public Atrybuty(String stanowisko, int zarobek) { this.stanowisko = stanowisko; this.zarobek = zarobek; } } class Firma { String nazwa, adres; Map personel = new HashMap(); public Firma(String nazwa, String adres) { this.nazwa = nazwa; this.adres = adres; } void dodajPracownika(Osoba pracownik, Atrybuty stanZarob0) { personel.put(pracownik, stanZarob0); } }
20
Implementacja asocjacji z ATRYBUTAMI jeden do wielu za pomocą tablic asocjacyjnych
21
public class Program{ public static void main(String[] args){ Firma firma = new Firma("Winex", "Truskaw"); Osoba osoba = new Osoba("Jan", "Kowalski", "Wałbrzyska 10/20", 1950, 3, 15); Atrybuty stanZarob = new Atrybuty("wrzucający zgniłe jabłka do kadźi", 300); //.......................................... //naturalnie osób możemy zrobić nieskończenie wiele a dla każdej wymyślamy atrybuty Map relacja = new HashMap(); Map pracownicy = new HashMap(); pracownicy.put(osoba, stanZarob); //i tak dla wszystkich pracowników................................ relacja.put(firma, pracownicy);} } class Osoba{ String imie, nazwisko, adres; int rokUrodz, miesiacUrodz, dzienUrodz; public Osoba(String imie, String nazwisko, String adres, int rokUrodz, int miesiacUrodz, int dzienUrodz){ this.imie = imie; this.nazwisko = nazwisko; this.adres = adres; this.rokUrodz = rokUrodz; this.miesiacUrodz = miesiacUrodz; this.dzienUrodz = dzienUrodz;} } class Atrybuty{ String stanowisko; int zarobek; public Atrybuty(String stanowisko, int zarobek){ this.stanowisko = stanowisko; this.zarobek = zarobek; } } class Firma { String nazwa, adres; public Firma(String nazwa, String adres) { this.nazwa = nazwa; this.adres = adres; } }
22
Implementacja asocjacji z ATRYBUTAMI wiele do wielu za pomocą tablic asocjacyjnych
23
public class Program{ public static void main(String[] args){ Firma firma = new Firma("Winex", "Truskaw"); Osoba osoba = new Osoba("Jan", "Kowalski", "Wałbrzyska 10/20", 1950, 3, 15); Atrybuty stanZarob = new Atrybuty("wrzucający zgniłe jabłka do kadźi", 300); //.......................................... //naturalnie osób możemy zrobić nieskończenie wiele a dla każdej wymyślamy atrybuty Map pracownicyWFirmie = new HashMap(); Map pracodawcyDlaOsoby = new HashMap(); Map pracownicy = new HashMap(); Collection firmy = new ArrayList(); pracownicy.put(osoba, stanZarob); //i tak dla wszystkich pracowników................................ firmy.add(firma); pracownicyWFirmie.put(firma, pracownicy); pracodawcyDlaOsoby.put(osoba, firmy);} } class Osoba{ String imie, nazwisko, adres; int rokUrodz, miesiacUrodz, dzienUrodz; public Osoba(String imie, String nazwisko, String adres, int rokUrodz, int miesiacUrodz, int dzienUrodz){ this.imie = imie; this.nazwisko = nazwisko; this.adres = adres; this.rokUrodz = rokUrodz; this.miesiacUrodz = miesiacUrodz; this.dzienUrodz = dzienUrodz;} } class Atrybuty{ String stanowisko; int zarobek; public Atrybuty(String stanowisko, int zarobek){ this.stanowisko = stanowisko; this.zarobek = zarobek;} } class Firma{ String nazwa, adres; public Firma(String nazwa, String adres) { this.nazwa = nazwa; this.adres = adres; } }
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.