CodeGym/Blog Java/Random-ES/Diagrama de clases UML
Autor
Alex Vypirailenko
Java Developer at Toshiba Global Commerce Solutions

Diagrama de clases UML

Publicado en el grupo Random-ES

Introducción

Creo que todo el mundo ha oído el dicho "Mide dos veces, corta una vez". Es un verdadero consejo en programación. Siempre es mejor pensar en la implementación antes de dedicar tiempo a llevarla a cabo. Durante la implementación, a menudo necesita crear clases y pensar cómo interactuarán. Una representación visual de todo esto a menudo puede ayudarlo a encontrar la solución más correcta. Aquí es donde UML Class Diagram viene en nuestra ayuda.

¿Qué es UML?

Si observa imágenes relevantes en los motores de búsqueda, verá que UML tiene algo que ver con diagramas, flechas y cuadrados. Debe saber que UML significa Lenguaje de modelado unificado. Unificado es la palabra importante aquí. Esto significa que nuestras imágenes serán entendidas no solo por nosotros, sino también por cualquier otra persona que conozca UML. Es la lingua franca para dibujar diagramas.

Según Wikipedia,

"UML es un lenguaje de modelado de desarrollo de propósito general en el campo de la ingeniería de software que pretende proporcionar una forma estándar de visualizar el diseño de un sistema".
Lo más interesante, que no todo el mundo adivinaría, es que UML tiene especificaciones. E incluso hay una especificación UML 2. Más información sobre la especificación está disponible en el sitio web de Object Management Group . De hecho, este grupo desarrolla las especificaciones UML. También es interesante que UML no se limite a describir la estructura de las clases. Hay muchos tipos de diagramas UML. Wikipedia tiene una breve descripción de varios tipos de diagramas UML: diagramas UML . Volviendo a los diagramas de clase UML, vale la pena mencionar el libro "Head First Design Patterns" , utiliza diagramas UML para ilustrar patrones de diseño. La conclusión es que UML realmente se usa. Y resulta que conocerlo y entender cómo usarlo es bastante útil.

Solicitud

Averigüemos que podemos trabajar con UML en un IDE. Usaremos IntelliJ IDEA como nuestro IDE. Si está utilizando IntelliJ IDEA Ultimate, entonces tendremos el complemento "UML Support" instalado "listo para usar". Te permite generar automáticamente hermosos diagramas de clase. Por ejemplo, use Ctrl+N o el elemento de menú "Navegar" -> "Clase" para ir a la clase ArrayList. Ahora, en el menú contextual del nombre de la clase, seleccione "Diagrama" -> "Mostrar diagrama emergente". Como resultado, obtenemos un hermoso diagrama. UML: de la teoría a la práctica - 2 Pero, ¿y si quieres dibujar el diagrama tú mismo? ¿Y si no tienes la versión Ultimate? Con IntelliJ IDEA Community Edition, no tenemos otra opción. Entonces necesitamos entender cómo se organiza un diagrama UML. Primero,. Es un conjunto de herramientas de visualización de gráficos. El complemento que usaremos depende de ello. Después de la instalación, debe agregar el directorio bin del directorio de instalación de Graphviz a la variable de entorno PATH. Después de eso, en IntelliJ IDEA, seleccione Archivo -> Configuración en el menú. En la ventana "Configuración", seleccione la categoría "Complementos", haga clic en el botón "Examinar repositorios" e instale el complemento de integración PlantUML . ¿Qué tiene de bueno PlantUML? Describe UML utilizando un lenguaje de descripción de gráficos llamado "punto", lo que lo hace más universal, ya que el lenguaje de puntos es utilizado por algo más que PlantUML. Además, todo lo que hacemos a continuación se puede hacer no solo en un IDE, sino también en línea en planttext.com. Después de instalar el complemento PlantUML, podremos crear diagramas UML usando "Archivo" -> "Nuevo". Vamos a crear un diagrama de "clase UML". Esto generará automáticamente una plantilla con un ejemplo. Eliminaremos su contenido y agregaremos el nuestro. Para comprender cómo representar esto en el texto, eche un vistazo al manual PlantUML: diagrama de clase plantuml. UML: de la teoría a la práctica - 3Basándonos en estos materiales, comencemos a crear nuestro diagrama UML. Agregue el siguiente contenido, que describe dos clases:
@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Para ver el resultado en IDEA, seleccione "Ver" -> "Herramientas de Windows" -> "PlantUML". Solo obtenemos dos cuadrados que representan clases. Sabemos que ambas clases implementan la interfaz List . Esta relación de clases se llama realización. Esta relación se representa mediante una flecha con una línea de puntos. Dibujémoslo:
interface List
List <|.. ArrayList
List <|.. LinkedList
List es uno de los hijos de la clase Collection . Es decir, hereda Collection . Esta relación se llama generalización. Parece una flecha con una línea continua ordinaria. Dibujémoslo:
interface Collection
Collection <|-- List
Para el siguiente tipo de relación, agregue a la descripción de la clase ArrayList una entrada sobre una matriz privada de elementos del paquete :
~Object[] elementData
Ahora queremos mostrar que ArrayList contiene algunos objetos. En este caso, existirá una relación de agregación. Lista de arregloes un agregado, ya que contiene otros objetos. Decimos agregación porque los objetos de la lista pueden existir sin la lista: no son partes integrales de la lista. Su vida útil no está ligada a la vida útil de la lista. La palabra "agregado" nos viene del latín y se traduce como "ensamblado", es decir, algo formado por algo. Por ejemplo, en la vida, tenemos un conjunto de bomba (agregado), que consta de una bomba y un motor. El conjunto en sí se puede desmontar, y podemos dejar algunos de sus componentes solos. Por ejemplo, para vender o para poner en otro montaje. Es lo mismo en una lista. Esto se expresa con un rombo vacío en el agregado y una línea continua. Representaremos esto de la siguiente manera:
class Object{
}
ArrayList o- Object
Ahora queremos mostrar que, a diferencia de ArrayList , la clase LinkedList contiene Node s, contenedores que hacen referencia a los datos almacenados. En este caso, los Nodos son parte de LinkedList y no tienen una existencia independiente. Un nodo no es el contenido en sí mismo. Solo contiene una referencia al contenido. Por ejemplo, cuando agregamos una cadena a LinkedList , estamos agregando un nuevo nodo que contiene una referencia a la cadena, así como un enlace al nodo anterior y siguiente.. Esta relación se llama composición. Se representa dibujando una línea continua con un rombo relleno sobre el compuesto (algo hecho de partes constituyentes). Ahora representaremos la relación como texto:
class Node{
}
LinkedList *-- Node
Y ahora necesita aprender a representar otro tipo importante de relación: la dependencia. Se usa cuando una clase usa otra, pero la clase no contiene ni hereda la clase usada. Por ejemplo, LinkedList y ArrayList saben cómo crear un ListIterator . Representamos esto como flechas con una línea punteada:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Después de hacer todo esto, obtenemos: UML: de la teoría a la práctica - 4Puede agregar tantos detalles como sea necesario. Por supuesto, no hay nada sobrenatural en dibujar tal diagrama. Cuando trabaje en sus propias tareas, puede dibujarlo rápidamente a mano. Esto lo ayudará a desarrollar la capacidad de pensar en la arquitectura de una aplicación e identificar las deficiencias en la estructura de clases desde el principio, no después de haber pasado el día implementando el modelo incorrecto. Esa parece una buena razón para probarlo, ¿no? :)

