2015-01-25 29 views
9

In un diagramma di classe UML, se una classe ha 5 attributi privati ​​che devono essere mutabili e leggibili, l'UML diventa piuttosto brutto con 10 metodi get/set anche senza alcun della classe funzionalità interessante:Collegamento per denotare o implicare getter e setter in diagrammi di classe UML

Bloated

Bruttezza a parte, mi sento come UML dovrebbe concentrarsi sulla classe funzionalità più interessante. Ho ragione?

C'è qualche scorciatoia standard per denotare o implicare getter e setter per attributi privati?

+1

Se non si desidera modellare la funzionalità non interessante, è possibile eliminare completamente i getter/setter e modellare le proprietà come attributi semplici. Riempi solo il compartimento degli attributi superiori e lascia vuoto lo spazio operativo. In alcune lingue (ad es. 'C#', 'Delphi') i getter/setter sono comunque quasi invisibili al programmatore. Sento che non dovresti trasferire alcuna responsabilità a _UML_ ("_Object Management Group (OMG) è un consorzio di standard tecnologici senza scopo di lucro ..._") e concentrarti sulla responsabilità al tuo fianco della tastiera. Ho ragione? – xmojmr

risposta

9

Si è corretto: non è necessario includere il (rumore di) firme "standard" di setter e getter standard in un modello di classe. Sfortunatamente, UML non definisce una notazione standard per implicare getter e setter per attributi privati. Quindi, dovresti usare la tua convenzione. Ad esempio, potresti includere una spiegazione generale (che tutte le proprietà private hanno getter e setter, mentre le proprietà private di sola lettura hanno solo getter) come UML Commento, mostrato come un rettangolo con l'angolo in alto a destra (chiamato anche "Simbolo della nota") allegato al diagramma.

Se si preferisce rendere più esplicita la convenzione getter/setter per le proprietà interessate, creare i propri stereotipi (ad esempio «get/set» e «get») da utilizzare per la classificazione di queste proprietà private, come mostrato nel seguente diagramma:

Class with get/set attribute stereotypes

sto anche usando questo per descrivere/documentare i getter e setter impliciti di ECMAScript 6 classi.

+0

bella idea, che dovrebbe far parte di uml 3.0 (?) :) –

2

UML non definisce le operazioni di settaggio getter. I metodi Get e Set vengono utilizzati nei linguaggi di programmazione per realizzare la definizione degli attributi. Ad esempio, l'attributo readonly avrà il metodo getter solo nel codice di implementazione. se l'attributo è definito come calcolato, il metodo getter viene solitamente utilizzato nel codice per implementare il calcolo e il setter può essere escluso, poiché gli attributi calcolati sono di solito in sola lettura. La visibilità dell'attributo viene solitamente spostata in visibilità anche nei metodi getter e setter nel codice. Non ha senso definire i metodi geter e setter nel codice per gli attributi definiti read read e non calcolati.