Implementacja asocjacji (z atrybutami i bez) przy użyciu: referencji (kolekcji referencji) tablic asocjacyjnych przygotował: Kamil Kowalczyk.

Slides:



Advertisements
Podobne prezentacje
Wstęp do strumieni danych
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Programowanie obiektowe
Programowanie Wizualne WYKŁAD 5
Modelowanie klas i obiektów
Wzorce.
Agregacja Agregacja jest rodzajem asocjacji; zadaniem agregacji jest modelowanie związku całość-część. agregacja jest asocjacją: dla obu jej końców są.
Static, const, volatile.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
Sposoby implementacji asocjacji
Kamil Łącki Dominik Strzelichowski
Implementacja ekstensji klasy
Implementacja asocjacji
Projektowanie systemów informacyjnych
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
C++ wykład 2 ( ) Klasy i obiekty.
Tablice tablica jest sekwencją elementów tego samego typu (prostego lub obiektowego) w Javie tablice są obiektami, a zmienne tablicowe przechowują referencję
Hibernate relacje.
Projektowanie - klasy i związki
Polsko-Japońska Wyższa Szkoła Technik Komputerowych
Techniki i języki programowania
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Tworzenie aplikacji mobilnych
OMT - Model obiektów, cz.3.
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Inicjalizacja i sprzątanie
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
Programowanie obiektowe 2013/2014
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Kurs języka C++ – wykład 3 ( )
Modelowanie obiektowe Diagramy klas
BJUG_1: Typy Generyczne, Kolekcje
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Kurs języka C++ – wykład 4 ( )
DOM Ewa Dukała Piotr Muszyński. DOM DocumentBuilder Factory Document Builder XML Data object obiectobject DocumentDOM.
PROGRAMOWANIE W JAVA Informatyka Stosowana – ROK II / III Laboratoria mgr inż. Krzysztof Bzowski.
Programowanie sieciowe w Javie Michał Kuciapski
Klasy kolekcji Tomasz Wilczyński. Kolekcja Schemat kolekcji Javy zawiera sześć interfejsów oraz kilka innych implementacji tych interfejsów do celów ogólnych.
Zakres Wzorce projektowe ( -Adapter (str , wykład wzorce projektowe.
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Modelowanie model związków encji
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Wstęp do systemów informatycznych Diagramy klas. Odbiór świata  Myślenie o dziedzinie problemu powinno być możliwie zbliżone do myślenia o systemie 
Kolekcje (3) Zbiory. Porównywanie i porządkowanie elementów kolekcji. (c) Krzysztof Barteczko 2014.
Kolekcje (4) Mapy Widoki i algorytmy (c) Krzysztof Barteczko 2014.
Asocjacja,Kompozycja,Agregacja
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Wprowadzenie do języka Java Kolekcje w języku Java Bartosz Walter.
Programowanie Obiektowe – Wykład 6
Typy wyliczeniowe, kolekcje
(według:
Programowanie obiektowe II
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Klasy wewnętrzne. Praktyka użycia interfejsów i klas wewnętrznych
Iteracyjno-rozwojowy cykl oprogramowania 3
Programowanie obiektowe – zastosowanie języka Java SE
PGO - Projektowanie i implementacja pierwszych klas
BYDGOSKI FESTIWAL NAUKI
PGO Dziedziczenie Michail Mokkas.
Programowanie w Javie 1 Dr Robert Kowalczyk
Iteracyjno-rozwojowy cykl oprogramowania 3
Zapis prezentacji:

Implementacja asocjacji (z atrybutami i bez) przy użyciu: referencji (kolekcji referencji) tablic asocjacyjnych przygotował: Kamil Kowalczyk

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

Asocjacje mogą posiadać nazwy, role, i liczności. Tłumaczyć???

Implementacja asocjacji bez żadnych „sztuczek”

public class Program{ public static void main(String[] args){ Panstwo polska = new Panstwo( "Polska", , "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; } }

Implementacja asocjacji jeden do wielu przy pomocy kolekcji referencji

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); } }

Implementacja asocjacji wiele do wielu przy pomocy kolekcji referencji

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); } }

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.

Implementacja asocjacji jeden do wiele za pomocą tablic asocjacyjnych

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; } }

Implementacja asocjacji wiele do wielu za pomocą tablic asocjacyjnych

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; } }

Asocjacje z atrybutami Tłumaczyć???

Implementacja asocjacji z ATRYBUTAMI jeden do wielu za pomocą kolekcji referencji

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); } }

Implementacja asocjacji z ATRYBUTAMI wiele do wielu za pomocą kolekcji referencji

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); } }

Implementacja asocjacji z ATRYBUTAMI jeden do wielu za pomocą tablic asocjacyjnych

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; } }

Implementacja asocjacji z ATRYBUTAMI wiele do wielu za pomocą tablic asocjacyjnych

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; } }