Che cosa significa la freccia in un diagramma di classe?

7

Ho bisogno di aiuto per cercare di capire quale sia il significato della freccia in un diagramma di classe UML, più specificamente in questo diagramma composito. Qual è la differenza tra la linea semplice (da una classe a un'altra) e la freccia (non la freccia ereditaria, mi riferisco a quella nera)?

    
posta John Smith 08.10.2012 - 21:43
fonte

2 risposte

13

Per discutere meglio l'immagine, ho annotato la tua immagine con alcuni numeri. Spero che questo mi aiuterà a essere più chiaro nella mia scrittura.

Cisonoveramentetretipidilineeusatequi:associazione(1),composizione(4->2)edereditarietà(3).

Unalineacontinuachecollegadueclassi,adesempiotraClienteBookComponentèsemplicementeunarelazionediassociazione.Vienespessousatoperindicarecheunaclasseconosce(forsecomericevecomeargomentoperunmetodo)ohaun'altraclasse(forsecomevariabilediistanza).Senzadecorazionioconunafrecciasuentrambeleestremità,larelazioneèbidirezionale:ledueclassicondividonolarelazioneesiconosconol'unaconl'altra.Inalcunicasi,comelalinea1nellafigura,larelazioneèdirezionale.LaclasseClientconosceBookComponent,mailcontrariononèveroinquantoBookComponentnonhaoconosceClient.Notachecisonoanchealtreannotazionichepossonoappariresullerelazionidiassociazione,comeruolidimolteplicitàoclasse.

LarigasuccessivaèlalineachecollegaBookCompositeaBookComponent.Èun'associazione,moltosimileallalineatraClienteBookComponent.Tuttavia,leannotazionineipuntiI2e4aggiungonoulterioriinformazionisullarelazione.Lineaalpunto1,lafrecciaalpunto2indicalastessacosa-BookCompositeèaconoscenzadelleistanzeBookComponent,manonviceversa(unarelazionedirezionale).L'annotazionealpunto4indicaunarelazionediaggregazione-BookCompositeèuninsiemediBookComponent.Tuttavia,nonèunarelazionestrong(comelastrongrelazionedicomposizione),quindil'aggregazioneindicacheunBookComponentpuòindicareinluoghialdifuoridiBookComposite(nonènecessariounBookCompositeperavereunBookComponent).

Qualcosadanotareèchelafrecciausatapermostrareleassociazionidirezionalinonèingenereunafreccianerasolidacomemostratoinquestaimmagine.Disolitolavedocomeunafrecciaapertacheassomigliapiùavdiquantomostratonell'immagine.

Infine,ilpuntoetichettato3èlarelazionediereditarietàchehaimenzionatonellatuadomanda.

SetiinteressasapernedipiùsullamodellazioneUML,ticonsigliodiacquistare UML Distilled . È un buon libro di Martin Fowler che tratta classe, sequenza, oggetto, pacchetto, implementazione, caso d'uso, macchina a stati, attività, comunicazione, struttura composita, componente, collaborazione, panoramica di interazione e diagrammi di temporizzazione.

    
risposta data 08.10.2012 - 23:20
fonte
2

La tua immagine mostra diverse relazioni.

La relazione tra le classi Client e BookComponent è una relazione di contenimento. Cioè il client contiene un'istanza di BookComponent.

BookComposite e BookComponent hanno due relazioni: la freccia aperta è una relazione di generalizzazione (i.e BookComponent generalizza BookComposite o in altri termini BookComposite è specializzata / deriva da BookComponent). L'arrohead chiuso con un diamante alla coda è un Aggregation. Cioè, BookComposite contiene una raccolta di BookComponent. Anche il fatto che il diamante non sia pieno è significativo. Significa che il ciclo di vita dei BookComponents contenuti non è legato alla vita del BookComposite che lo contiene. Se fosse riempito invece di Aggregazione, sarebbe una composizione e quando BookComposite è stato distrutto, lo sarebbero anche i BookComponents

    
risposta data 08.10.2012 - 22:41
fonte

Leggi altre domande sui tag