Devo mostrare la classe di associazione nel mio diagramma di classe?

3

Ad esempio, ho una relazione come questa: utente (0 .. *) acquista prodotto (0 .. *)

Quale risultato in una classe di associazione, chiamata vendita , che ha l'ID utente e l'ID prodotto. Solo per questioni simili, immagina che questa classe vendita non abbia altri attributi, ad eccezione di questi ID.

La mia domanda è: dovrei mostrare questa classe sale nel mio diagramma di classe? O posso semplicemente lasciarlo e mostrare solo la relazione.

Anche se non l'ho mai visto prima, lo chiedo perché qualcuno mi ha detto che non è necessario mostrare la classe di associazione se non ha attributi di relazione.

    
posta imran.razak 20.05.2017 - 13:13
fonte

2 risposte

4

Secondo le specifiche di UML 2.5:

11.5.3.2: An AssociationClass is a declaration of an Association that has a set of Features of its own.

Ciò significa che un'associazione many-to-many senza caratteristiche proprie non è una classe di associazione . Quindi non dovrebbe essere rappresentato come una classe di associazione sul diagramma.

Il fatto che in un database sia implementato come una "relazione" (nel senso RDBMS, cioè una tabella) non cambia il modo in cui il modello dovrebbe essere rappresentato: questo è un dettaglio di implementazione.

Potresti avere un evento Associazione N-a (che associa più di 2 classi). Sarebbe rappresentato con un diamante come connettore N-ary, ma se non ha un insieme di caratteristiche proprie, non sarebbe comunque considerato come una classe di associazione.

Al contrario, se esiste un insieme di funzionalità, allora è una classe di associazione, e quindi dovrebbe essere rappresentata nel diagramma:

11.5.4. An AssociationClass is shown as a Class symbol attached to the Association path by a dashed line.

    
risposta data 20.05.2017 - 14:07
fonte
2

Questo dipende dallo scopo del tuo diagramma UML:

Stai modellando, illustrando o analizzando il dominio problematico ? Quindi non inventare concetti extra. Mostra solo le relazioni rilevanti. L'utilizzo di una relazione n: m come suggerito è probabilmente il più chiaro.

Stai creando un progetto concreto o stai documentando codice esistente? L'introduzione di un concetto di Sale è una decisione progettuale importante che dovrebbe essere inclusa nel diagramma. Classi semplici senza proprietà aggiuntive non sono un problema: le classi semplici sono pulite. Mostrare una relazione diretta quando hai implementato quella relazione con una classe potrebbe essere fuorviante, ma ciò dipende dal contesto.

Per il caso speciale di un database relazionale , di solito non mostro la classe di associazione nella maggior parte dei casi. Dalla relazione n: m risulta chiaro che questa relazione verrà implementata con una tabella separata, assumendo un database sufficientemente normalizzato. Ma se vuoi documentare le relazioni delle tabelle esistenti, mostrare una classe per tabella includendo una classe per la Sale sarebbe l'approccio più chiaro.

    
risposta data 20.05.2017 - 13:34
fonte

Leggi altre domande sui tag