Relazioni di associazione UML

La trasformazione trasforma relazioni di associazione in variabili di membro nel codice C++. Per associazioni di non composizione, la trasformazione aggiunge il simbolo (*) al qualificatore tipo dell'attributo. Se si specifica una molteplicità e si imposta ad un determinato numero (con le indicazioni dell'intervallo minimo e massimo), la trasformazione aggiunge la specifica di una matrice all'attributo.

Per generare il codice, la trasformazione utilizza le proprietà di fine associazione di seguito riportate: 

Proprietà

C++

Nome

Crea una nuova variabile di membro con il nome specificato (esegue la convalida del nome)

Visibilità

Determina la visibilità della variabile del membro generato

Relazioni di generalizzazione UML

Per impostazione predefinita, la trasformazione genera un'eredità pubblica per la destinazione della relazione di generalizzazione UML. La trasformazione include automaticamente il file di intestazione per la destinazione nel file di intestazione generato. la trasformazione C++ supporta più eredità.  

E' possibile applicare lo stereotipo cpp_generalization per specificare la visibilità (pubblica, protetta, privata e predefinita) della relazione di generalizzazione data.  

Relazioni di "utilizzo" UML

In genere, una relazione di "utilizzo" indica il riferimento ad una classe o enumerazione. Per impostazione predefinita, una relazione di utilizzo viene trasformata in un riferimento successivo nel file di intestazione generato e un orientamento "includi" nel file di corpo.  

Se si applica lo stereotipo cpp_dependency e si imposta il relativo attributo isInclusionInHeader su true, la trasformazione genera l'indicazione di inclusione nell'intestazione.  

E' possibile utilizzare la relazione "utilizzo" per indicare le relazioni "friendship" tra le classi applicando lo stereotipo cpp_friend alla relazione. La trasformazione include la clausola "friend" nel file di intestazione generato (ad esempio "friend classe Classe1"). La trasformazione non genera una matrice corpo per le funzioni "friend" e aggiunge automaticamente una dipendenza alla classe friend del codice generato.  

Può essere generato un percorso di inclusione con un tag <<TBD ...>> simile al seguente: 

#include "../<<per corso progetto corrente TBD>>/..." 

Probabilmente, questo tag viene generato poiché la trasformazione utilizza un elemento da un modello UML diverso. E' necessario sostituire il tag <<TBD ..>> con il percorso del progetto corrente nel file di riferimento.

Parametri del modello UML

La trasformazione trasforma una classe UML con i parametri di modello in una classe di modello.

Relazioni di "bind" UML (classi di cui è stata eseguita l'istanza)

La trasformazione considera una classe UML con una relazione di "bind" con una destinazione di Class1 come istanza della classe del modello Class1. la trasformazione utilizza la sostituzione del parametro specificato dalla relazione di bind per risolvere i parametri formali nei parametri correnti.

Viene visualizzata un'avvertenza se una classe dispone di più di una relazione di "bind". Se una classe dispone di più di una relazione di bind, la trasformazione utilizza la prima per generare il codice.

La trasformazione aggiunge i tipi di dati dei parametri correnti nell'elenco di inclusione delle classi di cui è stata eseguita.

La figura di seguito riportata illustra la relazione di istanza supportata dalla trasformazione, in cui vengono stabiliti i parametri di una classe ed viene eseguita l'istanza di un'altra classe.

La trasformazione non supporta modelli di utilizzo più complessi di classi di modello, comprese le variabili statiche nei modelli e nelle classi di cui sono stabiliti i parametri utilizzate come parametri formali.

Inizio pagina

Termini di utilizzo | Feedback
(C) Copyright IBM Corporation 2004. Tutti i diritti riservati.