Design Patterns – Concetti base di UML, diagrammi di classe

Concetti basi di UML per comprendere i diagrammi di classe che descrivono i Design Patterns.

UML, Unified Modeling Language è un linguaggio di modellazione e di specifica basato sul paradigma orientato agli oggetti. L’obiettivo di questo articolo non è fornire una spiegazione completa del linguaggio UML, ma di fornire i concetti base di UML per comprendere i diagrammi di classe che descrivono i Design Patterns.

Nell’immagine sono riportati alcuni esempi.

Diagramma di classe

Ogni blocco rappresenta una classe, astratta o concreta. In ogni blocco le proprietà e i metodi della classe sono divisi in due sezioni separate. I metodi si distinguono anche per la presenza delle parentesi. Nell’esempio sopra riportato si sono omessi proprietà e attributi perché non rilevanti ai fini dello scopo di questo articolo.

La linea tratteggiata con in fondo una freccia con punta chiusa sta ad indicare una relazione di implementazione (o realizzazione). Ovvero quando una classe implementa un’interfaccia. La freccia parte dalla classe concreta e punta all’interfaccia. Nel’esempio MyInterface è l’interfaccia e InterfaceImplementation1 e InterfaceImplementation2 due implementazioni.

La linea continua con in fondo una freccia con punta chiusa sta ad indicare una relazione di ereditarietà (o generalizzazione). La freccia parte sempre dalla sottoclasse e arriva alla classe base. Nell’esempio SuperClass è la classe base e ClassA e ClassB ereditano da questa.

La freccia tratteggiata con la freccia alla fine rappresenta una relazione di dipendenza. Ad esempio quando una classe chiama un metodo di un’altra. La freccia va dalla classe “chiamante” a quella che viene chiamata.

Spesso in corrispondenza della freccia si trova indicato esplicitamente il tipo di dipendenza, ad esempio <<create>> o <<uses>>.

Una linea continua con in fondo un rombo rappresenta un’aggregazione. Ovvero indica che una classe contiene uno (o più) oggetti dell’altra. Si parla di relazione whole-part, ovvero in cui c’è una “classe tutto” e una “classe parte”. La freccia parte sempre dalla classe che è referenziata dall’altra, ovvero parte dalla “classe parte” e va verso la “classe tutto”. Nell’esempio la “classe tutto” + la classe Museo e le “classi parte” sono Dipinto e Statua.

Simile all’aggregazione è la composizione. La differenza risiede unicamente nel fatto che in questo caso le “classi parte” non hanno senso di esistere senza la “classe tutto”. Ad esempio immaginate come “classe tutto” una classe CorpoUmano e come “classi parte”, le classi Testa e Braccio.

Nel caso di aggregazione e composizione, ai due estremi della freaccia può essere indicata la molteplicità, ovvero il numero di istanze di una classe che possono essere associate ad una singola istanza dell’altra classe. Nell’esempio ad un’istanza di Animale possono essere associate da 2 a 4 istanze di Zampe, mentre l’istanza di Zampe può essere associata ad una sola istanza di Animale. Non approfondiremo in questo articolo tutte le possibili notazioni relative alla molteplicità.