stringtranslate.com

Diagrama de clase

Jerarquía de diagramas UML 2.5, mostrada como un diagrama de clases. Las distintas clases se representan con un solo compartimento, pero a menudo contienen hasta tres compartimentos.

En ingeniería de software , un diagrama de clases [1] en el Lenguaje Unificado de Modelado (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 . [2] Las clases en un diagrama de clases representan tanto los elementos principales, las interacciones en la aplicación y las clases a programar.

En el diagrama, las clases se representan con cuadros que contienen tres compartimentos:

Una clase con tres compartimentos.

En el diseño de un sistema, se identifican y agrupan varias clases 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 suelen dividirse en subclases. [3]

Para poder describir mejor el comportamiento de los sistemas, estos diagramas de clases se pueden complementar con un diagrama de estados o máquina de estados UML . [4]

Miembros

UML proporciona mecanismos para representar miembros de una clase, como atributos y métodos, e información adicional sobre ellos, como constructores.

Visibilidad

Para especificar la visibilidad de un miembro de la clase (es decir, cualquier atributo o método), estas notaciones deben colocarse antes del nombre de los miembros: [5]

Una propiedad derivada es una propiedad cuyo valor (o valores) se produce o calcula a partir de otra información, por ejemplo, utilizando valores de otras propiedades.

Una propiedad derivada se muestra con su nombre precedido por una barra diagonal '/'. [6]

Alcance

El UML especifica dos tipos de ámbito para los miembros: instancia y clase . El nombre de la clase aparece como una concatenación subrayada del nombre de la instancia (si corresponde), dos puntos (':') y el nombre de la clase real. [1]

Para indicar el alcance de un clasificador para un miembro, su nombre debe estar subrayado. De lo contrario, el alcance de la instancia se asume de forma predeterminada.

Relaciones

Notación de relaciones UML

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 clases y objetos. UML define las siguientes relaciones:

Relaciones a nivel de instancia

Dependencia

Una dependencia es un tipo de asociación donde existe una conexión semántica entre elementos del modelo dependientes e independientes. [7] 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.

Asociación

Ejemplo de diagrama de clases de asociación entre dos clases.

Una asociación representa una familia de vínculos estructurales. Una asociación binaria se representa como una línea continua entre dos clases. Una asociación reflexiva es una asociación binaria entre la clase y ella misma. Una asociación entre más de dos clases se representa como un diamante conectado con una línea continua a cada una de las clases asociadas. Una asociación entre tres clases es una asociación ternaria. Una asociación entre más clases se llama asociación n-aria.

Se puede nombrar una asociación y los extremos de una asociación se pueden adornar con nombres de roles, indicadores de agregación, multiplicidad, visibilidad, navegabilidad y otras propiedades. La notación de puntos, por ejemplo, permite representar con un pequeño punto en el lado de una clase que el extremo de la asociación es propiedad del otro lado. [8]

Hay tres tipos de asociación: asociación simple, agregación compartida, agregación compuesta (composición). Una asociación puede ser navegable en una o más direcciones. No es necesario especificar explícitamente la navegabilidad. Una flecha con punta abierta en el costado de una clase documenta que se puede acceder a la clase de manera eficiente en tiempo de ejecución desde el lado opuesto. Una navegación unidireccional se muestra con una pequeña cruz en la línea de asociación en el lado de la clase a la que no se puede llegar. Por ejemplo, una clase de vuelo está asociada a una clase de avión de forma bidireccional.

Agregación

Diagrama de clases que muestra la agregación entre dos clases. Aquí, un profesor "tiene una" clase que impartir.

La agregación es una variante de la relación de asociación "tiene un"; 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 impartir. Como tipo de asociación, una agregación puede tener nombre y tener los mismos adornos que una asociación. Sin embargo, una agregación no podrá involucrar más de dos clases; debe ser una asociación binaria. Además, apenas hay diferencia entre agregaciones y asociaciones durante la implementación, y el diagrama puede omitir por completo las relaciones de agregación. [9]

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 con 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.

Composición

Dos diagramas de clases. El diagrama de arriba muestra la composición entre dos clases: un automóvil tiene exactamente un carburador y un carburador es parte de un automóvil. Los carburadores no pueden existir como partes separadas, separadas de un automóvil específico. El diagrama de abajo muestra la agregación entre dos clases: un estanque tiene cero o más patos y un pato tiene como máximo un estanque (a la vez). El pato puede existir separado de un estanque, por ejemplo, puede vivir cerca de un lago. Cuando destruimos un Estanque normalmente no matamos a todos los Patos.

La relación de agregación compuesta (coloquialmente llamada composición) es una forma más fuerte de agregación donde el agregado controla el ciclo de vida de los elementos que agrega. La representación gráfica es una forma de diamante rellena en el extremo de la clase contenedora de la línea que conecta las clases contenidas con la clase contenedora.

Diferencias entre composición y agregación

Relación de composición
1. Cuando se intenta representar relaciones entre partes del mundo real, por ejemplo, un motor es parte de un automóvil.
2. Cuando se destruye el contenedor, también se destruye el contenido, por ejemplo, una universidad y sus departamentos.
Relación de agregación
1. Cuando se representa una relación de software o base de datos, por ejemplo, el motor del modelo de automóvil ENG01 es parte de un modelo de automóvil CM01, al igual que el motor, ENG01, también puede ser parte de un modelo de automóvil diferente. [10]
2. Cuando se destruye el contenedor, normalmente no se destruye el contenido, por ejemplo, un profesor tiene estudiantes; cuando el profesor sale de la universidad los estudiantes no se van junto con el profesor.

Así, la relación de agregación es a menudo una contención de "catálogo" para distinguirla de la contención "física" de la composición. UML 2 no especifica ninguna semántica para la agregación en comparación con la asociación simple.

Relaciones a nivel de clase

Generalización/Herencia

Diagrama de clases que muestra la generalización entre la superclase Persona y las dos subclases Estudiante y Profesor

Indica que una de las dos clases relacionadas (la subclase ) se considera una forma especializada de la otra (el supertipo ) 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 simio , que es una subclase de mamífero , y así sucesivamente. La relación se entiende más fácilmente con 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.

 simbólico de realización (subclase) _______▻ (superclase)

La relación de generalización también se conoce como relación de herencia o "es un" .

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 también se conoce como "secundario" , subclase , clase derivada , tipo derivado , clase heredera o tipo heredado .

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 resultar engañoso.

A es un tipo de B
Por ejemplo, "un roble es un tipo de árbol", "un automóvil es un tipo de vehículo"

La generalización sólo se puede mostrar en diagramas de clases y en diagramas de casos de uso .

Realización/implementación

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 el otro elemento del modelo (el proveedor) especifica.

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 cavidad (los implementadores exponen una bola o paleta, mientras que los usuarios muestran una cavidad). Las realizaciones sólo se pueden mostrar en diagramas de clases o de componentes. Una realización es una relación entre clases, interfaces, componentes y paquetes que conecta un elemento cliente con un elemento proveedor. Una relación de realización entre clases/componentes e interfaces muestra que la clase/componente realiza las operaciones ofrecidas por la interfaz.

 simbólico de realización (implementador) -------▻ (interfaz)

relación general

Diagrama de clases que muestra la dependencia entre la clase "Auto" y la clase "Rueda" (un ejemplo aún más claro sería "El automóvil depende del combustible", porque el automóvil ya agrega (y no solo usa ) Rueda)

Dependencia

La dependencia puede ser una forma más débil de vínculo que indica que una clase depende de otra porque la utiliza 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. 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 funciones miembro.

Multiplicidad

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 madre gata tiene gatitos, los gatitos tienen una madre 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 mediante la ubicación de una pelota, el papel que desempeñan los elementos de ese fin proporcionando un nombre para el papel y la multiplicidad de instancias de esa entidad (el rango de números de objetos que participan en la asociación desde la perspectiva del otro extremo).

Estereotipos de análisis

Entidades

Las clases de entidad modelan la información de larga duración manejada por 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 estereotipada de «entidad» encima del nombre de la clase.

Ver también

Diagramas relacionados

Referencias

  1. ^ ab "Clases". Lenguaje de modelado unificado 2.5.1. Número de documento OMG formal/2017-12-05. Organización de desarrollo de estándares del grupo de gestión de objetos (OMG SDO). Diciembre de 2017. pág. 194.
  2. ^ Chispas, Geoffrey. «Modelado de Bases de Datos en UML» . Consultado el 8 de septiembre de 2011 .
  3. ^ Flatt, Amelie; Langner, Arne; Leps, Olof (2022), "Fase I: Mapeo de conceptos legales a objetos técnicos" , Desarrollo basado en modelos de perfiles de aplicaciones Akoma Ntoso , Cham: Springer International Publishing, págs. 13-17, doi :10.1007/978-3-031 -14132-4_3, ISBN 978-3-031-14131-7, recuperado el 7 de enero de 2023
  4. ^ Scott W. Ambler (2009) Diagramas de clases UML 2. Webdoc 2003-2009. Consultado el 2 de diciembre de 2009.
  5. ^ Tarjeta de referencia UML, versión 2.1.2, Holub Associates, agosto de 2007 , consultado el 12 de marzo de 2011
  6. ^ "La propiedad derivada de UML es una propiedad cuyo valor se produce o calcula a partir de otra información, por ejemplo, mediante el uso de otras propiedades". www.uml-diagrams.org . Consultado el 24 de enero de 2019 .
  7. ^ Fowler (2003) UML destilado: una breve guía para el lenguaje de modelado de objetos estándar
  8. ^ Selic, salvado (18 de abril de 2013). "Hacerlo justo en el punto" (PDF) . www.omg.org . Grupo de administración de objetos . Consultado el 26 de noviembre de 2023 .
  9. ^ "Tutorial UML parte 1: diagramas de clases" (PDF) . Archivado desde el original (PDF) el 3 de enero de 2007 . Consultado el 18 de julio de 2015 .
  10. ^ Goodwin, David. "Modelado y Simulación, p. 26" (PDF) . La Universidad de Warwick . Consultado el 28 de noviembre de 2015 .

enlaces externos