Tipos de diagramas UML |
---|
Diagramas estructurales UML |
Diagramas de comportamiento UML |
|
En ingeniería de software, un diagrama de clases en el Lenguaje de modelado unificado (UML) es un tipo de diagrama de estructura estática que describe la estructura de un sistema mostrando las clases del sistema, sus atributos, operaciones (o métodos) y las relaciones entre objetos.
El diagrama de clases es el componente principal del modelado orientado a objetos. Se utiliza para el modelado conceptual general de la estructura de la aplicación y para el modelado detallado, traduciendo los modelos a código de programación. Los diagramas de clases también se pueden utilizar para el modelado de datos. Las clases en un diagrama de clases representan los elementos principales, las interacciones en la aplicación y las clases que se van a programar.
En el diagrama, las clases se representan con cajas que contienen tres compartimentos:
En el diseño de un sistema, se identifican varias clases y se agrupan en un diagrama de clases que ayuda a determinar las relaciones estáticas entre ellas. En el modelado detallado, las clases del diseño conceptual a menudo se dividen en subclases.
Para describir con más detalle el comportamiento de los sistemas, estos diagramas de clases pueden complementarse con un diagrama de estados o una máquina de estados UML.
UML proporciona mecanismos para representar miembros de clase, como atributos y métodos, e información adicional sobre ellos, como constructores.
Para especificar la visibilidad de un miembro de la clase (es decir, cualquier atributo o método), estas anotaciones deben colocarse antes del nombre del miembro:
+ | Público |
- | Privado |
# | Protegido |
~ | Paquete |
Una propiedad derivada es una propiedad cuyo valor (o valores) se produce o se calcula a partir de otra información, por ejemplo, mediante el uso de valores de otras propiedades.
Una propiedad derivada se muestra con su nombre precedido por una barra diagonal '/'.
UML especifica dos tipos de alcance para los miembros: instancia y clase, y este último está representado por nombres subrayados.
Para indicar un alcance de clasificador para un miembro, su nombre debe estar subrayado. De lo contrario, el alcance de la instancia se asume de forma predeterminada.
Una relación es un término general que cubre los tipos específicos de conexiones lógicas que se encuentran en los diagramas de objetos y clases. UML define las siguientes relaciones:
Una dependencia es una conexión semántica entre elementos del modelo dependientes e independientes. Existe entre dos elementos si los cambios en la definición de un elemento (el servidor o el destino) pueden causar cambios en el otro (el cliente o la fuente). Esta asociación es unidireccional. Una dependencia se muestra como una línea discontinua con una flecha abierta que apunta del cliente al proveedor.
Una asociación representa una familia de vínculos. Una asociación binaria (con dos extremos) normalmente se representa como una línea. Una asociación puede vincular cualquier número de clases. Una asociación con tres enlaces se denomina asociación ternaria. Se puede nombrar una asociación y los extremos de una asociación se pueden adornar con nombres de roles, indicadores de propiedad, multiplicidad, visibilidad y otras propiedades. Hay cuatro tipos diferentes de asociación: bidireccional, unidireccional, agregación (incluye agregación de composición) y reflexiva. Las asociaciones bidireccionales y unidireccionales son las más comunes. Por ejemplo, una clase de vuelo está asociada con una clase de avión bidireccionalmente. La asociación representa la relación estática compartida entre los objetos de dos clases.
La agregación es una variante de la relación de asociación "tiene una"; la agregación es más específica que la asociación. Es una asociación que representa una relación parte-todo o parte-de. Como se muestra en la imagen, un profesor 'tiene' una clase que enseñar. Como tipo de asociación, una agregación se puede nombrar y tener los mismos adornos que una asociación. Sin embargo, una agregación no puede involucrar más de dos clases; debe ser una asociación binaria. Además, apenas hay una diferencia entre agregaciones y asociaciones durante la implementación, y el diagrama puede omitir las relaciones de agregación por completo.
La agregación puede ocurrir cuando una clase es una colección o un contenedor de otras clases, pero las clases contenidas no tienen una fuerte dependencia del ciclo de vida del contenedor. El contenido del contenedor todavía existe cuando se destruye el contenedor.
En UML, se representa gráficamente como una forma de diamante hueco en la clase contenedora con una sola línea que la conecta a la clase contenida. El agregado es semánticamente un objeto extendido que se trata como una unidad en muchas operaciones, aunque físicamente está formado por varios objetos menores.
Ejemplo: biblioteca y estudiantes. Aquí el estudiante puede existir sin biblioteca, la relación entre estudiante y biblioteca es agregación.
La representación UML de una relación de composición muestra la composición como una forma de diamante relleno en el extremo de la clase contenedora de las líneas que conectan las clases contenidas con la clase contenedora.
Por lo tanto, la relación de agregación es a menudo contención "de catálogo" para distinguirla de la contención "física" de la composición.
Indica que una de las dos clases relacionadas (la subclase) se considera una forma especializada de la otra (el súper tipo) y la superclase se considera una generalización de la subclase. En la práctica, esto significa que cualquier instancia del subtipo es también una instancia de la superclase. Un árbol ejemplar de generalizaciones de esta forma se encuentra en la clasificación biológica : los humanos son una subclase de simios, que es una subclase de mamíferos, etc. La relación se entiende más fácilmente por la frase "una A es una B" (un ser humano es un mamífero, un mamífero es un animal).
La representación gráfica UML de una generalización es una forma de triángulo hueco en el extremo de la superclase de la línea (o árbol de líneas) que la conecta con uno o más subtipos.
La relación de generalización también se conoce como herencia o relación "es una".
La superclase (clase base) en la relación de generalización también se conoce como "padre", superclase, clase base o tipo base.
El subtipo en la relación de especialización se conoce también como el "niño", subclase, clase derivada, tipo derivado, heredando clase, o heredar tipo.
Tenga en cuenta que esta relación no se parece en nada a la relación biológica entre padres e hijos: el uso de estos términos es extremadamente común, pero puede inducir a error.
La generalización solo se puede mostrar en diagramas de clases y en diagramas de casos de uso.
En el modelado UML, una relación de realización es una relación entre dos elementos del modelo, en la que un elemento del modelo (el cliente) realiza (implementa o ejecuta) el comportamiento que especifica el otro elemento del modelo (el proveedor).
La representación gráfica UML de una Realización es una forma de triángulo hueco en el extremo de la interfaz de la línea discontinua (o árbol de líneas) que la conecta a uno o más implementadores. Se utiliza una punta de flecha simple en el extremo de la interfaz de la línea discontinua que la conecta con sus usuarios. En los diagramas de componentes, se utiliza la convención gráfica de bola y encaje (los implementadores exponen una bola o piruleta, mientras que los usuarios muestran un encaje). Las realizaciones solo se pueden mostrar en diagramas de clases o componentes. Una realización es una relación entre clases, interfaces, componentes y paquetes que conecta un elemento de cliente con un elemento de proveedor. Una relación de realización entre clases / componentes e interfaces muestra que la clase / componente realiza las operaciones ofrecidas por la interfaz.
symbolic of realization -------▻
La dependencia es una forma más débil de vínculo que indica que una clase depende de otra porque la usa en algún momento. Una clase depende de otra si la clase independiente es una variable de parámetro o una variable local de un método de la clase dependiente. Esto es diferente de una asociación, donde un atributo de la clase dependiente es una instancia de la clase independiente. A veces, la relación entre dos clases es muy débil. No se implementan con variables miembro en absoluto. Más bien, podrían implementarse como argumentos de función miembro.
Esta relación de asociación indica que (al menos) una de las dos clases relacionadas hace referencia a la otra. Esta relación generalmente se describe como "A tiene una B" (una gata tiene gatitos, los gatitos tienen una gata).
La representación UML de una asociación es una línea que conecta las dos clases asociadas. En cada extremo de la línea hay una notación opcional. Por ejemplo, podemos indicar, usando una punta de flecha, que el extremo puntiagudo es visible desde la cola de la flecha. Podemos indicar la propiedad por la ubicación de una pelota, el papel que juegan los elementos de ese extremo al proporcionar un nombre para el papel, y la multiplicidad de instancias de esa entidad (el rango de la cantidad de objetos que participan en la asociación desde la perspectiva del otro extremo).
0 | Sin instancias (raro) |
0..1 | Sin instancias, o una instancia |
1 | Exactamente una instancia |
1..1 | Exactamente una instancia |
0.. * | Cero o más instancias |
* | Cero o más instancias |
1.. * | Una o más instancias |
Las clases de entidad modelan la información de larga duración que maneja el sistema y, a veces, el comportamiento asociado con la información. No deben identificarse como tablas de bases de datos u otros almacenes de datos.
Se dibujan como círculos con una línea corta unida a la parte inferior del círculo. Alternativamente, se pueden dibujar como clases normales con la notación de estereotipo de «entidad» sobre el nombre de la clase.
![]() | Wikimedia Commons tiene medios relacionados con Diagrama de clases. |