2011-09-15 19 views
12

Sto progettando uno schema di classe e ho avuto un dubbio:si consiglia di creare associazioni alle classi enum nel diagramma di classe uml?

Ho una classe che ha diversi attributi che si riferiscono a java enums e altre classi che verranno mappate come cataloghi db.

Ad esempio, esiste una classe denominata BankAccount che ha un attributo chiamato tipo: BankAccountType (enum) e altro che è bank: Bank (classe catalogo).

È consigliabile contrassegnare l'associazione tra classi o può essere ovviato? Se sì, dovrebbero essere aggregati (un conto bancario ha un bankAccountType) o semplicemente associati?

Grazie in anticipo.

risposta

22

Indipendentemente dal fatto che il tipo di attributo è un enum, ci sono due modi per rappresentare gli attributi in UML: come attributi propri, e le associazioni dirette.

The two ways of representing attributes in UML

I due stili di dichiarazioni di attributo sono semanticamente equivalenti: significano esattamente la stessa cosa. In altre parole, quale sceglierai si riduce a una questione di stile.

L'utilizzo degli attributi rende più semplice un diagramma e in alcuni strumenti è necessario affinché l'attributo sia visibile nella vista ad albero del modello.

Utilizzare le associazioni dirette significa che è necessario includere il tipo di obiettivo (l'enum) nel diagramma, il che significa che è possibile visualizzare i valori letterali. Naturalmente, puoi includerlo anche nell'altro caso, come ho già fatto con An_Enum sopra.

Normalmente non utilizzo aggregazioni o composizioni per la modellazione a livello di codice; Ritengo che siano più adatti per descrivere relazioni più astratte tra classi (come in un modello di informazioni) e concettualmente non corrispondono realmente a nulla nel codice sorgente. Gli attributi, eventualmente integrati da relazioni di "dipendenza" o "uso", sono classi che vengono usate come tipi di variabili locali o i cui metodi sono chiamati.

+0

Come funzionano le molteplicità in questo caso? – FateNuller

1

Un'associazione semplice farebbe il trucco. L'aggregazione mostra che il ciclo di vita della classe contenuta è legato alla classe contenente.

Da wikipedia: L'aggregazione può verificarsi quando una classe è una raccolta o un contenitore di altre classi, ma dove le classi contenute non hanno una forte dipendenza dal ciclo di vita sul contenitore, in sostanza, se il contenitore viene distrutto, il suo contenuto non sono. http://en.wikipedia.org/wiki/Class_diagram#Aggregation

Inoltre, ha trovato questo per voi: UML class diagram enum

Problemi correlati