[UML]quando aggregazione e quando dipendenza?

davidinho

Nuovo Utente
18 Set 2010
12
0
0
Sto disegnano un grafico UML di un progetto ma mi è sorto un dubbio...
Faccio un esempio con 2 classi per spiegarmi meglio:
codice:
public class Libro{...}

public class Libreria{
private ArrayList<Libro> libri;

public void inserisci(Libro l){...}

public Libro prendi(Libro l){...}
}
in questo caso fra Libro e Libreria c'è una relazione di aggregazione ma anche di dipendenza, ho sbaglio?
Quindi l'aggregazione implica sempre la dipendenza? e nello schema UML dovrei segnare entrambi i tipi di dipendenza o solo l'aggregazione?


P.S.: nel caso in cui avessi sbagliato i termini vi scrivo la rappresentazione grafica delle 2 relazioni
Dipendenza: linea tratteggiata, freccia aperta
Aggregazione: linea continua, rombo vuoto come punta
 
ok, quindi nell'esempio da me postato si parla di aggregazione perché anche eliminando la Libreria il libro continua ad esistere, il dubbio rimane però, infatti nel caso della dipendenza dice:
"in code terms indicates that a class uses another by parameter or return type."
ed in questo caso risulta quindi anche una dipendenza...

Inoltre se una classe contiene un oggetto vuol dire che in qualche modo gli viene passato, quindi deve esserci un qualche metodo che richiede quel determinato oggetto come parametro, è per questo che non capisco come possa esistere una aggregazione senza dipendenza...
 
Credo che la dipendenza si verifichi quando una classe chiede che un'altra eroghi dei servizi (e sia dunque a conoscenza della sua API), non semplicemente quando c'è il riferimento di una classe a un'altra nel sorgente.

EDIT: No, è una sciocchezza. La dipendenza si verifica anche nel tuo caso, ma si parla comunque di aggregazione, in quanto è la relazione più forte. Vedi qui: http://stackoverflow.com/questions/1152335/does-an-association-imply-a-dependency-in-uml. Se invece avessi un oggetto Libraio che, dato un Libro, effettua dei calcoli su di esso, allora sarebbe una dipendenza e basta.
 
Ultima modifica:

Discussioni simili