Accedi per seguire   
Seguaci 0
gepeppe

[java] Associazione - Composizione - Aggregazione Help

4 messaggi in questa discussione

salve, stò studiando un po di java all'univ, solo che dalle slide del prof non si capisce granchè!, perciò volevo chiedere se qualcuno può farmi qualche esempio di aggregazione composizione e associazione in java. in via teoria sò cos'è, ma non sò implementarlo via codice. basta anche un esempio scemo, per farmi capire cosa bisogna scrivere in una classe per realizzare ciò.

grazie a tutti per le risposte

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Sono dei concetti della programmazione ad oggetti che definiscono le relazioni presenti tra le classi in un'applicazione.

La differenza fondamentale tra composizione e aggregazione è la forza della relazione.

L'aggregazione è una relazione puramente logica. I due oggetti esistono anche se sparisce la relazione...

Esempio:

La classe A è formata da istanze delle classi B, C, D messe in relazione per aggregazione.

Il programmatore per rispettare questa relazione crea le istanze dei tre oggetti e poi li associa ai componenti dell'oggetto:

//facciamo finta di aver definito le classi B,C,D...

public class A
{
private B oggettoB;
private C oggettoC;
private D oggettoD;

public void setB(B oB);
public void setC(C oC);
public void setD(D oD);

public static void main(String[] args)
{
	B b = new B();
	C c = new C();
	D d = new D();

	A a = new A();
	a.setB(b);
	a.setC(c);
	a.setD(d);
}
}

La composizione, invece, è una relazione più forte. L'oggetto contenuto non può esistere senza il contenitore...

Esempio:

La classe A è formata da istanze delle classi B, C, D messe in relazione per composizione.

Il programmatore per rispettare questa relazione non può mai creare istanze di B, C e D al di fuori di di un'istanza di A:

//facciamo finta di aver definito le classi B,C,D...

public class A
{
public void usoB()
{
	B b = new B();
	b.metodoDiB();
}
public void usoC()
{
	 C c = new C();
	 c.metodoDiC();
 }
public void usoD()
{
	 D d = new D();
	 d.metodoDiD();
 }

 public static void main(String[] args)
 {
	 A a = new A();
	 a.usoB();
	 a.usoC();
	 a.usoD();
 }
}

Le associazioni invece sono le relazioni che intercorrono tra varie classi. Sono fondamentalmente di 3 tipi:

uno-a-uno

uno-a-molti

molti-a-molti

Nel primo caso l'oggetto della classe A contiene un puntatore che fa riferimento all'oggetto della classe B (Esattamente come nell'esempio dell'aggregazione). Lo stesso succede per B (che avrà un puntatore che fa riferimento alla classe A).

Nel secondo caso l'oggetto della classe B contiene un array (se conosco il numero massimo di relazioni) oppure una lista (se non conosco il numero di relazioni). La classe B, invece, contiene solamente un puntatore che fa riferimento ad A.

L'ultimo caso, cambia dal secondo solo perchè pure la classe B avrà un array (o una lista) che fa riferimento alla classe A.

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

grazie per la risposta...molto esaustiva :) ciao ciao

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

:omaggi:

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0