Stereotipo (UML)
# Stereotipo (UML)

Nel linguaggio di modellazione object-oriented UML, uno stereotipo è una estensione di un costrutto del linguaggio standard. Gli stereotipi rappresentano uno dei meccanismi fondamentali per la definizione di versioni specializzate di UML per particolari contesti, ovvero di Profili UML. Lo stereotipo può estendere il significato dell'elemento di modello esteso in diversi modi.

## Rappresentazione grafica

In generale, gli stereotipi appaiono nei diagrammi UML come etichette testuali fra parentesi angolari ("<<" e ">>", talvolta rese graficamente con "«" e "»"). Negli Use Case Diagram UML, per esempio, le relazioni include e extend appaiono graficamente come dipendenze stereotipate. Questa notazione comunica al lettore che c'è in gioco una relazione di dipendenza e che c'è dell'"altro da sapere" sulla natura di questa dipendenza, ovvero le ulteriori informazioni che il metamodello associa agli stereotipi <<include>> e <<extend>>.

Qualsiasi elemento di modello può essere "stereotipato". UML prevede che sia possibile definire, per gli elementi stereotipati, una rappresentazione grafica che li distingua da quelli standard. Per esempio, in UML le interfacce sono classi con stereotipo <<interface>>, e hanno una rappresentazione grafica specializzata (il cosiddetto "leccalecca").

## Definizione formale

A uno stereotipo possono essere associati tagged value specifici e vincoli (constraint) specifici. Si intende che qualsiasi elemento di modello venga "stereotipato" usando quel particolare stereotipo acquisirà i tagged value corrispondenti e sarà soggetto ai vincoli definiti per lo stereotipo.

Formalmente, poiché i tagged value sono gli attributi degli elementi del metamodello, una istanza stereotipata di una metaclasse è in effetti una istanza di una sottoclasse della metaclasse originaria. Per esempio, ogni classe in un modello UML è una istanza della metaclasse Class. Ogni classe marcata con lo stereotipo <<interface>> è istanza di una metaclasse che è una sottoclasse di Class. Ovvero, una interfaccia è una classe, ma di un tipo particolare.

Il metamodello UML definisce formalmente il concetto di stereotipo mettendolo in relazione con altri tipi di elementi di modello . Da questa definizione formale si evincono che gli stereotipi possono essere posti in due relazioni fra di loro: generalizzazione e dipendenza. Non è viceversa possibile creare associazioni fra stereotipi, in quanto non sono classificatori (ovvero, tra l'altro, non sono direttamente istanziabili).

