Agregacja Agregacja: umiera żołnież nie ginie oddział Kompozycja: umiera serce ginie człowiek Pole



Pobieranie 43.73 Kb.
Data10.05.2016
Rozmiar43.73 Kb.
Czasem nic znaczy więcej...

...i dlatego takie małe nic jest TU!



Agregacja


<>Agregacja: umiera żołnież nie ginie oddział

<=>Kompozycja: umiera serce ginie człowiek

Pole


Class Oddział{

final int licznosc = 100;

String rozkazy;

Zolnierze [licznosc];

// kolekcja referencji do obiektow skladowych

}
Class Zolnierz{

String rozkazy;

Oddział oddział;

// referencja do obiektu bedacego caloscia

}

Klasa wewnętrzna


Class Niebo{

final int licznosc = 100;

private class Gwiazdy

{

// ...............



};

Gwiazdy gwiazdy[licznosc];


}

Ukrywanie implementacji. Automatyczna propagacja operacji(Kompozycja).

Wady poszczególnych kolekcji. Nieodpowiedni dla agregacji.

Osobna klasa (klasa z atrybutami)

Class termin{

final int licznosc = 100;

Date data;

Oddział całość;

Zolnierz[licznosc];

}

Odpowiednio, zarówno obiekt Oddział, jak i obiekty Żołnierz muszą zawierać referencje do obiektu Termin



Asocjacje n-arne

Pole


Utrzymywanie n-1 referencji (możliwie kolekcji referencji) w każdej klasie jest dość uciążliwe.

Utrudniona Nawigacja


Osobna klasa


Class Asocjacja_N_Arna

{

Oddzial oddzial;



Zolnierz zolnierz;

}

Każda klasa wchodząca w skład asocjacji musi utrzymywać jedynie referencje do powyższego obiektu



Łatwa nawigacja. Niski stopień komplikacji.

Możliwość wprowadzenia atrybutów asocjacji. Duża liczba referencji



Asocjacja kwalifikowana

public class Ksiazka extends Object {


private String tytul; // Atrybuty
// Konstruktor
public Book() { }
 

// Metody dostępu do atrybutów asocjacji
public String getTytul() {
return tytul;
}
public void setTytul(String tytul2) {
tytul = tytul2;
}
}

public class Klient extends Object {


private String nazwisko;
public Hashtable zbiorKsiazek;
 

public Klient() {

zbiorKsiazek = new Hashtable();
}
 

public String getNazwisko() {


return nazwisko;
}
 

public void setNazwisko(String nazwisko) {


this.nazwisko = nazwisko;
}

// ---- Metody dostępu do asocjacji
// Pobierz zbiór książek
public Vector getZbiorKsiazek(String ksiID2) {
Object obiekt = zbiorKsiazek.get(ksiID2);
if (obiekt != null) return ((Vector) obiekt);
return null;
}

// Dodaj książkę do zbioru
public void addKsiazka(String ksiID2, Ksiazka book2){
if (book2 == null) return;
Vector vector = (Vector) zbiorKsiazek.get(ksiID2);
if (vector == null) {
vector = new Vector();
zbiorKsiazek.put(ksiID2, vector);
}
vector.addElement(book2);
}

// Usun książkę do zbioru
public void removeKsi(String ksiID2, Ksiazka book2) {
if (book2 == null) return;
Vector vector = (Vector) zbiorKsiazek.get(ksiID2);
if (vector != null) vector.removeElement(book2);
}
}



Asocjacja


Asocjacja: 1(Samochod) – 4(Kolo)

public class Samochod {

public String Marka;

public Kolo[4] moje_kola;

}
public class Kolo {

public int Rozmiar;

}

Asocjacja: 1(Samochod) – 1(silnik)

public class Samochod {

public String Marka;

public Silnik moj_silnik;

}
public class Silnik {

public int pojemnosc;

}

System.out.print(”pojemnosc = ” + Toyota.moj_silnik.pojemnosc);



Asocjacja: 1 – 0...* (na tablicach)

public class Osoba {

public String Nazwisko;

public String Imie;

public Ksiazka[] mojeKsiazki;
// ale jaki ustalić rozmiar tablicy w konstruktorze

}

public class Ksiazka {



public String Tytul;
}

Asocjacja: 1 – 0...* (na hashSet)
Public class Osoba {

String imie;

HashSet mojeKsiazki;

public Osoba(String imie)

{

this.imie = imie;



mojeKsiazki = new HashSet();

}

public void addTo(ksiazka k)



{

mojeKsiazki.add(k);

}

public void show()



{

Iterator iterator =

mojeKsiazki.iterator();

while (iterator.hasNext()) {

ksiazka o =

(ksiazka)iterator.next();

String name = o.tytul;

System.out.println(name);

}

}
}


public class ksiazka{

public String tytul;

public ksiazka(String tytul)

{

this.tytul = tytul;



}
}

Asocjacja: * - *

public class Aktor {

public String Nazwisko;

public String Imie;

public Film[] mojeFilmy;

}
public class Film {

public String Tytul;

public Aktor[] aktorzy;


}
Asocjacja z klasą pośredniczącą

public class Aktor {

public String Nazwisko;

public String Imie;

}

public class Film {



public String Tytul;
}

public class Aktor_Film {

public Aktor aktor;

public Film film;


}

Asocjacja z atrybutami

public class klaun{


string imie;
string Nazwisko;
double Pesel;
Hashset zatrudnienia;

// moze byc dowolna kolekcja


}
public class Cyrk{
string nazwa;
string adres;
Hashset zatrudnienia;

// moze byc dowolna kolekcja
}

public class zatrudnienie{


double zarobek;
Klaun klaun;
Cyrk cyrk;
}



©absta.pl 2016
wyślij wiadomość

    Strona główna