CodeGym /Java Blog /Random-IT /Diagramma delle classi UML
John Squirrels
Livello 41
San Francisco

Diagramma delle classi UML

Pubblicato nel gruppo Random-IT

introduzione

Penso che tutti abbiano sentito il detto "Misura due volte, taglia una volta". È un vero consiglio nella programmazione. È sempre meglio pensare all'implementazione prima di dedicare del tempo a realizzarla. Durante l'implementazione, spesso è necessario creare classi e pensare a come interagiranno. Una rappresentazione visiva di tutto ciò può spesso aiutarti a trovare la soluzione più corretta. È qui che il diagramma di classe UML viene in nostro aiuto.

Cos'è UML?

Se guardi le immagini pertinenti nei motori di ricerca, vedrai che UML ha qualcosa a che fare con diagrammi, frecce e quadrati. Devi sapere che UML sta per Unified Modeling Language. Unificato è la parola importante qui. Ciò significa che le nostre immagini saranno comprese non solo da noi, ma anche da chiunque conosca UML. È la lingua franca per disegnare diagrammi.

Secondo Wikipedia,

"UML è un linguaggio di modellazione generico, di sviluppo, nel campo dell'ingegneria del software che ha lo scopo di fornire un modo standard per visualizzare la progettazione di un sistema."
La cosa più interessante, che non tutti indovinerebbero, è che UML ha delle specifiche. E c'è anche una specifica UML 2. Ulteriori informazioni sulla specifica sono disponibili sul sito Web di Object Management Group . Infatti, questo gruppo sviluppa le specifiche UML. È anche interessante che UML non si limiti a descrivere la struttura delle classi. Esistono molti tipi di diagrammi UML. Wikipedia ha una breve descrizione di vari tipi di diagrammi UML: diagrammi UML . Tornando ai diagrammi delle classi UML, vale la pena menzionare il libro "Head First Design Patterns" , che utilizza i diagrammi UML per illustrare i modelli di progettazione. La linea di fondo è che UML è davvero usato. E si scopre che conoscerlo e capire come usarlo è abbastanza utile.

Applicazione

Scopriamo che possiamo lavorare con UML in un IDE. Useremo IntelliJ IDEA come nostro IDE. Se stai utilizzando IntelliJ IDEA Ultimate, avremo il plug-in "Supporto UML" installato "pronto all'uso". Ti consente di generare automaticamente bellissimi diagrammi di classe. Ad esempio, usa Ctrl+N o la voce di menu "Navigazione" -> "Classe" per passare alla classe ArrayList. Ora nel menu contestuale del nome della classe, seleziona "Diagramma" -> "Mostra popup diagramma". Di conseguenza, otteniamo un bellissimo diagramma. UML: dalla teoria alla pratica - 2 Ma cosa succede se vuoi disegnare tu stesso il diagramma? E se non hai la versione Ultimate? Utilizzando IntelliJ IDEA Community Edition, non abbiamo altra scelta. Quindi dobbiamo capire come è organizzato un diagramma UML. Primo,. È un insieme di strumenti di visualizzazione di grafici. Il plugin che useremo dipende da questo. Dopo l'installazione, è necessario aggiungere la directory bin dalla directory di installazione di Graphviz alla variabile di ambiente PATH. Successivamente, in IntelliJ IDEA, seleziona File -> Impostazioni nel menu. Nella finestra "Impostazioni", seleziona la categoria "Plugin", fai clic sul pulsante "Sfoglia repository" e installa il plug-in di integrazione PlantUML . Cosa c'è di così bello in PlantUML? Descrive UML utilizzando un linguaggio di descrizione del grafico chiamato "punto", che lo rende più universale, poiché il linguaggio del punto è utilizzato da più di un semplice PlantUML. Inoltre, tutto ciò che facciamo di seguito può essere fatto non solo in un IDE, ma anche online su planttext.com. Dopo aver installato il plugin PlantUML, saremo in grado di creare diagrammi UML utilizzando "File" -> "Nuovo". Creiamo un diagramma "classe UML". Questo genererà automaticamente un modello con un esempio. Cancelleremo il suo contenuto e aggiungeremo il nostro. Per capire come rappresentarlo nel testo, dai un'occhiata al manuale PlantUML: plantuml class-diagram. UML: dalla teoria alla pratica - 3Basandoci su questi materiali, iniziamo a creare il nostro diagramma UML. Aggiungi il contenuto seguente, che descrive due classi:

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Per vedere il risultato in IDEA, seleziona "Visualizza" -> "Finestre degli strumenti" -> "PlantUML". Otteniamo solo due quadrati che rappresentano le classi. Sappiamo che entrambe queste classi implementano l' interfaccia List . Questa relazione di classe è chiamata realizzazione. Questa relazione è rappresentata utilizzando una freccia con una linea tratteggiata. Disegniamolo:

interface List
List <|.. ArrayList
List <|.. LinkedList
List è uno dei figli della classe Collection . Cioè, eredita Collection . Questa relazione è chiamata generalizzazione. Sembra una freccia con una normale linea continua. Disegniamolo:

