Durante lo sviluppo del software, man mano che i progetti aumentano in dimensioni e complessità, strumenti di progettazione e documentazione efficaci diventano fondamentali. Unified Modeling Language (UML), un linguaggio di modellazione standardizzato, fornisce agli sviluppatori un modo potente per descrivere, costruire e visualizzare sistemi software. Tra questi, il diagramma delle classi UML, in quanto uno degli strumenti fondamentali della progettazione orientata agli oggetti (OOD), gioca un ruolo fondamentale.
I diagrammi delle classi UML mostrano graficamente le classi nel sistema, le relazioni tra loro e le strutture interne delle classi, come attributi (campi) e metodi (funzioni). Questi diagrammi non solo aiutano gli sviluppatori a comprendere l'architettura complessiva del sistema, ma facilitano anche la comunicazione e la collaborazione nel lavoro di squadra, garantendo che tutti i membri abbiano una comprensione comune del progetto. Oggi impareremo il diagramma delle classi UML .
Cos'è un diagramma di classi? Quali sono le regole di disegno per i diagrammi di classe? Come disegnare il diagramma delle classi? Per facilitare l'apprendimento di tutti, l'editor lo ha perfezionato e riassunto qui. Spero che dopo averlo letto tu possa avere una conoscenza di base dei diagrammi di classe.
Il diagramma delle classi mira principalmente a riflettere la struttura (attributi, operazioni) delle classi e la relazione tra le classi. Descrive la struttura del sistema software ed è un metodo di modellazione statica. I diagrammi di classe vengono utilizzati per descrivere concetti significativi nel sistema, inclusi concetti specifici, concetti astratti, concetti di implementazione, ecc. Sono astrazioni di cose nel mondo reale. Lo scopo principale dei diagrammi di classe è modellare il vocabolario del sistema, modellare semplici collaborazioni e modellare lo schema logico del database.
I diagrammi delle classi sono riassunti come composti principalmente da due parti: le classi e la relazione tra le classi. La definizione di una classe è mostrata nella figura seguente. Consiste principalmente di tre parti, che sono il nome della classe. gli attributi della classe, Il metodo della classe corrisponde al contenuto delle tre partizioni in figura.

Nome della classe : la casella rettangolare in alto nell'immagine è il nome della classe. Se il carattere è corsivo, viene rappresentato come una classe astratta
Attributi della classe : l'area sotto il nome della classe
Metodi della classe : la parte inferiore nella figura
* Spiegazione dei simboli : "+", "-" e "#" davanti agli attributi e ai metodi indicano i livelli di accesso. Questi simboli sono spiegati di seguito .
+: pubblico, pubblico, visibile a tutte le classi
-: privato, privato, disponibile solo per la classe stessa
#: protetto, protetto, visibile ai discendenti di questa classe
~: pacchetto, pacchetto, visibile solo ad altre classi dichiarate nello stesso pacchetto
=: indica il valore predefinito
Sottolineatura: statico
Corsivo: astratto (nota che l'astrazione può anche essere espressa racchiudendola tra due parentesi angolari, come - <<Sono una classe o interfaccia astratta>>)
Prima dei due punti c'è il nome del metodo/della variabile (distinto dalla presenza o dall'assenza di parentesi) e dopo i due punti c'è il parametro di ritorno/tipo di variabile (distinto dalla presenza o dall'assenza di parentesi). significa che il metodo restituisce void (alcuni usano anche: void per indicare return void)
Le relazioni tra classi comprendono principalmente 6 relazioni: generalizzazione (ereditarietà), dipendenza, associazione, aggregazione, combinazione e implementazione uno per uno qui sotto.

1. Relazione di generalizzazione La relazione di generalizzazione è una relazione di ereditarietà. La sottoclasse eredita tutti i comportamenti e gli attributi della classe genitore. La sottoclasse può aggiungere nuove funzioni o riscrivere le funzioni della classe genitore. Metodo di rappresentazione: triangolo cavo + linea continua, freccia che punta alla classe genitore

