2012-06-26 25 views

Respuesta

11

Para mostrar un método estático, debe subrayar el nombre del método estático; eche un vistazo a here para obtener información más detallada.

En cuanto a la navegación de esa relación; class B depende de la existencia de class A. Podemos decir que la clase B tiene una "dependencia de uso" en la clase A

class B ----uses----> class A 

Espero que esto ayude.

+0

¿Está seguro de que es una relación de dependencia y no una asociación? – Nicolas

+0

Una asociación es una relación entre dos (o más) tipos que están vinculados por una instancia (s). Entonces, para que ClassB tenga una asociación con ClassA, necesita tener una referencia, tal vez a través de una propiedad o campo. Pero como ese no es el caso en su ejemplo, diría que tiene una dependencia y no una asociación. Creo que la definición en este [enlace] (http://www.uml-diagrams.org/dependency.html) muestra que tienes una dependencia. – RobertMS

6

@RobertMS es correcto.

Otra alternativa, su utilizar estereotipos:

.............................................................. 
....+----------------------------------------------------+.... 
....|    StringUtilityClass     |.... 
....+----------------------------------------------------+.... 
....| [+] void: lowerCase()    <<non virtual>> |.... 
....| [+] void: upperCase()    <<non virtual>> |.... 
....| [+] String: toString()    <<override>> |.... 
....+----------------------------------------------------+.... 
....| [+] String: LowerCaseCopy(String Value) <<static>> |.... 
....| [+] String: UpperCaseCopy(String Value) <<static>> |.... 
....| [+] String: ReverseCopy(String Value) <<static>> |.... 
....+----------------------------------------------------+.... 
.............................................................. 

Nota algunos lenguajes de programación mejores prácticas, especialmente aquellos con la sintaxis entre mayúsculas y minúsculas C, capitalizar funciones estáticas, y dejar en camello minúsculas del resto de funciones.

Saludos.

3

Para mostrar los métodos estáticos y atributos que les subrayado en un diagrama de clases UML: ve UML Distilled p.66 o sección 7.3.19 (funciones) de la UML Superstructure specification:

características estáticas están subrayados.

Para mostrar la relación entre las clases B y A (donde B solo utiliza métodos estáticos en A), utiliza una dependencia, no una asociación. Las asociaciones son siempre entre casos de las clases en cada extremo, como en la sección 7.3.3 (asociación) de la especificación UML Superestructura:

Una asociación especifica una relación semántica que puede ocurrir entre instancias mecanografiadas.

Pero clase B es dependiente en clase A, como en la sección 7.3.12 de la especificación:

Una dependencia es una relación que significa que un único o un conjunto de los elementos del modelo requiere otros elementos del modelo para su especificación o implementación .

Probablemente valga la pena aclarar la naturaleza de la dependencia con un estereotipo. Usted podría utilizar un estereotipo use, pero eso es muy general y en realidad abarca las asociaciones estándar entre instancias (aunque obviamente normalmente usa asociaciones para mostrarlas explícitamente).Como dice Fowler en UML Distilled,

Muchas relaciones UML implican una dependencia. La asociación navegable de Order to Customer [en uno de sus ejemplos ...] significa que Order es dependiendo del Cliente.

Parece que no hay un estándar sobre qué estereotipo usar. He usado usesStatically para tener claro la naturaleza de la dependencia; es decir

B --usesStatically--> A

(Si, alternativamente, clase B tenía una instancia de A como un campo estático, me gustaría usar algo como B--containsStatically--> A si estoy representando B explícitamente en el diagrama de clases; de lo contrario sólo tiene un atributo estático subrayado de tipo A en B.)

+0

Pensé que valía la pena ampliar la respuesta de @ RobertMS, pero lo he puesto como una respuesta wiki de la comunidad, ya que 'solo' explica algunos matices de su respuesta (y el enlace a más referencias 'oficiales'). –