interface Collection
Collection <|-- List
Per il prossimo tipo di relazione, aggiungi alla descrizione della classe ArrayList una voce su un array privato di elementi del pacchetto :

~Object[] elementData
Ora vogliamo mostrare che ArrayList contiene alcuni oggetti. In questo caso, ci sarà un rapporto di aggregazione. Lista di arrayè un aggregato, poiché contiene altri oggetti. Diciamo aggregazione perché gli oggetti della lista possono esistere senza la lista: non sono parti integranti della lista. La loro durata non è legata alla durata della lista. La parola "aggregato" ci viene dal latino e si traduce come "assemblato", cioè qualcosa composto da qualcosa. Ad esempio, nella vita abbiamo un gruppo pompa (aggregato), che consiste in una pompa e un motore. L'assieme stesso può essere smontato e possiamo lasciare da soli alcuni dei suoi componenti. Ad esempio, vendere o mettere in un'altra assemblea. È lo stesso in una lista. Questo è espresso con un rombo vuoto all'aggregato e una linea continua. Lo rappresenteremo come segue:

class Object{
}
ArrayList o- Object
Ora vogliamo mostrare che, diversamente da ArrayList , la classe LinkedList contiene Node s — contenitori che fanno riferimento ai dati archiviati. In questo caso, i Node fanno parte di LinkedList e non hanno un'esistenza indipendente. Un nodo non è il contenuto stesso. Contiene solo un riferimento al contenuto. Ad esempio, quando aggiungiamo una stringa a un LinkedList , stiamo aggiungendo un nuovo nodo che contiene un riferimento alla stringa, nonché un collegamento al nodo precedente e successivo. Questa relazione è chiamata composizione. È raffigurato disegnando una linea continua con un rombo pieno sul composito (qualcosa fatto di parti costituenti). Ora rappresenteremo la relazione come testo:

class Node{
}
LinkedList *-- Node
E ora devi imparare a rappresentare un altro importante tipo di relazione: la dipendenza. Viene utilizzato quando una classe ne utilizza un'altra, ma la classe non contiene né eredita la classe utilizzata. Ad esempio, LinkedList e ArrayList sanno come creare un ListIterator . Lo rappresentiamo come frecce con una linea tratteggiata:

class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Dopo aver fatto tutto questo, otteniamo: UML: dalla teoria alla pratica - 4Puoi aggiungere tutti i dettagli necessari. Naturalmente, non c'è niente di soprannaturale nel disegnare un tale diagramma. Quando lavori alle tue attività, puoi disegnarlo rapidamente a mano. Questo ti aiuterà a sviluppare la capacità di pensare attraverso l'architettura di un'applicazione e identificare le carenze nella struttura della classe nella fase iniziale, non dopo aver già passato la giornata a implementare il modello sbagliato. Sembra un buon motivo per provarlo, vero? :)

Automazione

Esistono vari modi per generare automaticamente diagrammi PlantUML. Ad esempio, IDEA ha il plug-in SketchIT , ma non disegna diagrammi in modo completamente corretto. Supponiamo che l'implementazione delle interfacce sia disegnata in modo errato (viene visualizzata come ereditarietà). Internet ha esempi di come integrarlo nel processo di compilazione del tuo progetto. Ad esempio, puoi scoprire come utilizzare uml-java-docklet con Maven. Per dimostrare, useremo Maven Archetype per creare rapidamente un progetto Maven. Correre

mvn archetype:generate
In risposta a Scegli un numero o applica filtro, lascia l'impostazione predefinita: premi semplicemente Invio. Sarà sempre "maven-archetype-quickstart". Seleziona l'ultima versione. Successivamente, risponderemo ad alcune domande e finiremo di creare il progetto: UML: dalla teoria alla pratica - 5Maven non è l'oggetto di questo articolo, quindi puoi trovare le risposte alle tue domande su Maven nel Maven Users Center . Nel progetto generato, apri il file di descrizione del progetto, pom.xml, per la modifica. Copiamo il contenuto dalla descrizione dell'installazione di uml-java-docklet in questo file. L'artefatto utilizzato nella descrizione non può essere trovato nel repository Maven Central. Ma quanto segue ha funzionato per me: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. In altre parole, nella descrizione è sufficiente sostituire il groupId da "info.leadinglight" a "com.chfourie" e impostare la versione su "1.0.0". Successivamente, possiamo eseguire i seguenti comandi nella directory con il file pom.xml:

mvn clean install
E

mvn javadoc: javadoc
Se ora apriamo la documentazione generata (explorer target\site\apidocs\index.html), vedremo i diagrammi UML. A proposito, la relazione di implementazione ora viene visualizzata correttamente :)

Conclusione

Come puoi vedere, UML ti consente di visualizzare la struttura della tua applicazione. Ma UML può fare molto di più. Puoi utilizzare UML per descrivere vari processi all'interno della tua azienda o per descrivere il processo aziendale che comprende una funzione che stai scrivendo lavori. Dovrai decidere tu stesso quanto sia utile UML per te personalmente, ma qualunque cosa tu decida, sarà utile trovare il tempo per saperne di più.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION