2016-03-23 25 views
5

Qual è una buona pratica per modellare le proprietà Python in un diagramma di classe UML? Le proprietà stesse sono oggetti di classe, i loro getter e setter sono funzioni di classe. Dall'esterno della classe sembrano attributi di istanza. Quindi, come suggeriresti di presentarlo nel mio diagramma di classe? GrazieCome modellare le proprietà Python nel diagramma UML

+0

Benvenuti in StackOverflow, @Robert_Jordan. Se hai trovato una risposta alla tua domanda , ti preghiamo di prendere in considerazione [accettando it] (http://meta.stackexchange.com/q/5234/179419) (facendo clic sul segno di spunta ), e prendere in considerazione l'aumento del voto (facendo clic sulla freccia su). Accettare una risposta indica alla comunità più ampia che hai trovato una soluzione, che ti dà alcuni punti reputazione e che dà alcuni punti reputazione alla persona che ha risposto alla tua domanda. Se non hai trovato una risposta soddisfacente alla tua domanda, per favore, lascia un commento. –

risposta

0

Dipende molto dal tipo di modello utilizzato dallo strumento UML. In alcuni strumenti c'è una finestra delle proprietà lungo le caselle comuni Attributi e Metodi. La notazione UML afferma che gli attributi sono scritti nella parte inferiore del camelcase, è possibile scrivere le proprietà nella parte superiore del camelcase. Essi differirebbero anche visivamente a causa del modificatore di accesso pubblico (+).

Avete la necessità di specificare diversi modificatori di accesso per getter e setter? Non sono sicuro di come lo farei. Tieni presente il livello di astrazione necessario.

Ricordare che UML è principalmente un insieme di standard definiti. Se lo standard ha bisogno di un piccolo ritocco per soddisfare le tue esigenze, non esitare. L'importante è che il team e gli stakeholder capiscano la sintassi.

+0

Beh, nessun modificatore di accesso diverso, tutto pubblico, se possibile in Python. Andrò con il tuo ultimo punto ... grazie! –

+0

In UML, un attributo è la stessa cosa di una proprietà, il che rende la terza frase in conflitto con se stessa.Puoi chiarire cosa intendi? Inoltre, UML non afferma che gli attributi sono scritti in un caso di cammello inferiore, o qualsiasi altra cosa su come scrivere i nomi, se non per un set di caratteri legali. –

+0

Sei corretto sull'attributo UML vs proprietà Jim L. Tuttavia ho visto un paio di strumenti in cui è possibile definire una casella per ciascuno, in quanto non è definito in un modello. Dato Umlet o un altro strumento di disegno gratuito, è possibile creare riquadri per entrambi gli attributi (campi in questo caso) e proprietà (come quelli trovati in py3, js eC# ecc.). Quindi spetta a te stesso definire ciò che è necessario per produrre una comunicazione chiara. – LuqJensen

1

La buona pratica è ciò che funziona sul tuo progetto.

Per modellare le proprietà di Python è possibile aggiungere operazioni getter e setter stereotipate che indicano il loro utilizzo. Il collegamento tra l'attributo e l'operazione viene solitamente eseguito tramite una convenzione di denominazione. Alcuni strumenti offrono un collegamento interno per creare proprietà di attributi con getter e setter.

Se non si utilizza la generazione del codice, è inoltre possibile stereotipare l'attributo per indicare il loro utilizzo come proprietà (in tal modo comunicare al codificatore di utilizzare @property) e lasciare le operazioni. Se si utilizza il proprio generatore di codice, funzionerebbe in modo analogo. I generatori di codice incorporato nello strumento potrebbero necessitare delle operazioni aggiuntive come descritto sopra.

2

Si consiglia di leggere UML Best Practice: Attribute or Association da un altro utente Overflow di stack denominato Geert Bellekens. Si afferma semplicemente:

Utilizzare associazioni per classi e attributi per DataTypes.

Si dovrebbero scrivere gli attributi Python digitati da non-datatypes (che hanno identità) all'estremità delle associazioni UML che si connettono a quelle classi UML. Dovresti scrivere gli attributi Python digitati da semplici tipi di dati (che non hanno altra identità oltre al loro valore) nella casella degli attributi della classe UML.

Gli accessori e i mutatori sono in gran parte solo rumore. Un compilatore di modelli o IDE può generare quelli per te.