Diciamo che A, B sono classi quindi cosa significa questo diagramma UML?
(1) A contiene B
o
(2) B contiene A
Sono confuso su quale direzione regga l'aggregazione.
In entrambi i casi la classe più vicina al diamante è quella che contiene la classe più lontana da essa. La relazione indica o un singolo oggetto contenuto o una raccolta di essi. Di solito è indicato graficamente con una legenda simile a quella usata nei diagrammi di database ERM: "1..1", "1..m", ecc.
Il diamante pieno indica la composizione. Gli oggetti contenuti hanno poco o nessun uso al di fuori del contenitore e forse il contenitore è incompleto senza di essi (o è in uno stato non valido / non stabile senza di essi). Ad esempio, ogni iPhone ha un pannello touch screen (la cosa trasparente con un cavo piatto collegato al lato). Il pannello touch screen separato dall'iPhone non è molto utile. Non vedi le persone che portano in tasca i pannelli touch screen staccati con il cavo piatto appeso fuori.
Il diamante vuoto significa aggregazione. L'oggetto contenuto può esistere separatelly dal contenitore ed è utile al di fuori del contenitore. Il contenitore può vivere senza l'oggetto contenuto. Un portachiavi è un oggetto composito con un sacco di tasti ad esso collegati, i tasti, i puntatori laser e gli apriscatole possono funzionare da soli senza essere collegati a un portachiavi e né il portachiavi o lo strumento (chiave, ecc.) Rimane in un unstable stato. È possibile aggiungere e rimuovere questi elementi al portachiavi ma possono esistere da soli come strumenti funzionali. Il portachiavi di per sé può essere epmty e non si può dire che sia rotto a causa di ciò.
Vedi anche questa risposta: link
Questo è il genere di aiuto per gli esempi.
Abbiamoun'aggregazionedianatresullostagno.Almenoquandoèstagionedianatra.Leanatrenoncontengonolostagno.Bene,nebevono,maquestaèunarelazionediversa.Adifferenzadellarelazionetraautoecarburatore,lostagnononècompostodaanatre.Lostagnononsmettediessereunostagnoseleanatresenevanno.
Lafrecciachedescriveladirezionedellarelazionediassociazionenonènemmenorichiestaperrappresentarel'aggregazione.
AquestopuntoUMLèdisponibileinmolteversionielepersonenonsonosemprefedelialleregoleformali,quindideviquasitrattareogni
FWIW Aggiungerò la definizione dalle specifiche UML a pag. 110:
none Indicates that the Property has no aggregation semantics. shared
shared Indicates that the Property has shared aggregation semantics. Precise semantics of shared aggregation varies by application area and modeler.
composite Indicates that the Property is aggregated compositely, i.e., the composite object has responsibility for the existence and storage of the composed objects (see the definition of parts in 11.2.3).
Specialmente la spiegazione per condivisa (il tuo esempio con il diamante vuoto) è notevole perché dice "non ha un significato specifico". Dovresti quindi evitarlo semplicemente se non hai buoni motivi per usarlo nel tuo dominio. In quest'ultimo caso hai bisogno di una definizione esplicita della sua semantica.
Leggi altre domande sui tag object-oriented uml