UML (Unified Modeling Language) è uno standard internazionale per la modellazione di sistemi software complessi. Consente di rappresentare visivamente entità, relazioni e dinamiche all'interno di un progetto. Esistono diversi tipi di diagrammi UML. Di seguito uno schema raffigurante i principali tipi di diagrammi:
Modellazione Strutturale: Mostra le entità principali del sistema e le loro relazioni statiche. Include elementi come classi, interfacce, componenti, e nodi.
Tipi di Diagrammi:
Vista Statica (Class Diagram): Rappresenta le classi del sistema, i loro attributi, metodi e relazioni statiche.
Vista Dinamica (Object Diagram): Fornisce uno snapshot di istanze di classi (oggetti) in un momento specifico, illustrando la loro struttura e interazioni.
Diagrammi di Implementazione:
Component Diagram: Mostra come le componenti software interagiscono.
Deployment Diagram: Illustra la distribuzione fisica delle componenti su hardware.
Oggetti:
Sono istanze di una classe.
Incapsulano dati e operazioni, rendendo i dati accessibili solo tramite metodi dedicati (incapsulamento).
Operazioni e Metodi:
Le funzioni usate nell'analisi vengono chiamate operazioni.
Durante la progettazione diventano metodi.
Incapsulamento:
Nasconde i dettagli interni dell'oggetto, esponendo solo un'interfaccia pubblica.
class Conto { - numero: int - correntista: String - saldo: double + create(): void + deposito(importo: double): void + prelievo(importo: double): void }
Mostrata come un rettangolo suddiviso in tre sezioni:
Relazioni tra classi e istanze:
Cliente ---- 1 ---- * ---- Ordine Ordine ---- 1 ---- * ---- LineaOrdine class Cliente { + nome: String + indirizzo: String } class Ordine { + numero: int + creaOrdine(): void } class LineaOrdine { + quantità: int }
Descrive una connessione tra due o più classi.
Polimorfismo e Classi Astratte:
abstract class Figura { + area(): double } class Rettangolo extends Figura { + lunghezza: double + larghezza: double + area(): double { return lunghezza * larghezza; } } class Cerchio extends Figura { + raggio: double + area(): double { return Math.PI * Math.pow(raggio, 2); } } // Esempio di Polimorfismo Figura f1 = new Rettangolo(5, 10); Figura f2 = new Cerchio(7); console.log(f1.area()); // Output: 50 console.log(f2.area()); // Output: 153.94
Il polimorfismo permette a oggetti di classi diverse di condividere lo stesso metodo (stessa segnatura) con implementazioni differenti.
Le classi astratte definiscono una struttura comune che deve essere implementata nelle sottoclassi.
Class Diagram:
Mostra classi e relazioni statiche tra esse.
Usato per descrivere l’architettura del sistema a livello alto.
Object Diagram:
Snapshot del sistema a runtime, mostra istanze di classi (oggetti) e i loro valori specifici.
Incapsulamento:
Nasconde i dettagli interni dell'oggetto, esponendo solo un'interfaccia pubblica.
Definisce quante istanze di una classe possono essere associate a un’altra. Esempi:
0..1: Zero o una istanza.
*: Zero o più istanze.
1..*: Almeno una istanza.
1..3,7: Tra una e tre istanze, oppure esattamente sette.
La navigabilità indica se una classe può accedere direttamente agli oggetti associati di un’altra classe.
UML offre numerosi vantaggi per lo sviluppo software, tra cui:
Draw.io è uno strumento potente per chiunque desideri progettare software in modo chiaro ed efficiente.
Esplora draw.io