Modelli UML

È possibile applicare lo stereotipo cpp_namespace a un modello. È possibile utilizzare l'attributo dello stereotipo NamespaceName per specificare lo spazio dei nomi per tutti gli elementi nel modello.

Pacchetti UML

I pacchetti UML diventano cartelle nel progetto di destinazione (e dunque cartelle nel file system). La trasformazione posizione gli elementi del pacchetto nella cartella del pacchetto.

La trasformazione ignora i pacchetti contrassegnati come pacchetti di analisi. Un utente contrassegna un pacchetto come pacchetto di analisi applicando lo stereotipo <<prospettiva>> o applicando una parola chiave "analisi" o "Analisi".

Come per il modello, è possibile applicare lo stereotipo cpp_namespace a un pacchetto per specificare lo spazio dei nomi per tutti gli elementi nel pacchetto. La trasformazione al momento non supporta gli spazi dei nomi nidificati. Lo spazio dei nomi specificato all'interno del pacchetto sostituisce lo spazio dei nomi specificato su un pacchetto esterno.

Se due pacchetti UML hanno lo stesso nome allo stesso livello di modello, la trasformazione crea solo una cartella nel file system e posizione il contenuto di entrambi i pacchetti UML in quella cartella.

Classi UML

Per le classi UML, la trasformazione genera una coppia di file: un file di intestazione e un file di corpo. Se necessario, la trasformazione converte il nome della classe in conformità alle regole C++ e assicura che il nome sia unico. Il file di corpo contiene sempre l'istruzione di inclusione per il file di intestazione. Per impostazione predefinita, il file di intestazione generato ha il nome file <ClassName>.h e il file di corpo generato ha il seguente nome file <ClassName>.cpp. 

Le relazioni di generalizzazione e associazione condizionano la generazione del codice. Per ulteriori informazioni, consultare le sezioni "Relazioni di associazione UML" e " Relazioni di generalizzazione UML"

È possibile applicare i seguenti stereotipi alle classi UML:

·         cpp_struct: questo stereotipo genera la struttura C++ invece di una classe.

·        cpp_union: questo stereotipo genera un'unione C++ invece della classe C++. Il profilo C++ consente a un'unione nidificata di essere anonima. Per impostazione predefinita, non sono generate operazioni standard per le unioni.

·        cpp_typedef: questo stereotipo genera typedef C++  invece di classi C++. Per specificare la firma del tipo che sta per essere definito, utilizzare l'attributo dello stereotipo "ImplementationType".

Enumerazioni UML

La trasformazione trasforma l'enumerazione UML in C++ "enum". Il nome dell'enumerazione C++ proviene dall'enumerazione UML. Se necessario, la trasformazione converte il nome dell'enumerazione in conformità alle regole C++ e assicura che il nome sia unico. La trasformazione genera attributi UML come attributi C++ e applica i valori predefiniti al modello.

A differenza delle classi UML, la trasformazione genera solo il file di intestazione per le enumerazioni.

Interfacce UML

La trasformazione C++ trasforma le interfacce UML in classi C++. L'elaborazione delle interfacce è simile all'elaborazione delle classi UML escluse le operazioni UML generate come metodi C++ virtuali. L'elaborazione delle operazioni standard (costruttore predefinito, copia del costruttore, decostruttore ed operatore di assegnazione) è la stessa per le interfacce come per le classi.

Classi UML nidificati, enumerazioni e interfacce

La classi possono avere le classi nidificate, enumerazioni e interfacce. La trasformazione genera gli oggetti nidificati similmente alle relative controparti non nidificate. Tuttavia, la trasformazione non crea file di intestazione e di corpo a parte per gli oggetti nidificati, ma aggiunge ai file di intestazione e corpo la classe che li contiene.

Gli oggetti nidificati presentano le seguenti differenze:

·         La visibilità degli elementi nidificati viene tracciata nei relativi parent

·         Le istruzioni di inclusione per gli elementi nidificati sono aggiunte per includere le istruzioni della classe che le contengono

·         I corpi dell'operazione per gli elementi nidificati dispongono di un prefisso con i nomi delle classi che li contengono

·         Inoltre, le definizioni degli attributi statici per gli elementi nidificati includono i nomi delle classi che le contengono

Inizio pagina

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