
Introducción a los Diagramas de Clases
Diagrama de Clasesproporciona una visión general del sistema objetivo describiendo los objetos y clases dentro del sistema y las relaciones entre ellos. Ofrece una amplia variedad de usos; desde modelar la estructura de datos específica del dominio hasta el diseño detallado del sistema objetivo.
Principales beneficios:
-
Modelado de dominio: Capturar entidades de negocio y sus relaciones
-
Diseño del sistema: Definir la arquitectura de software a nivel de clase
-
Generación de código: Generar código de implementación a partir de elementos del modelo
-
Documentación: Crear documentación técnica mantenible
-
Reutilización de modelos: Compartir modelos de clases entre diagramas de interacción para el modelado del comportamiento dinámico
-
Generación automática: Utilice el Diagrama de Formulario para generar diagramas automáticamente con un alcance definido por el usuario
Notaciones y elementos principales
Elementos estructurales básicos
Clase

Definición: Una clase describe un conjunto de objetos que comparten las mismas especificaciones de características, restricciones y semántica. La clase es un tipo de clasificador cuyas características son atributos y operaciones.
Propiedades clave:
| Propiedad | Descripción |
|---|---|
| Nombre | El nombre de la clase |
| Padre | El elemento del modelo que posee la clase |
| Visibilidad | Determina la apariencia y accesibilidad del espacio de nombres |
| Abstracto | Si es verdadero, la clase no se puede instanciar directamente |
| Hoja | Si es verdadero, la clase no se puede especializar más |
| Raíz | Indica si la clase no tiene ancestros |
| Activo | Determina si los objetos son activos (concurrentes) o pasivos |
| Atributos | Propiedades directas poseídas por la clase |
| Operaciones | Características comportamentales que especifican los parámetros de invocación |
| Parámetros de plantilla | Parámetros formales para la vinculación de plantillas |
Clase <>

Definición: Una forma de clase que actúa como contenedor de literales de enumeración. Por ejemplo, una enumeración Color contiene literales de enumeración rojo, verde, y azul.
Clase <>

Definición: Una interfaz es un tipo de clasificador que representa una declaración de un conjunto de características públicas coherentes y obligaciones. Una interfaz especifica un contrato; cualquier instancia de un clasificador que realice la interfaz debe cumplir ese contrato.
Características clave:
-
Las interfaces son declaraciones y no instanciables
-
Implementadas por instancias de clasificadores instanciables
-
Un clasificador puede implementar múltiples interfaces
-
Puede incluir restricciones y especificaciones de protocolo
Clase <>

Definición: Una forma de clase que representa un tipo de dato predefinido. Por ejemplo, una booleano clase (tipo).
Nota

Definición: Una nota (comentario) permite adjuntar diversos comentarios a elementos. Un comentario no tiene fuerza semántica, pero puede contener información útil para un modelador.
Restricción

Definición: Una condición o restricción expresada en texto de lenguaje natural o en un lenguaje legible por máquina con el fin de declarar parte de la semántica de un elemento.
Propiedades:
| Propiedad | Descripción |
|---|---|
| Nombre | Nombre opcional de la restricción |
| Expresión | La condición que debe ser verdadera para su satisfacción |
| Documentación | Descripción de la restricción |
Colaboración

Definición: Una colaboración se representa como un tipo de clasificador y define un conjunto de entidades cooperativas que deben ser desempeñadas por instancias (sus roles), así como un conjunto de conectores que definen los caminos de comunicación entre las instancias participantes.
Modelo
Definición: Un paquete de nivel superior que contiene todo el modelo o una parte importante de él.
NARY
Definición: Representa una asociación n-aria que conecta múltiples clasificadores simultáneamente.
Tipos de relación
Relaciones de asociación
Asociación (Sin agregación)

