Archyno
UMLDiagramas de estructura

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.
Un diagrama de objetos UML. Una instancia acme de Merchant está enlazada con una instancia p1 de Payment, que está compuesta de una instancia m1 de Money que contiene 49.90 EUR y enlazada con una instancia r1 de Refund de 10.00. Cada nombre de instancia va subrayado y cada slot contiene un valor concreto.
El mismo modelo de pagos que el diagrama de clases, en un momento dado. Los nombres subrayados y los valores concretos son toda la diferencia.

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: NombreClase y va subrayada. Cualquiera de las partes puede omitirse - p1 sola, o : Payment para 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, no currency: Currency.

02Qué cambia respecto a un diagrama de clases#

ElementoNotaciónQué significa
Instanciabanda de nombre subrayadap1: Payment, : Payment, o p1. El subrayado es obligatorio.
Slotnombre = valorUn atributo con un valor real, no con un tipo declarado.
Enlacelínea simpleUna instancia de una asociación. Lleva un nombre de rol si resulta útil, pero nunca una multiplicidad.
Sin operacionesomitidasLas 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

  1. 01Un diagrama de objetos es un instante de un diagrama de clases, con valores reales.
  2. 02La banda de nombre subrayada es la notación; nombre de instancia y de clase son opcionales, el subrayado no.
  3. 03Los slots llevan valores (currency = EUR), no tipos.
  4. 04Los enlaces nunca llevan multiplicidad: una instantánea muestra lo que hay, no lo que podría haber.
  5. 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

Lecturas relacionadas

Todos los artículos