Explicación de las flechas UML


244

Recientemente estuve estudiando UML y dibujando diagramas simples con flechas simples entre clases, pero sé que no es suficiente. Hay muchas otras flechas: generalización, realización, etc., que tienen significado para el lector de diagramas.

¿Hay un buen recurso que podría explicar cada flecha (ordinaria, simple, punteada, llena de diamantes, diamante)?

Sería lo mejor si tuviera algunos ejemplos de código para ellos.


44
Recomiendo encarecidamente considerar esto: dzone.com/refcardz/getting-started-uml
trinity

Respuestas:


475

Aquí hay algunas explicaciones de los documentos de Visual Studio 2015:

Diagramas de clase UML: Referencia : https://msdn.microsoft.com/library/dd409437%28VS.140%29.aspx

Diagrama de clases UML

5 : Asociación : Una relación entre los miembros de dos clasificadores.

5a : Agregación : una asociación que representa una relación de propiedad compartida. La propiedad de Agregación de la función de propietario se establece en Compartida .

5b : Composición : Una asociación que representa una relación de parte completa. La propiedad de agregación de la función de propietario se establece en Compuesto .

9 : Generalización : el clasificador específico hereda parte de su definición del clasificador general. El clasificador general está en el extremo de la flecha del conector. Los atributos, asociaciones y operaciones son heredados por el clasificador específico. Use la herramienta Herencia para crear una generalización entre dos clasificadores.

Diagrama del paquete

13 : Importar : Una relación entre paquetes, que indica que un paquete incluye todas las definiciones de otro.

14 : Dependencia : la definición o implementación del clasificador dependiente puede cambiar si se cambia el clasificador en el extremo de la punta de flecha.

Relación de realización

15 : Realización : la clase implementa las operaciones y los atributos definidos por la interfaz. Use la herramienta Herencia para crear una realización entre una clase y una interfaz.

16 : Realización : una presentación alternativa de la misma relación. La etiqueta en el símbolo de la piruleta identifica la interfaz.

Diagramas de clase UML: Pautas : http://msdn.microsoft.com/library/dd409416%28VS.140%29.aspx

Propiedades de una asociación

Agregación : aparece como una forma de diamante en un extremo del conector. Puede usarlo para indicar que las instancias en el rol de agregación son propias o contienen instancias del otro.

Es navegable : si es verdadero para un solo rol, aparece una flecha en la dirección navegable. Puede usar esto para indicar la navegabilidad de enlaces y relaciones de bases de datos en el software.


Generalización : generalización significa que el tipo especializado o derivado hereda atributos, operaciones y asociaciones del tipo general o base. El tipo general aparece en el extremo de la punta de flecha de la relación.

Realización : Realización significa que una clase implementa los atributos y operaciones especificados por la interfaz. La interfaz está en el extremo de la flecha del conector.

Avísame si tienes más preguntas.


1
Buena referencia, pero para mí un Menú -> MenuItem tiene la misma relación que un Pedido -> OrderItem, por lo que ambos son Composiciones.
Ignacio Soler García

44
Eso solo significa que el elemento del pedido pertenece a un pedido y no se puede mover, mientras que el elemento del menú puede ser ajustable; el usuario puede cambiar la posición del elemento del menú. Es la solución elegida. Por qué no?
Gangnus

@Gangnus, gracias. Esa explicación aclaró la diferencia que me ha eludido durante mucho tiempo.
JMD

1
@JMD, los artículos de pedido también se pueden mover. La agregación compuesta se define en la especificación UML de la siguiente manera: La agregación compuesta es una forma sólida de agregación que requiere que un objeto parcial se incluya en un objeto compuesto como máximo a la vez. Si se elimina un objeto compuesto, se eliminan todas sus instancias parciales que son objetos. Un objeto parcial puede (cuando se permita) eliminarse de un objeto compuesto antes de que se elimine el objeto compuesto y, por lo tanto, no se puede eliminar como parte del objeto compuesto.
www.admiraalit.nl

2
@aGer Gracias, he actualizado el tema y los enlaces de imágenes.
Esther Fan - MSFT

153

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Creo que estas fotos son entendibles.


¿No se superponen algunos de estos conceptos? A depende de B. A tiene acceso a B. ¿No es una asociación siempre una dependencia y una dependencia siempre es una asociación?
EresDev

En el diagrama, la Realización se repite dos veces pero con una imagen diferente. Por favor, ¿puedes explicar la diferencia?
variable


13

Mi "hoja de trucos" favorita de UML es UML Distilled , de Martin Fowler. Es el único de sus libros que he leído que recomiendo.


1
Interesante, me gustó bastante la refactorización. ¿Es sobre eso que tienes opiniones?
djna

Sí, lo encontré todo un poco obvio, y no me gustó la concentración en Java. Además, por favor, no tome mi respuesta como diciendo que sus otros libros son basura.

El libro de Fowler también tiene una hoja de trucos en el interior de las portadas. Muy bueno para comenzar, especialmente porque su próxima pregunta será en qué dirección van las flechas.
Ted Johnson

12
¡185 páginas parecen un poco excesivas para una "hoja de trucos"!
cdyson37


9

Para una referencia rápida junto con ejemplos claros y concisos, la referencia rápida UML de Allen Holub es excelente:

http://www.holub.com/goodies/uml/

(Hay bastantes ejemplos específicos de flechas y punteros en la primera columna de una tabla, con descripciones en la segunda columna).


Me gustó su primer ejemplo y esperaba poder ir incrementalmente en la misma línea con lo básico, pero es una buena lectura
Killjoy

6

Una descripción muy fácil de entender es la documentación de yuml , con ejemplos de diagramas de clases, casos de uso y actividades.


Probablemente el mejor UML para idiotas mientras baja por esta lista; nota: este sitio también le permite dibujar sus propios UML de forma gratuita (5).
killjoy

5

La respuesta aceptada se dice: faltan algunas explicaciones. Por ejemplo, ¿cuál es la diferencia entre una asociación unidireccional y una asociación bidireccional? En el ejemplo proporcionado, tanto hacer existir. (Ambos '5's en las flechas)

Si busca una respuesta más completa y tiene más tiempo, aquí hay una explicación detallada.



0

Las agregaciones y composiciones son un poco confusas. Sin embargo, piense que las composiciones son una versión más fuerte de la agregación. Qué significa eso? Tomemos un ejemplo: (Agregación) 1. Tome un aula y estudiantes: en este caso, tratamos de analizar la relación entre ellos. Un aula tiene una relación con los estudiantes. Eso significa que el aula se compone de uno o varios estudiantes. Incluso si eliminamos la clase Classroom, la clase Students no necesita destruir, lo que significa que podemos usar la clase Student independientemente.

(Composición) 2. Eche un vistazo a las páginas y Clase de libro. En este caso, páginas es un libro, lo que significa que las colecciones de páginas hacen el libro. Si eliminamos la clase de libro, se destruirá toda la clase de página. Eso significa que no podemos usar la clase de la página de forma independiente.

Si aún no está claro sobre este tema, mire este breve video maravilloso, que ha explicado la agregación más claramente.

https://www.youtube.com/watch?v=d5ecYmyFZW0

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.