Automatización

Hay varias formas de generar automáticamente diagramas PlantUML. Por ejemplo, IDEA tiene el complemento SketchIT , pero no dibuja diagramas del todo correctamente. Digamos que la implementación de las interfaces se dibuja incorrectamente (se muestra como herencia). Internet tiene ejemplos de cómo integrar esto en el proceso de construcción de su proyecto. Por ejemplo, puede encontrar cómo usar uml-java-docklet con Maven. Para demostrarlo, usaremos Maven Archetype para crear rápidamente un proyecto Maven. Correr
mvn archetype:generate
En respuesta a Elija un número o aplique un filtro, deje el valor predeterminado: simplemente presione Entrar. Siempre será "maven-archetype-quickstart". Seleccione la última versión. A continuación, responderemos algunas preguntas y terminaremos de crear el proyecto: UML: de la teoría a la práctica - 5Maven no es el tema de este artículo, por lo que puede encontrar respuestas a sus preguntas sobre Maven en el Centro de usuarios de Maven . En el proyecto generado, abra el archivo de descripción del proyecto, pom.xml, para editarlo. Copiaremos el contenido de la descripción de instalación de uml-java-docklet en este archivo. El artefacto utilizado en la descripción no se puede encontrar en el repositorio de Maven Central. Pero lo siguiente funcionó para mí: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. En otras palabras, en la descripción simplemente necesita reemplazar el ID de grupo de "info.leadinglight" a "com.chfourie" y establecer la versión en "1.0.0". Después de eso, podemos ejecutar los siguientes comandos en el directorio con el archivo pom.xml:
mvn clean install
y
mvn javadoc: javadoc
Si ahora abrimos la documentación generada (explorer target\site\apidocs\index.html), veremos los diagramas UML. Por cierto, la relación de implementación ahora se muestra correctamente :)

Conclusión

Como puede ver, UML le permite visualizar la estructura de su aplicación. Pero UML puede hacer mucho más. Puede usar UML para describir varios procesos dentro de su empresa o para describir el proceso comercial que abarca una función que está escribiendo. Tendrá que decidir por sí mismo qué tan útil es UML para usted personalmente, pero no importa lo que decida, será útil encontrar el tiempo para aprender más sobre él.
Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios