2012-02-02 11 views
8

In che modo una classe statica o una chiamata a una funzione statica viene presentata in Sequence Diagram? Secondo la mia comprensione, la linea di vita appartiene ad un'istanza/oggetto di una classe. This article dice che lo stereotipo metaclasse può essere utilizzato.Come presentare una chiamata di classe o di funzione statica in Sequence Diagram?

+0

[UML 2 diagrammi di sequenza:] (http://www.agilemodeling.com/artifacts/sequenceDiagram.htm) 'Osserva come le etichette degli oggetti sono sottolineate, le classi e gli attori no 'Sembra una classe statica o la chiamata a una funzione statica è rappresentata con lo stesso stereotipo fornito 1- la parte _name_ del modello _name: ClassName_ dovrebbe essere vuoto 2- Non dovrebbe essere sottolineato – bjan

+0

Non è sicuro, ma penso che alcuni strumenti, in aggiunta, utilizzino i bordi arrotondati per il rettangolo, nel caso di oggetti. – umlcat

risposta

5

Quindi, infine, è l'uso dello stereotipo per menzionare una classe/funzione statica. La sottolineatura non è più applicabile in UML 2.4.1 Aug 2011, Pagina 86 è, sotto i titoli Notazione e Opzioni presentazione

+0

(+1) Buono a sapersi.Quando si modella su una lavagna/lavagna o un notebook, la sottolineatura non è molto chiara. Lo stesso vale per la notazione in corsivo ... – umlcat

4

Penso che il tuo commento copre la maggior parte di esso:

UML 2 diagrammi di sequenza: si noti come etichette degli oggetti sono sottolineate, le classi e gli attori non sono che suona come classe statica o di chiamata a una funzione statica è rappresentato con Stereotipo identico fornito 1- la parte del nome del modello: ClassName deve essere vuoto 2- Non deve essere sottolineato.

UML non è in grado di coprire interamente questo perché la statica non è una definizione UML, ogni lingua ha lievi variazioni. Tuttavia la specifica UML per "features" [pag. 69] (attr/operazioni):

isStatic: Boolean - Specifica se questa caratteristica contraddistingue i singoli casi classificati dal classificatore (false) oppure il classificatore stesso (vero). Il valore predefinito è falso.

Si noti che si dice lo stesso classificatore. Quindi la domanda è: posso mettere un classificatore in un diagramma di sequenza, non in un'istanza? Notare anche che non è detto che il classificatore possa essere statico. La pagina 27 della stessa specifica UML non mostra isStatic nella meta class "classifier" (class). Quindi UML non fornisce una funzionalità di modello formale per le classi statiche. È possibile utilizzare stereotipi o parole chiave o il proprio profilo UML ed estendere la classe. Ma la risposta breve è fare ciò che hai già postato.

+0

[UML 2.4.1 agosto 2011] (http://www.omg.org/spec/UML/2.4.1/Superstructure/PDF), Pagina 86, sotto i titoli 'Notazione' e' Opzioni di presentazione', sembra in conflitto con i miei commenti o quell'articolo di riferimento non è più valido dopo questa versione di UML 2 – bjan

8

"In caso di dubbio, utilizzare i commenti o gli stereotipi ..."

Sequence Diagram:

....................................................... 
....+-------------+...........+-------------------+.... 
....| <<class>> |...........|  <<class>>  |.... 
....|  Cat  |...........| FastFoodTerminal |.... 
....+------+------+...........+---------+---------+.... 
...........|............................|.............. 
...........|..........<<static>>........|.............. 
...........|...........TurnOn().........|.............. 
...........+--------------------------->+---+.......... 
...........|............................|...|.......... 
...........+<---------------------------+<--+.......... 
...........|............................|.............. 
...........|.......Answer...=...........|.............. 
...........|..DoYouHaveCheeseBurger()...|.............. 
...........+--------------------------->+---+.......... 
...........|............................|...|.......... 
...........+<---------------------------+<--+.......... 
...........|............................|.............. 
....................................................... 

Class Diagram:

........................................................... 
....+-------------------------------------------------+.... 
....|     <<class>>     |.... 
....|    FastFoodTerminal     |.... 
....+-------------------------------------------------+.... 
....| [+] void: FastFoodTerminal(); <<constructor>> |.... 
....| [#] int: ObtainMoneyDifference();    |.... 
....| [+] void: ReceiveMoney();      |.... 
....| [+] void: ReturnChange();      |.... 
....| [+] FastFoodTerminal: TurnOn(); <<static>>  |.... 
....+-------------------------------------------------+.... 
........................................................... 

In questo esempio, il "sfioramento Attiva() "è un metodo statico che restituisce, un'istanza (oggetto) della classe" FastFoodTerminal ".

+0

Cosa hai usato per fare quel diagramma ascii? –

+3

@Petur Uso http://asciiflow.com/ per diagrammi di classe, successivamente li modifico con un editor di testo. – umlcat

Problemi correlati