Ejemplos de diagramas de clases UML
Dos dominios modelados en serio, con un motivo para cada línea: una biblioteca que necesita herencia y una cesta que necesita composición.
6 min de lecturaUML 2.5.15 de 35
La respuesta corta
- Dos dominios cubren todos los tipos de relación que vas a dibujar: una biblioteca que necesita herencia y una cesta que necesita composición.
- Un diagrama es una vista de un modelo, no el modelo. Una vista que contiene todas las clases no responde a nada.
- De cinco a doce clases. Por encima de doce las relaciones se cruzan y la atención se va en seguir líneas en vez de en el dominio.
- Dibuja las clases de las que trata la pregunta y deja las otras doscientas en el modelo, donde una herramienta seguirá encontrándolas.
01Una biblioteca, donde la herencia se gana su sitio#
El diagrama de arriba merece leerse relación por relación. Book y DVD generalizan LibraryItem, que se dibuja como un triángulo hueco apuntando al padre, y la razón para dibujarlo así en vez de como dos clases sin relación con atributos duplicados es la asociación de debajo. Loan apunta a exactamente un LibraryItem, y como apunta al padre abstracto, puede prestar cualquiera de los subtipos sin saber cuál.
Esa es toda la prueba de la herencia en un modelo de dominio: no "¿estas dos cosas se parecen?", sino ¿hay en algún punto del modelo algo que quiera sostener una u otra sin importarle cuál? Si no lo hay, dos clases separadas son la respuesta más pequeña y más honesta.
Fíjate en las multiplicidades de la asociación Member-Loan: 1 a 0..*. Un socio sin préstamos es un socio; un préstamo sin socio es un fallo. Esa asimetría es un hecho real del dominio y está puesta en la línea en vez de dejarse a un comentario. El artículo del diagrama de clases cubre cómo se dibuja cada uno de esos símbolos.
02Una cesta, donde la composición se gana su sitio#
Este no contiene herencia ninguna, y de eso se trata al mostrarlo junto a la biblioteca. Lo que tiene en su lugar es una composición y una interfaz, y cada una está ahí por una razón para la que el otro diagrama no tenía uso.
El rombo relleno entre Basket y BasketLine es una afirmación: borra la cesta y las líneas se van con ella, porque una línea de cesta no significa nada por su cuenta. Compáralo con la asociación simple de BasketLine a Product, donde el producto sobrevive claramente a la línea: la misma forma de relación, dos vidas distintas, y la notación las distingue.
PricingRule es el punto de extensión. Se dibujan dos realizaciones porque una sola realización no es una abstracción, es una clase con un paso de más, y en cuanto hay dos, añadir una tercera promoción es una clase nueva y no una rama nueva en un método existente.
03Cómo leer cualquiera de los dos en treinta segundos#
Los dos diagramas premian el mismo orden de lectura, y no es de izquierda a derecha. Empieza por las multiplicidades, porque son las decisiones: dicen qué permite el sistema y son lo más difícil de cambiar después. Luego lee los rombos, que dicen qué se borra con qué. Después los triángulos, que dicen qué puede sustituir a qué. Los atributos al final, y solo los que te den dudas.
Un diagrama que sobrevive a esa lectura merece conservarse. Uno con las multiplicidades en blanco no está acabado, por muchos atributos que liste, y ese es con diferencia el estado en que más veces te encontrarás un diagrama de clases.
En una línea cada uno
- 01Dibuja herencia cuando algo del modelo sostenga el tipo padre sin importarle qué subtipo tiene.
- 02Usa composición cuando la parte se borra con el todo, y asociación simple en los demás casos.
- 03Una interfaz con una sola realización es una clase con pasos de más; dos la convierten en punto de extensión.
- 04Las multiplicidades son las decisiones del diagrama. En blanco significan que está sin acabar.
- 05De cinco a doce clases por diagrama. Una vista que lo contiene todo no responde a nada.
Siguiente: cómo dibujar uno desde cero, y la referencia de símbolos para comprobar una marca de la que no estés seguro.
04Preguntas frecuentes#
¿Cuál es un buen ejemplo de diagrama de clases UML?
Uno lo bastante pequeño para leerse de un vistazo y lo bastante completo como para discutirlo. Una biblioteca con un LibraryItem abstracto y dos subtipos muestra herencia; una cesta compuesta por sus líneas muestra composición. Entre los dos cubren cada tipo de relación que vas a dibujar.
¿Debe un diagrama de clases mostrar todas las clases?
No. Un diagrama es una vista de un modelo, no el modelo, y una vista que contiene todo no responde a nada. Dibuja las clases de las que trata la pregunta actual y deja las otras doscientas en el modelo, donde una herramienta seguirá encontrándolas.
¿Cuántas clases caben en un diagrama de clases?
Entre cinco y unas doce. Por debajo de cinco normalmente aún no se ha dicho lo suficiente para que valga la pena dibujarlo; por encima de doce las relaciones empiezan a cruzarse y el lector gasta su atención siguiendo líneas en lugar de entendiendo el dominio.
En esta serie
- 01¿Qué es UML?
- 02Símbolos UML
- 03Elegir un diagrama
- 04Diagramas de clases
- 05Ejemplos de diagramas de clases
- 06Cómo dibujar un diagrama de clases
- 07Símbolos del diagrama de clases
- 08Diagramas de secuencia
- 09Ejemplos de diagramas de secuencia
- 10Cómo dibujar un diagrama de secuencia
- 11Diagramas de casos de uso
- 12Ejemplos de casos de uso
- 13Diagramas de actividad
- 14Ejemplos de actividad
- 15Diagramas de máquina de estados
- 16Ejemplos de máquina de estados
- 17Diagramas de componentes
- 18Ejemplos de componentes
- 19Dibujar un diagrama de componentes
- 20Símbolos de componentes
- 21Diagramas de despliegue
- 22Ejemplos de despliegue
- 23Diagramas de objetos
- 24Diagramas de paquetes
- 25Diagramas de estructura compuesta
- 26Diagramas de comunicación
- 27Secuencia vs comunicación
- 28Diagramas de tiempos
- 29Diagramas de visión general de interacción
- 30Diagramas de perfil
- 31UML con IA
- 32Ejemplo de e-commerce
- 33Ejemplo bancario
- 34Ejemplo de microservicios
- 35Ejemplo de AWS
Lecturas relacionadas
Diagramas de estructura
Diagramas de estructura
Referencia de notación
Fundamentos
Fundamentos
Diagramas de comportamiento