E' possibile applicare lo stereotipo cpp_namespace a un modello. E' possibile utilizzare l'attributo dello stereotipo NamespaceName per specificare lo spazio dei nomi per tutti gli elementi nel modello.
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.
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"
E' 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".
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.
Le classi possono avere classi ed enumerazioni nidificate. 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.
Inoltre, le classi e le enumerazioni nidificate 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