En la programación orientada a objetos , un diagrama de objetos [1] en el lenguaje de modelado unificado (UML) es un diagrama que muestra una vista completa o parcial de la estructura de un sistema modelado en un momento específico.
En el lenguaje de modelado unificado (UML), un diagrama de objetos se centra en un conjunto particular de objetos y atributos , y en los vínculos entre estas instancias. Un conjunto correlacionado de diagramas de objetos proporciona información sobre cómo se espera que evolucione con el tiempo una vista arbitraria de un sistema. Las primeras especificaciones de UML describían los diagramas de objetos de la siguiente manera: [2] [3]
"Un diagrama de objetos es un gráfico de instancias, que incluye objetos y valores de datos. Un diagrama de objetos estático es una instancia de un diagrama de clases; muestra una instantánea del estado detallado de un sistema en un momento determinado. El uso de los diagramas de objetos es bastante limitado, en concreto para mostrar ejemplos de estructuras de datos".
La última especificación UML 2.5.1 no define explícitamente los diagramas de objetos, [4] pero proporciona una notación para "instancias" de clasificadores. [4] : 126
Los diagramas de objetos y los diagramas de clases están estrechamente relacionados [5] y utilizan una notación casi idéntica. [6] Ambos diagramas están pensados para visualizar la estructura estática de un sistema. Mientras que los diagramas de clases muestran clases , los diagramas de objetos muestran instancias de clases ( objetos ). [7] Los diagramas de objetos son más concretos que los diagramas de clases . A menudo se utilizan para proporcionar ejemplos o actuar como casos de prueba para diagramas de clases. Normalmente, en un diagrama de objetos solo se muestran los aspectos de interés actual en un modelo.
Cada objeto y vínculo en un diagrama de objetos se representa mediante una InstanceSpecification . Esto puede mostrar el clasificador de un objeto (por ejemplo, una clase abstracta o concreta ) y el nombre de la instancia, así como los atributos y otras características estructurales mediante slots . Cada slot corresponde a un solo atributo o característica y puede incluir un valor para esa entidad.
El nombre de una especificación de instancia muestra opcionalmente un nombre de instancia, un separador ':' y, opcionalmente, uno o más nombres de clasificadores separados por comas. El contenido de las ranuras, si las hay, se incluye debajo de los nombres, en un compartimento de atributos separado. Un enlace se muestra como una línea sólida y representa una instancia de una asociación .
Consideremos una forma posible de modelar la producción de la secuencia de Fibonacci .
En el primer diagrama de objetos UML de la derecha, la instancia en la especificación de instancia situada más a la izquierda se denomina v1 , tiene IndependentVariable como clasificador, desempeña el papel NMinus2 dentro de FibonacciSystem y tiene una ranura para el atributo val con un valor de 0 . El segundo objeto se denomina v2 , es de la clase IndependentVariable , desempeña el papel NMinus1 y tiene val = 1 . El objeto DependentVariable se denomina v3 y desempeña el papel N. La instancia superior, una especificación de instancia anónima, tiene FibonacciFunction como clasificador y puede tener un nombre de instancia, un papel y ranuras, pero estos no se muestran aquí. El diagrama también incluye tres enlaces con nombre, que se muestran como líneas. Los enlaces son instancias de una asociación.
En el segundo diagrama, en un momento ligeramente posterior, los objetos IndependentVariable y DependentVariable son los mismos, pero las ranuras para el atributo val tienen valores diferentes. Los nombres de los roles no se muestran aquí.
En el último diagrama de objetos, una instantánea posterior, se incluyen los mismos tres objetos. Sus ranuras tienen valores diferentes. Los nombres de instancia y de función no se muestran aquí.
Si utiliza una herramienta de modelado UML , normalmente dibujará diagramas de objetos utilizando algún otro tipo de diagrama, como un diagrama de clases . Una instancia de objeto puede denominarse especificación de instancia o simplemente instancia . Un vínculo entre instancias se denomina generalmente vínculo . Otras entidades UML, como un símbolo de agregación o composición (un diamante), también pueden aparecer en un diagrama de objetos.