La trasformazione da UML a Java trasforma le specifiche UML 2.0 in classi Java. È possibile utilizzare la trasformazione per produrre un progetto Java dalle specifiche UML 2.0. Inoltre, è possibile applicare la trasformazione dopo la produzione iniziale per unire i modelli UML aggiornati al codice Java esistente.
La procedura di seguito riportata illustra il modo più semplice per utilizzare la trasformazione Java.
Per trasformare un modello UML in Java:
1. Passare alla prospettiva di modellamento.
2. Nella vista Esplora modello, fare clic con il tastino destro del mouse su un classe UML (ad esempio,
Class1).
3. Fare clic su Trasforma > Esegui trasformazione > da UML2 a Java.
4. Viene aperta la finestra di dialogo Esegui trasformazione. Fare clic sul pulsante Crea contenitore di destinazione.
5. Viene aperta la finestra di dialogo Nuovo progetto Java. Immettere nel campo il Nome progetto, quindi fare clic su Fine.
6. Nella finestra di dialogo Esegui trasformazione, fare clic su Fine.
Il nuovo progetto Java contiene un pacchetto predefinito, contenente la nuova classe Java: Class1.
Inoltre, la trasformazione può eseguire altre varie funzioni più complesse, come ad esempio la sovrascrittura dei nomi senza modificare il modello di origine, la sostituzione dell'oggetto UML con una visualizzazione, l'unione delle modifiche nel modello UML e l'origine Java, oltre alla convalida del modello UML per eventuali problemi di trasformazione.
UML | Java |
Pacchetto | Pacchetto Java con lo stesso nome* |
Pacchetto stereotipato <<prospettiva>> | Ignorato |
Pacchetto con la parola chiave <<Analisi>> o <<analisi>> | Ignorato |
Classe | Classe Java con lo stesso nome* e visibilità |
(Classe) proprietà isLeaf | La classe Java è "final" se vera |
(Classe) proprietà isAbstract | La classe Java è "abstract" se vera |
(Classe) Generalizzazione | La classe Java "estende" la classe superiore specificata |
Implementazione | La classe Java "implementa" l'interfaccia specificata |
(Classe a interfaccia) Realizzazione |
La classe Java "implementa" l'interfaccia specificata |
Interfaccia | Interfaccia Java con lo stesso nome* e visibilità |
(Interfaccia) Generalizzazione | L'interfaccia Java "estende" l'interfaccia specificata |
Enumerazione |
Interfaccia Java con lo stesso nome* e visibilità |
EnumerationLiteral |
Campo Java con lo stesso nome* e visibilità |
Operazione | Metodo Java con lo stesso nome* e visibilità |
(Operazione) proprietà isStatic | Il metodo Java è "static" se vero |
(Operazione) proprietà isAbstract | Il metodo Java è "abstract" se vero |
(Operazione) proprietà isLeaf | Il metodo Java è "final" se vero |
(Operazione) con lo stesso nome della classe | Costruttore Java |
(Operazione) stereotipata <<create>> | Costruttore Java |
Parametro | Parametro Java con lo stesso nome* |
(Parametro) Immetti proprietà | Il parametro Java dispone del tipo specificato, che può essere un'altra classe o un tipo primitivo. |
(Parametro) Proprietà di orientamento | Il metodo Java ha "return <param type>" se impostato su "return", altrimenti aggiunge "<param type> <param name>" alla firma del metodo |
(Parametro) Proprietà molteplicità | Consultare la tabella di seguito riportata contenente le informazioni sulla molteplicità |
Proprietà | Campo Java con lo stesso nome* e visibilità |
(Proprietà) proprietà isStatic | Il campo Java è "static" se vero |
(Proprietà) proprietà isLeaf | Il campo Java è "final" se vero |
(Proprietà) proprietà tipo | Il campo Java dispone del tipo specificato, che può essere un'altra classe o un tipo primitivo. |
(Proprietà) proprietà Molteplicità | Consultare la tabella di seguito riportata contenente le informazioni sulla molteplicità |
* Alcuni caratteri non sono validi negli identificatori Java (come ad esempio lo spazio). La trasformazione Java sostituisce automaticamente i caratteri non validi con un trattino basso (_) per creare un identificatore valido. Questa sostituzione può causare conflitti di nome che impediscono alla trasformazione di generare classi e interfacce duplicate. È possibile utilizzare la funzione di convalida per rilevare questi problemi. Per evitare queste problematiche di sostituzione, rinominare gli elementi o utilizzare la funzione di mappatura per specificare un nome alternativo che non modifica il modello di origine.
Tipo Java per le proprietà e i parametri
Molteplicità UML | Tipo Java generato |
0..1 | Attributo, indicatore o riferimento (ad esempio String) |
1 | Attributo (ad esempio, String) |
N (N > 1) | Matrice (ad esempio, String[]) |
1..*, *, o x..y | Raccolta, consultare la seguente tabella |
Raccolte Java per 1..*, * o x..y molteplicità
Proprietà isOrdered | Proprietà isUnique | Raccolta UML |
Tipo Java generato |
True | True | Insieme ordinato |
java.util.SortedSet |
True | False | Sequenza |
java.util.List |
False | True | Set |
java.util.Set |
False | False | Raggruppamento |
java.util.Collection |
Avanzate
La scheda Avanzate fornisce
alcune opzioni della generazione del codice. Fare clic su Modellamento > Trasformazione
> Configura trasformazioni, selezionare una configurazione UML a Java e selezionare
la scheda Avanzate. La scheda contiene
la casella Genera getter e setter e il gruppo Raccolte.
Quando viene selezionato Genera getter e setter, la trasformazione genera
un campo privato con i metodi getter e setter per ciascuna proprietà UML.
Se isLeaf (valore finale) della proprietà o isReadOnly sono impostati su true, nessun metodo setter viene
generato. Se isDerived della proprietà è true, l'implementazione di setter
sarà vuota.
È possibile specificare le raccolte generate dalla trasformazione UML a Java
nel gruppo Raccolte.
Ad esempio, selezionare "java.util.Vector" da Sequenza e
la trasformazione genera i vettori invece di elenchi. È anche possibile specificare le classi della raccolta
personalizzata immettendo il nome della classe nel menu a discesa. Se si immette "custom.Bag"
nel menu a discesa Raggruppamento, la trasformazione
genera i raggruppamenti invece di raccolte.
Facendo clic su Crea modello di mappatura, la trasformazione Java crea un modello di mappatura, che è un modello a parte che si trova in una risorsa per ciascun elemento trasformabile. La risorsa fa riferimento all'elemento trasformabile di origine e fa riferimento ad esso. Per specificare un nome alternativo per l'elemento di origine, immettere un nuovo nome nella proprietà del nome file della risorsa. Se non si modifica la proprietà del nome del file della risorsa, la trasformazione genera l'elemento con il nome predefinito della risorsa.
Se si specificano nomi alternativi per i pacchetti, tali nomi condizionano tutti i classificatori nel pacchetto (se il classificatore non specifica un nome completo). LA tabella di seguito riportata elenca degli esempi di nomi alternativi.
Origine UML | Mappatura del nome file della risorsa | Java generato |
"Package1" | "" | "Package1" |
"Package2" | "com.ibm.test" | "com.ibm.test" |
"Class1" in Package1 | "" | Package1.Class1 |
"Interface1" in Package2 | "ITestable" | com.ibm.test.ITestable |
"Class2" in Package2 | "com.ibm.test.Testable" | com.ibm.test.Testable |
Per utilizzare un modello di mappatura, completare la seguente procedura:
1. Passare alla prospettiva di modellamento.
2. Nella vista Esplora modello, fare clic su un modello UML.
3. Nella barra di menu, fare clic su Modellamento > Trasforma > Configura
trasformazioni.
4. Creare una nuova trasformazione da UML2 a Java (ad esempio, denominare la trasformazione Utilizza mappatura).
5. Nella pagina Mappatura, fare clic su Utilizza modello di mappatura.
6. Fare clic sul modello di mappatura creato in precedenza, quindi fare clic su Esegui.
Una volta eseguita la trasformazione, quest'ultima utilizza nomi alternativi che sono stati specificati nel modello di mappatura.