Definición: Una asociación especifica una relación semántica que puede ocurrir entre instancias tipificadas. Tiene al menos dos extremos representados por propiedades, cada una de las cuales está conectada al tipo del extremo.
Propiedades clave:
| Propiedad | Descripción |
|---|---|
| Nombre | El nombre de la asociación |
| Visibilidad | Apariencia y accesibilidad en el espacio de nombres |
| Extremo de asociación Desde/Hacia | Origen y destino de la asociación |
| Abstracto | Si es verdadero, la asociación es incompleta y no instanciable |
| Hoja | Si es verdadero, la asociación no puede ser especializada más |
| Derivado | Especifica si se deriva de otros elementos del modelo |
Agregación (asociación compartida)

Definición: Un tipo de asociación que tiene uno de sus extremos marcadocompartidocomo un tipo de agregación, lo que significa que tiene una agregación compartida (relación todo-parte en la que las partes pueden existir de forma independiente).
Composición (asociación compuesta)

Definición: Una forma fuerte de agregación en la que una instancia de parte puede incluirse en como máximo un compuesto a la vez. Si se elimina un compuesto, normalmente se eliminan también todas sus partes.
Características clave:
-
Las partes no pueden pertenecer a múltiples compuestos simultáneamente
-
Eliminar el compuesto normalmente elimina sus partes
-
Las partes pueden eliminarse antes de la eliminación del compuesto
-
Las composiciones pueden formar grafos acíclicos dirigidos con eliminación transitiva
Clase de asociación

Definición: Un elemento de modelo que tiene propiedades de asociación y de clase. Una Clase de asociación puede considerarse como una asociación que también tiene propiedades de clase, o como una clase que también tiene propiedades de asociación.
Recurso relacionado: Dibujar clase de asociación
Relaciones de dependencia
Dependencia

Definición: Una relación que indica que un elemento de modelo o un conjunto de elementos de modelo requiere otros elementos de modelo para su especificación o implementación.
Propiedades:
| Propiedad | Descripción |
|---|---|
| Proveedor | Elemento(s) independiente(s) en la relación |
| Cliente | Elemento(s) dependiente(s) en la relación |
| Visibilidad | Apariencia y accesibilidad del espacio de nombres |
| Mapeo | Expresión opcional que indica la relación |
Abstracción

Definición: Una relación que relaciona dos elementos o conjuntos de elementos que representan el mismo concepto a diferentes niveles de abstracción o desde diferentes puntos de vista.
Realización

Definición: Una relación de abstracción especializada entre dos conjuntos de elementos de modelo, uno que representa una especificación (el proveedor) y el otro que representa una implementación de este último (el cliente).
Casos de uso: Refinamiento paso a paso, optimizaciones, transformaciones, plantillas, síntesis de modelos, composición de marcos
Generalización

Definición: Una relación taxonómica entre un clasificador más general y un clasificador más específico. Cada instancia del clasificador específico también es una instancia indirecta del clasificador general.
Propiedad clave:
| Propiedad | Descripción |
|---|---|
| Sustituible | Si es verdadero, el clasificador específico puede reemplazar al clasificador general en tiempo de ejecución |
Uso

Definición: Una relación en la que un elemento requiere otro elemento (o conjunto de elementos) para su implementación o operación completa.
Acceso

Definición: Una importación de elemento definida como una relación dirigida entre un espacio de nombres que importa y un elemento empaquetable. El nombre del elemento empaquetable o su alias se agrega al espacio de nombres del espacio de nombres que importa.
Notación:
-
<<import>>palabra clave para visibilidad pública -
<<acceso>>palabra clave para visibilidad privada
Importar

Definición: Una importación de paquete se define como una relación dirigida que identifica un paquete cuyos miembros deben ser importados por un espacio de nombres.
Permiso

Definición: Un tipo de dependencia que otorga a un elemento de modelo el permiso para acceder a elementos en otro espacio de nombres.
Instanciación

Definición: Una dependencia de uso entre clasificadores que indica que las operaciones sobre el cliente crean instancias del proveedor.
Vinculación

Definición: La vinculación de plantilla es una relación dirigida desde un elemento vinculable a una plantilla hasta la firma de plantilla de la plantilla objetivo. Una vinculación de plantilla posee un conjunto de sustituciones de parámetros de plantilla.
Derivar