2. Dipendenze
Una relazione di dipendenza indica che una classe utilizza (dipende da) i servizi o le informazioni di un'altra classe. Esiste una dipendenza tra due classi quando le modifiche apportate a una classe influiscono su un'altra classe. In generale, le dipendenze sono sempre unidirezionali e non dovrebbero esserci dipendenze bidirezionali. Metodo di rappresentazione: parentesi angolari + linea tratteggiata

3. Rapporto associativo
Un'associazione è una relazione di proprietà che rende una classe consapevole delle proprietà e dei metodi di un'altra classe. Incarna una forte relazione di dipendenza di diversi tipi, come quella tra me e i miei amici. Questa relazione è più forte della dipendenza. Non c'è contingenza nelle relazioni di dipendenza e la relazione non è temporanea, ma è generalmente a lungo termine.
Le relazioni di associazione sono suddivise in associazioni unidirezionali o associazioni bidirezionali e possono anche avere molteplicità (le associazioni uno-a-molti possono avere due frecce o nessuna freccia e le associazioni unidirezionali hanno una freccia). Metodo di rappresentazione: parentesi angolari + linea continua, la freccia punta al proprietario

4. rapporto di aggregazione
Il rapporto di aggregazione è un tipo di rapporto di associazione, che rappresenta un rapporto di "proprietà" "debole". È il rapporto tra il tutto e la parte, e la parte può esistere indipendentemente senza il tutto. Ad esempio, il rapporto tra l'auto e il pneumatico è la relazione tra il tutto e la parte, e il pneumatico è separato dal tutto. L'auto può ancora esistere da sola. Metodo di rappresentazione: diamante cavo + linea continua, il diamante punta al tutto

5. Rapporto di combinazione
Il rapporto di combinazione è anche un tipo di rapporto di associazione. È un rapporto più forte del rapporto di aggregazione. È il rapporto tra il tutto e l'individuo, ma l'individuo non può esistere da solo senza il tutto. Ad esempio, la relazione tra un'azienda e un dipartimento è un tutto e una parte. Senza un'azienda non esisterebbe alcun dipartimento. Richiede che l'oggetto che rappresenta il tutto in una normale relazione di aggregazione sia responsabile del ciclo di vita dell'oggetto che rappresenta la parte. Metodo di rappresentazione: diamante solido + linea continua

6. Relazione di implementazione La relazione di implementazione è una relazione tra una classe e un'interfaccia, indicando che la classe è la realizzazione di tutte le caratteristiche e i comportamenti dell'interfaccia. Metodo di rappresentazione: triangolo cavo + linea tratteggiata

Per aiutarti a comprendere meglio le sei relazioni tra le classi, di seguito vengono utilizzati degli esempi per aiutarti nell'apprendimento e nella digestione.
1. Diagramma delle classi automobilistiche

Diagramma classi UML automobilistiche
Descrizione del diagramma delle classi automobilistiche:
Esiste una relazione di "realizzazione" tra automobili, automobili e biciclette, che è rappresentata da una linea tratteggiata con una freccia cava;
Il rapporto tra auto e SUV è un rapporto generalizzato, rappresentato da una linea continua con una freccia cava;
Esiste una relazione di "combinazione" tra l'auto, il motore e gli pneumatici, rappresentata dalla linea continua della freccia di diamante solido;
Gli studenti hanno bisogno della bicicletta per andare a scuola e con la bicicletta esiste un rapporto di “dipendenza”, rappresentato da una linea tratteggiata con una freccia.
Esiste un rapporto di “aggregazione” tra studenti e classi, rappresentato da una linea continua con una freccia di diamante cava;
Il rapporto tra studenti e carte d'identità è “associativo”, rappresentato da una linea continua con una freccia appuntita;
2. Diagramma classi UML animali
