Domande sui diagrammi delle classi UML?

Ciao Ho alcune domande sui diagrammi delle classi UML ogni aiuto sarà apprezzato

1) Come mostri i puntatori negli attributi?

2) Che cos’è la molteplicità?

3) Quale direzione dovrebbero essere le frecce di composizione?

4) Come si mettono le enumerazioni?

Secondo l’attuale standard UML 2.4.1 e il successivo 2.5 (differisce quasi solo nella documentazione più semplice):

  • Puntatori / riferimenti dovrebbero essere mostrati come una freccia con un piccolo cerchio nero (punto) all’estremità di riferimento. Se non è un puntatore che l’object ha come attributo, ma è contato in qualche modo, ci sarà una freccia senza il punto. Se la linea deve avere frecce su entrambi i lati, puoi omettere entrambe le frecce. Ma non punti! Se la freccia è solo su un lato e tu sai, non ci dovrebbe essere nessuno dall’altro lato, questa estremità vuota dovrebbe essere firmata da una croce

Prima di altre cose dovresti capire

cos’è l’associazione

  • Un’associazione da A a B è mostrata come una linea continua tra A e B. Può rappresentare una struttura che collega class / istanze di A con la class / istanze di B. La struttura può essere di qualsiasi tipo e appartenere ovunque . Tutte le informazioni, scritte sulla linea, descrivono questa struttura.
  • Se ci sono due strutture, una struttura, che collega un’istanza di A con l’istanza (i) di B e un’altra struttura che collega l’istanza di B con l’istanza (e) di A, puoi mostrarle entrambe in UN’associazione. Quindi, le informazioni scritte sulla sua fine B descrivono la prima struttura (b-> a) e le informazioni sull’altra estremità descrivono l’altra struttura.
  • Se avrai più di una struttura che guida da A a B, devi disegnare due diverse associazioni.
  • Se una struttura di unione è complessa, è ansible rappresentarla come una class di associazione. Lì puoi definire più dettagli.
  • Una struttura di unione può colbind più di due classi, quindi verrà mostrata come un grande diamante con rami solidi a queste classi. È ancora un’associazione! Attenzione: queste due associazioni più complesse sono mal supportate dagli strumenti esistenti. Puoi facilmente creare qualcosa di assolutamente insensato con loro. E sono difficili. Usare con attenzione.

Esempio di diagramma di classe


  • Molteplicità.
    • Caso di una struttura: molteplicità su entrambe le estremità dell’associazione mostra, quante istanze di questa class adiacente controlla la struttura.
    • Caso di due strutture: molteplicità sull’estremità A dell’associazione AB mostra, quante istanze di A sono controllate dalla struttura che guida da B a A. Ha 0 o 1 sul lato B. Il numero sull’altro lato appartiene a un’altra struttura.
  • Se non è abbastanza, puoi utilizzare due associazioni per queste due strutture.

Sì, non è facile, mi dispiace. Ma è MOLTO più facile, che il testo dello standard UML “più semplice” 2.5. Una spiegazione semplice è falsa, usandola si incontrano rapidamente problemi in qualsiasi compito reale.

  • Composizione e su di esso.

    • C’è solo una composizione “freccia”, come la chiamavi, si chiama black o full diamond. È dalla parte del contenitore , non da un genitore , naturalmente. L’altro, diamante vuoto, è chiamato “aggregazione condivisa” o, in breve, “condiviso”. Non è strettamente definito e puoi usarlo per creare il tuo standard. Certo, sarebbe sciocco metterlo sul lato dell’object dell’associazione articolo-contenitore. Ma potrebbe facilmente essere ai due estremi dell’associazione.
    • Perché la composizione diamante può essere solo su un lato? Poiché la composizione significa che gli elementi esistono SOLO mentre esistono riferimenti ad essi dal contenitore (o dal contenitore stesso). Certo, non potrebbe funzionare per entrambe le parti.
    • Spesso puoi vedere il nome “aggregazione” per “aggregazione condivisa”. È un errore MALE. Perché, secondo lo standard, la composition , shared e persino none , tutte e tre sono aggregazioni. Qualcuno mescola i termini genitore e figlio.
  • Semplici vecchi Enum sono facili – c’è una sorta di blocco di class per loro, @MagicMan lo ha messo correttamente. Ma sono già obsoleti. E se usi un tipo di Enumerazione di Java più elaborato (sicuramente, anche in altri linguaggi lo sono), e imposti campi o funzioni diversi per oggetti diversi, devi usare i blocchi di class per loro, solo dovrai creare il tuo stereotipo ( se il tuo strumento non ne ha già uno) e imposta il blocco di class appropriato su di esso.

Modificare:

Quindi, il puntatore semplice è una freccia con punto. Ma se ne esiste un’altra, la navigazione indietro, non ci saranno NESSUNA frecce e solo punti (s).

Nell’istanza C ++ A può avere l’istanza B non tramite puntatore, ma direttamente. Non esiste alcun segno UML speciale, deve essere mostrato allo stesso modo del normale attributo pointer.

1) Il modo comune è così per un’associazione unidirezionale (puntatore): ----> , ma apparentemente il modo corretto è di aggiungere un punto alla fine per indicare il lato di riferimento: ---->*

2) Multiplicty è l’intervallo che può essere rappresentato come questo (0..1) , cioè un puntatore può essere nullo in modo che zero specifichi che potrebbe avere da 0 a 1 oggetti target

3) Le frecce di composizione appartengono al lato dell’object contenente: Container<>-----Child

4) Li ho visti rappresentati in questo modo:

 _______________________ | <> | | Colors | |_____________________| | Red | | Green | | Blue | | ... | |_____________________| 

Un buon cheat UML: Link