Definición: Especifica una relación de derivación entre elementos de modelo que normalmente, pero no necesariamente, son del mismo tipo. Una dependencia derivada especifica que el cliente puede calcularse a partir del proveedor.
Refinar

Definición: Especifica una relación de refinamiento entre elementos de modelo a diferentes niveles semánticos, como análisis y diseño.
Casos de uso: Transformaciones del análisis al diseño, evolución del modelo
Rastrear

Definición: Especifica una relación de rastreo entre elementos de modelo o conjuntos de elementos de modelo que representan el mismo concepto en modelos diferentes.
Uso principal: Seguimiento de requisitos y cambios entre modelos; el mapeo suele ser informal y bidireccional
Sustitución

Definición: Una relación entre dos clasificadores que indica que el clasificador sustituto cumple con el contrato especificado por el clasificador de contrato.
Implicación: Las instancias del clasificador sustitutivo son sustituibles en tiempo de ejecución donde se esperan instancias del clasificador de contrato.
Fusión

Definición: Una fusión de paquetes es una relación dirigida entre dos paquetes que indica que los contenidos de ambos paquetes deben combinarse.
Características clave:
-
Similar a la generalización, pero para el contenido de paquetes
-
Utilizado cuando elementos en paquetes diferentes representan el mismo concepto
-
Permite la extensión incremental de conceptos base
-
Particularmente útil en la metamodelización y definición de metamodelos UML
Variantes de clase y estereotipos
Clases específicas de ORM
Clase <>

Definición: Una forma especial de clase que se puede utilizar para modelar un modelo de objetos de una base de datos relacional. Se puede generar código ORM a partir de un conjunto de clases ORM Persistable.
Propiedades adicionales:
| Propiedad | Descripción |
|---|---|
| Detalles de la clase ORM | Configuraciones que afectan la generación de código ORM |
| Clave de negocio | Utilizado para generar operaciones equals() y hashCode() |
| Consulta ORM | Define calificadores ORM y consultas con nombre |
Clase <>

Definición: Una forma especial de clase que captura los atributos comunes de las clases sub-ORM-Persistable.
Clase <>

Definición: Una clase de tipo de usuario define un tipo de objeto para el modelo de objetos que puede ser accedido en el código ORM generado y persistir en la base de datos como una columna en lugar de una entidad.
Recurso relacionado: Soporte de tipo de usuario de Hibernate
Clase <>

Definición: Un tipo parametrizado de ORM le proporciona la oportunidad de garantizar la corrección de los datos mediante la implementación de verificaciones de corrección en el código ORM generado.
Clase <>

