Diagramas de objetos UML
Un diagrama de clases congelado en un instante, con valores reales en lugar de tipos. La forma más barata de averiguar si el modelo que acabas de dibujar funciona de verdad.
6 min de lecturaUML 2.5.123 de 35
La respuesta corta
- Un diagrama de clases dice qué es posible; uno de objetos dice qué es cierto en un instante, con valores reales en lugar de tipos.
- El subrayado marca una instancia. El nombre se lee instancia : Clase, y cualquiera de las mitades puede caer: unos dos puntos solos dan una anónima.
- Un slot es un atributo que lleva un valor concreto. Los slots son lo que un diagrama de objetos tiene en lugar de declaraciones de atributos tipadas.
- Dibuja uno cuando una multiplicidad o una autoasociación te haga dudar. Si no puedes dibujar un ejemplo válido, el diagrama de clases está mal.
01Qué muestra#
Un diagrama de objetos es una instantánea. Donde un diagrama de clasesdice «un pago tiene un importe y cero o más reembolsos», un diagrama de objetos dice «estepago, ahora mismo, es de 49.90 EUR y tiene un reembolso de 10.00».
Usa las mismas formas que un diagrama de clases con dos cambios, y esos dos cambios son toda la notación:
- La banda de nombre se lee
nombreInstancia: NombreClasey va subrayada. Cualquiera de las partes puede omitirse -p1sola, o: Paymentpara una instancia anónima - pero el subrayado nunca. Es lo que convierte la caja en un objeto y no en una clase. - Los atributos se vuelven slots con valores concretos:
currency = EUR, nocurrency: Currency.
02Qué cambia respecto a un diagrama de clases#
| Elemento | Notación | Qué significa |
|---|---|---|
| Instancia | banda de nombre subrayada | p1: Payment, : Payment, o p1. El subrayado es obligatorio. |
| Slot | nombre = valor | Un atributo con un valor real, no con un tipo declarado. |
| Enlace | línea simple | Una instancia de una asociación. Lleva un nombre de rol si resulta útil, pero nunca una multiplicidad. |
| Sin operaciones | omitidas | Las instancias no tienen operaciones propias: las tiene la clase. El tercer compartimento simplemente no se usa. |
03Para qué molestarse#
Los diagramas de objetos son el diagrama UML menos dibujado y uno de los más útiles por minuto invertido, porque son una prueba de un modelo de clases.
Coge un diagrama de clases del que alguien esté seguro e intenta rellenar una instancia realista de cada caja. Pasan tres cosas de forma fiable. Una multiplicidad resulta estar mal: el 1 que debería haber sido 0..1, descubierto en el momento en que no tienes nada que poner ahí. Aparece una relación que falta, porque dos objetos que evidentemente necesitan referenciarse no tienen línea entre ellos. Y un atributo que parecía correcto como tipo resulta no tener ningún valor sensato, lo que suele significar que pertenece a otra clase.
Esto lleva unos diez minutos y encuentra problemas que sobreviven meses de discusión en el nivel abstracto. Es la misma razón por la que escribir un solo caso de prueba encuentra problemas de diseño que leer el diseño no encuentra.
El segundo uso es explicativo. Una estructura recursiva o autorreferente - un árbol, un grafo, un compuesto - es genuinamente difícil de entender desde un diagrama de clases, donde es una caja con una línea que vuelve sobre sí misma. Dibujada como cinco objetos concretos con enlaces entre ellos, se vuelve obvia al instante.
04Cuándo dibujar uno#
Úsalo cuando
- Validar un diagrama de clases a partir del cual vas a construir
- Explicar una estructura recursiva o autorreferente que un diagrama de clases oscurece
- Documentar un caso peliagudo concreto: el pedido con pago dividido y dos reembolsos
- Preparar datos de prueba: un diagrama de objetos es una imagen de tus datos semilla
Usa otra cosa cuando
- Como sustituto del diagrama de clases: muestra un caso, no las reglas
- La estructura es plana y obvia
- Necesitarías seis para cubrir los casos interesantes; arregla mejor el modelo de clases
- La pregunta va sobre comportamiento en el tiempo: usa un diagrama de secuencia
En una línea cada uno
- 01Un diagrama de objetos es un instante de un diagrama de clases, con valores reales.
- 02La banda de nombre subrayada es la notación; nombre de instancia y de clase son opcionales, el subrayado no.
- 03Los slots llevan valores (currency = EUR), no tipos.
- 04Los enlaces nunca llevan multiplicidad: una instantánea muestra lo que hay, no lo que podría haber.
- 05Su mejor uso es como prueba de diez minutos de un modelo de clases del que vas a construir.
05Preguntas frecuentes#
¿Qué diferencia hay entre un diagrama de objetos y uno de clases?
Un diagrama de clases muestra tipos y lo que es posible. Uno de objetos muestra un conjunto de instancias reales en un momento, con valores reales. Todo diagrama de objetos es un ejemplo de algún diagrama de clases, y por eso es la forma más barata de comprobar si ese diagrama de clases funciona.
¿Por qué se subrayan los nombres en un diagrama de objetos?
El subrayado es la marca de instancia en UML. El compartimento del nombre se lee nombre de instancia, dos puntos, nombre de clase, subrayado, y cualquiera de las mitades puede omitirse: dos puntos Pedido es una instancia anónima, y un nombre suelto es una cuyo tipo se deduce del contexto.
¿Qué es un slot en UML?
Un atributo de una instancia que lleva un valor concreto, escrito como atributo igual valor. Los slots son lo que un diagrama de objetos tiene en lugar de las declaraciones de atributos tipadas de un diagrama de clases.
¿Cuándo merece la pena dibujar un diagrama de objetos?
Cuando un diagrama de clases tiene multiplicidades o una autoasociación de la que no estás seguro. Poblarlo con tres o cuatro instancias reales suele zanjar la discusión en un minuto, y si no puedes dibujar un ejemplo válido, el diagrama de clases está mal.
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
Fundamentos
Diagramas de estructura
Diagramas de comportamiento
Diagramas de comportamiento
Fundamentos