Definición: Una forma especial de clase para modelar el bean de entidad EJB.
Propiedades adicionales:
| Propiedad | Descripción |
|---|---|
| Detalles del código de la clase EJB | Atributos relacionados con EJB para la generación de código |
Propiedades y configuración
Referencia de propiedades comunes de clase
| Propiedad | Aplica a | Descripción |
|---|---|---|
| Nombre | Todos los elementos | Identificador para el elemento del modelo |
| Padre | Clases, Interfaces | Elemento del modelo propietario |
| Visibilidad | La mayoría de los elementos | Controla la apariencia del espacio de nombres: público, privado, protegido, paquete |
| Abstracto | Clases, Asociaciones | Si es verdadero, el elemento es incompleto y no se puede instanciar directamente |
| Hoja | Clases, Asociaciones | Si es verdadero, el elemento no se puede especializar más |
| Raíz | Clases | Indica si el elemento no tiene ancestros |
| Activo | Clases | Determina si los objetos son activos (concurrentes) o pasivos |
| Modelo de Negocio | Clases | Bandera para marcar como una “clase de negocio” |
| Atributos | Clases | Propiedades directas poseídas por la clase |
| Operaciones | Clases | Características comportamentales con parámetros y restricciones |
| Parámetros de plantilla | Elementos con plantilla | Parámetros formales para elementos genéricos/parametrizados |
| Derivado | Asociaciones | Especifica si el elemento se deriva de otros elementos de modelo |
Configuración de generación de código
Configuración específica de Java
-
Anotaciones de Java: Metadatos agregados al código fuente de Java para fines de anotación
-
Ingeniería de ida y vuelta: Generar y sincronizar código Java
Configuración específica de ORM
-
Consulta de ORM: Define calificadores y consultas con nombre para clases persistibles
-
Clave de negocio: Configure los campos utilizados para la generación de equals()/hashCode()
-
Mapeo de columnas: Especifique nombres y tipos de columnas de base de datos
Tipos de diagramas UML relacionados
Los diagramas de clases se integran con otros diagramas UML para un modelado completo del sistema:
| Tipo de diagrama | Propósito | Enlace |
|---|---|---|
| Diagrama de casos de uso | Capturar requisitos funcionales | Diagrama de casos de uso |
| Diagrama de secuencia | Modelar interacciones dinámicas con el tiempo | Diagrama de secuencia |
| Diagrama de comunicación | Mostrar interacciones y enlaces entre objetos | Diagrama de comunicación |
| Diagrama de máquina de estados | Modelar el ciclo de vida y los estados de los objetos | Diagrama de máquina de estados |
| Diagrama de actividad | Representar flujos de trabajo y procesos | Diagrama de actividad |
| Diagrama de componente | Mostrar componentes de software físicos | Diagrama de componente |
| Diagrama de despliegue | Modelar el despliegue de hardware y software | Diagrama de despliegue |
| Diagrama de paquete | Organizar elementos del modelo en paquetes | Diagrama de paquete |
| Diagrama de objeto | Mostrar instancias en un momento específico | Diagrama de objeto |
| Diagrama de estructura compuesta | Modelar la estructura interna de los clasificadores | Diagrama de estructura compuesta |
| Diagrama de tiempo | Enfocarse en las restricciones de tiempo | Diagrama de tiempo |
| Diagrama de vista general de interacción | Combinar diagramas de interacción y diagramas de actividad | Diagrama de vista general de interacción |
Lista de referencias
- Referencias de diagramas principales
-
Diagrama de casos de uso: Representación visual de la funcionalidad del sistema desde la perspectiva del usuario, capturando actores y sus objetivos.
-
Diagrama de secuencias: Muestra las interacciones entre objetos dispuestos en secuencia temporal, enfatizando el orden de los mensajes.
-
Diagrama de comunicación: Muestra las interacciones entre objetos con énfasis en las relaciones estructurales entre ellos.
-
Diagrama de máquinas de estado: Modela el comportamiento dinámico de un objeto a través de sus estados de ciclo de vida y transiciones.
-
Diagrama de actividades: Representa flujos de trabajo, procesos de negocio y pasos operativos con flujo de control.
-
Diagrama de componentes: Ilustra componentes de software físicos, sus interfaces y dependencias.
-
Diagrama de despliegue: Muestra nodos de hardware, artefactos de software y sus relaciones de despliegue.
-
Diagrama de paquetes: Organiza elementos del modelo en paquetes jerárquicos para modularidad y gestión de espacios de nombres.
-
Diagrama de objetos: Muestra instancias de clases y sus enlaces en un momento específico del tiempo.
-
Diagrama de estructura compuesta: Modela la estructura interna de clasificadores incluyendo partes, puertos y conectores.
-
Diagrama de tiempo: Se enfoca en las restricciones de tiempo y los cambios de estado durante intervalos de tiempo precisos.
-
Diagrama de vista general de interacción: Combina diagramas de interacción con la notación de diagramas de actividades para flujos de interacción de alto nivel.
- Referencias de notación de diagramas de clases
-
Abstracción: Relación que vincula elementos que representan el mismo concepto a diferentes niveles de abstracción.
-
Acceso: Relación de importación de elementos que controla la visibilidad de los elementos packageables importados.
-
Agregación (asociación compartida): Relación todo-parte donde las partes pueden existir independientemente del todo.
-
Asociación (Sin agregación): Relación semántica entre instancias tipificadas con extremos navegables.
-
Clase de asociación: Elemento de modelo que combina propiedades de asociación y clase para atributos de relación.
-
Vinculación: Relación de vinculación de plantilla con sustituciones de parámetros para elementos genéricos.
-
Clase: Clasificador principal que describe objetos con características, atributos y operaciones compartidos.
-
Clase <>: Clase contenedora para literales de enumeración que representan conjuntos de valores fijos.
-
Clase <>: Especificación de contrato que declara características públicas para clasificadores que las implementan.
-
Clase <>: Clase de tipo de datos predefinido que representa tipos básicos del lenguaje.
-
Clase <>: Clase mapeada a base de datos que apoya la generación de código ORM y la persistencia.
-
Clase <>: Clase base abstracta para compartir atributos comunes de ORM entre subclases persistibles.
-
Clase <>: Tipo personalizado persistido como columna de base de datos en lugar de tabla de entidad.
-
Clase <>: Tipo parametrizado que permite la validación de corrección de datos en código ORM.
-
Clase <>: Clase de modelo de bean entidad EJB para aplicaciones empresariales de Java.
-
Colaboración: Clasificador que define roles cooperativos y caminos de comunicación para instancias que interactúan.
-
Composición (asociación compuesta): Relación fuerte de todo-parte con propiedad exclusiva y eliminación en cascada.
-
Restricción: Condición o restricción que declara el significado de los elementos del modelo.
-
Dependencia: Relación que indica que un elemento requiere a otro para su especificación o implementación.
-
Derivar: Relación que especifica que el elemento cliente es computable a partir del elemento proveedor.
-
Generalización: Relación de herencia donde un clasificador específico hereda características de un clasificador general.
-
Importar: Relación de importación de paquete que hace disponibles los miembros del paquete al espacio de nombres que lo importa.
-
Instanciación: Dependencia que indica que las operaciones del cliente crean instancias del clasificador proveedor.
-
Fusión: Fusión de paquetes que combina el contenido de dos paquetes para una extensión incremental de conceptos.
-
Modelo: Contenedor de nivel superior para organizar elementos del modelo y paquetes.
-
N-ARIO: Asociación n-aria que conecta múltiples clasificadores simultáneamente.
-
Nota: Elemento de comentario para adjuntar observaciones no semánticas a elementos del modelo.
-
Permiso: Dependencia que otorga permiso de acceso a elementos en otro espacio de nombres.
-
Realización: Abstracción especializada donde el cliente implementa la especificación definida por el proveedor.
-
Perfeccionar: Relación entre elementos del modelo a diferentes niveles semánticos, como análisis y diseño.
-
Sustitución: Relación que indica que un clasificador sustituto cumple con la especificación del clasificador de contrato.
-
Rastrear: Relación de seguimiento del mismo concepto en diferentes modelos, principalmente para la gestión de requisitos.
-
Uso: Dependencia en la que el elemento cliente requiere al elemento proveedor para una implementación o operación completa.
- Tutoriales y referencias de recursos
-
Dibujar clase de asociación: Guía paso a paso para crear clases de asociación en Visual Paradigm.
-
Generar y sincronizar código Java: Tutorial para la ingeniería de ida y vuelta entre diagramas de clases y la implementación Java.
-
Soporte para tipos de usuario de Hibernate: Recurso para implementar tipos de usuario personalizados de Hibernate con clases ORM-Persistable.
- Referencia de estándares
-
Grupo de Gestión de Objetos – Lenguaje Unificado de Modelado: Fuente oficial de la especificación UML del organismo normativo que rige UML.
-
La definición de notaciones está citada de Grupo de Gestión de Objetos Lenguaje Unificado de Modelado (OMG UML) Versión de Superestructura 2.2 y versiones anteriores (para notaciones que ya no existen en la especificación más reciente).
- Esta guía se basa en la documentación del diagrama de clases UML de Visual Paradigm. Para las especificaciones más actuales, siempre consulte los estándares oficiales OMG UML.











