|
Ingegneria del Software: gruppo 9Progetto Doclet - JavaToXmiumlJava Mapping |
![]() |
Gli attributi visibility, isRoot, isLeaf e isAbstract, non hanno senso per i tipi primitivi, ma sono obbligatori per il DTD XMI.
Foundation.Core.DataType contiene i seguenti attributi:
Nome Attributo | Breve descrizione | Mappatura per Java - Breve Motivazione |
Foundation.Core.ModelElement.name | Nome del tipo | nome del tipo (String, boolean, int,...) |
Foundation.Core.ModelElement.visibility | (ereditato) | public |
Foundation.Core.GeneralizableElement.isRoot | (ereditato) | true |
Foundation.Core.GeneralizableElement.isLeaf | (ereditato) | true |
Foundation.Core.GeneralizableElement.isAbstract | (ereditato) | false |
Nella colonna che riporta la mappatura Java abbiamo usato le seguenti variabili:
ClassDoc curClass; // ClassDoc descrive una classe nell'API Javadoc
Fondation.Core.Class e Fondation.Core.Interface contengono:
Nome Attributo | Tipo | Breve descrizione | Mappatura in Java - Breve Motivazione |
Foundation.Core.ModelElement.name | * | Nome della classe | curClass.typeName() |
Foundation.Core.ModelElement.visibility | * | Visibilità della classe (public |
private | protected) |
L'attributo visibility prende valore p ublic nel caso in Java la visibilità della classe sia PackagePrivate o Public, prende p rotected nel caso sia Protected e p rivate nel caso sia Private |
Foundation.Core.GeneralizableElement.isRoot | * | Se è la radice | False (abbiamo considerato radice solo la classe object, quindi tutte le altre non possono esserlo) |
Foundation.Core.GeneralizableElement.isLeaf | * | Se è una classe foglia | isLeaf() - Vedi Codice |
Foundation.Core.GeneralizableElement.isAbstract | * | Se è abstract | curClass.isAbstract() |
Foundation.Core.Class.isActive | IC,EC | Questo metodo merita una descrizione approfondita in quanto la sua descrizione è quanto mai ambigua. La nostra interpretazione finale è stata che un processo è attivo quando può essere lanciato come processo autonomo | Check sul fatto che la classe estenda Thread o Runnable - Vedi Codice |
Foundation.Core.Classifier.feature | IC,II | Contiene campi e metodi | Vedi sezioni apposite |
Nota: La colonna Tipo indica a quale tipo di classe o interfaccia ci si riferisce:
Nella colonna che riporta la mappatura Java abbiamo usato le seguenti variabili:
ClassDoc curClass; // ClassDoc descrive una classe nell'API Javadoc
Gli attributi name, visibility, non hanno senso per le generalizzazioni Java, ma sono obbligatorie per il DTD XMI per UML, assumono quindi valori di default
Foundation.Core.Generalization contiene:
Nome Attributo | Breve Descrizione | Mappatura in Java - Breve Motivazione |
Foundation.Core.ModelElement.name | (ereditato) | "" |
Foundation.Core.ModelElement.visibility | (ereditato) | public |
Foundation.Core.Generalization.discriminator | Gruppo di classi a cui appartiene la generalizzazione. | "" - Non è possibile ricavarlo dal codice |
Foundation.Core.Generalization.subtype | Classe figlia | getClassId(curClass) - Vedi Codice |
Foundation.Core.Generalization.supertype | Classe padre | getClassId(curClass.superclass()) - vedi Codice |
Nella colonna che riporta la mappatura Java abbiamo usato le seguenti variabili:
ClassDoc curClass; //
ClassDoc descrive una classe nell'API Javadoc
ClassDoc assocClass; // classe associata
Gli attributi isRoot, is Leaf, is Abstract non hanno senso per le associazioni Java, ma sono obbligatorie per il DTD XMI per UML, assumono quindi valori di default
Foundation.Core.Association contiene:
Nome Attributo | Breve Descrizione | Mappatura in Java - Breve Motivazione |
Foundation.Core.ModelElement.name | Nome dell' associazione | curClass.typeName() + "-" + assocClass.typeName() + "Association" |
Foundation.Core.ModelElement.visibility | Visibilità dell' attributo (public | private | protected) | "Public" |
Foundation.Core.GeneralizableElement.isRoot | (ereditato) | false |
Foundation.Core.GeneralizableElement.isLeaf | (ereditato) | false |
Foundation.Core.GeneralizableElement.isAbstract | (ereditato) | false |
Foundation.Core.Association.connection | Contiene un AssociationEnd | Vedi sotto |
Foundation.Core.Association.connection | Contiene un AssociationEnd | Vedi sotto |
Foundation.Core.AssociationEnd
contiene:
Nome Attributo | Breve Descrizione | Mappatura in Java - Breve Motivazione |
Foundation.Core.ModelElement.name | Nome dell' AssociationEnd | "" |
Foundation.Core.ModelElement.visibility | Visibilità dell' attributo (public | private | protected) | Nel sorgente prende visibilità Private, metre nel destinatario ha la visibilità della classe sorgente. |
Foundation.Core.AssociationEnd.isNavigable | Indica la navigabilità, cioè il senso della freccia(da piazzare verso il target). | Nel Sorgente prende il valore true, metre nel destinatario prende il valore false. |
Foundation.Core.AssociationEnd.isOrdered | Indica se l' associazione è ordinata (da piazzare sul target) | "false" |
Foundation.Core.AssociationEnd.aggregation | Specifica se l' associazione è di tipo
normale, se è un' aggregazione o una composizione (da piazzare verso
il target). i possibili valori sono:
None: associazione semplice o source Aggregate: aggregazione Composite: composizione |
Nel Sorgente prende il valore none, mentre nel Destinatario prende il valore composite. |
Foundation.Core.AssociationEnd.multiplicity | Molteplicità del ruolo | Nel Sorgente prende il valore 1, metre nel Destinatario la molteplicità del campo nella classe sorgente. |
Foundation.Core.StructuralFeature.changeable | (ereditato) | "none" - Possibilità non concessa da Java |
Foundation.Core.StructuralFeature.targetScope | Se il link è a un'istanza o al classifier stesso | "instance" |
Foundation.Core.AssociationEnd.type | Tipo di classifier connesso (non può essere un'interfaccia) | Nel Sorgente prende il tipo della classe sorgente, mentre nel Destinatario, prende il tipo della classe destinazione. |
Per trovare le informazioni
necessarie abbiamo utilizzato la variabile delle API Javadoc:
Nella colonna che riporta la mappatura Java abbiamo usato le seguenti variabili:
ClassDoc curClass; //
ClassDoc descrive una classe nell'API Javadoc
FieldDoc curField; // FieldDoc descrive un campo nell'API Javadoc
Foundation.Core.Attribute contiene:
Nome Attributo | Breve Descrizione | Mappatura in Java - Breve motivazione |
Foundation.Core.ModelElement.name | Nome dell' attributo | curField.name() |
Foundation.Core.ModelElement.visibility | Visibilità dell' attributo (public | private | protected) | L'attributo visibility prende valore public nel caso in Java la visibilità della classe fosse PackagePrivate o Public, prende protected nel caso fosse Protected e p rivate nel caso fosse Private |
Foundation.Core.Feature.ownerScope | Specifica se la feature è globale per
il classifier oppure ce n'è una copia per ogni istanza
Si mette Classifier se è globale o Instance se ogni istanza ha il suo valore della feature |
curField.isStatic() ? "classifier" : "instance" |
Foundation.Core.StructuralFeature.multiplicity | Il numero possibile di dati per un attributo che possono esserci in un'istanza (scalari: 1..1) | "1" | "*" - Vedi Codice |
Foundation.Core.StructuralFeature.changeable | Se il valore può essere creato dopo la creazione dell'oggetto: assume i valori None se nessuna restrizione è indicata, Frozen se non può essere modificato, AddOnly se i valori possono essere aggiunti ma non cambiati (solo vettori) | curField.isFinal() ? "none" : "frozen" |
Foundation.Core.StructuralFeature.targetScope | Descrive se il destinatario di ogni link è un istanza o un Classifier | "instance" - In Java si hanno sempre istanze di un oggetto. |
Foundation.Core.Attribute.initialValue | Valore di inizializzazione dato all'atto della creazione | vuoto (non è possibile prenderlo in Java) |
Foundation.Core.Feature.owner | Il classifier a cui appartiene l'attributo | getClassId(curClass) - Vedi Codice |
Foundation.Core.StructuralFeature.type | E' il tipo di dato dell'attributo (class o datatype) | getDatatypeId() - Vedi Codice |
Nella colonna che riporta la mappatura Java abbiamo usato le seguenti variabili:
ClassDoc curClass; //
ClassDoc descrive una classe nell'API Javadoc
MethodDoc curMet; // MethodDoc descrive un metodo nell'API Javadoc
Foundation.Core.Operation contiene:
Nome Attributo | Breve Descrizione | Mappatura in Java - Breve Motivazione |
Foundation.Core.ModelElement.name | Nome dell'operazione | curMet.name() |
Foundation.Core.ModelElement.visibility | Visibilità dell'operazione (public | private | protected) | L'attributo visibility prende valore Public nel caso in Java la visibilità della classe fosse PackagePrivate o Public, prende Protected nel caso fosse Protected e Private nel caso fosse Private |
Foundation.Core.Feature.ownerScope | (ereditato) | curMet.isStatic() ? "classifier" : "instance" |
Foundation.Core.BehavioralFeature.isQuery | Se l'operazione restituisce un valore (1) | isFun(curMet) ? "true" : "false" - Vedi Codice |
Foundation.Core.Operation.specification | Una descrizone dell'effetto della funzione | vuoto |
Foundation.Core.Operation.isPolymorphic | Se c'è un overloading (2) | se c'è overloading "true", altrimenti "false" |
Foundation.Core.Operation.concurrency | Cosa succede con chiamate concorrenti al metodo.
L'attributo ha valore Sequential se l'integrità del sistema non può essere garantita, ha valore Guarded se ha una logica a semafori (una viene eseguita, le altre sono bloccate), infine ha il valore Concurrent se si possono avere esecuzioni concorrenti. |
curMet.isSynchronized() ? "guarded" : "sequential" - Unici metodi supportati in Java. |
Foundation.Core.GeneralizableElement.isAbstract (extension) | Se è abstract | curMet.isAbstract() |
Foundation.Core.Feature.owner | La classe a cui appartiene il metodo | getClassId(curClass) - vedi Codice |
Foundation.Core.BehavioralFeature.parameter | Contiene i parametri | Vedi sezione parametri |
Nella colonna che riporta la mappatura Java abbiamo usato le seguenti variabili:
ClassDoc curClass; //
ClassDoc descrive una classe nell'API Javadoc
FieldDoc curField; // FieldDoc descrive un campo nell'API
Javadoc
Parameter curParam; // Parameter
descrive un parametro nell'API Javadoc
Foundation.Core.Parameter contiene:
Nome Attributo | Breve Descrizione | Mappatura in Java - Breve Motivazione |
Foundation.Core.ModelElement.name | Nome del parametro | curParam.name() |
Foundation.Core.ModelElement.visibility | (ereditato) | "Private" |
Foundation.Core.Parameter.defaultValue | Valore di default del parametro | vuoto (non esiste in Java) |
Foundation.Core.Parameter.kind | Specifica che tipo è richiesto, cioè:
in se è di sola lettura, out se è a sola scrittura, inout se in lettura/ scrittura e infine return se valore di ritorno della chiamata |
In Java hanno senso solo due valori: "in" per i parametri nomali e "return" per il valore di ritorno. |
Foundation.Core.Parameter.type | E' il tipo di dato del parametro (class o datatype) | getDatatypeId() - Vedi Codice |
Libri
Titolo | Autore | Casa Editrice | Data pubbl. | Breve descrizione |
UML Distilled | Martin Fowler | Addison-Wesley | 97 | Ottimo manuale UML |
Documenti
Titolo | Autore | Origine | Ultima rev. | Breve descrizione |
Mapping Object Models to Java | Rational Software Corporation | Documentazione di Rational Rose98 | 08/10/97 | Note sulla mappatura di UML in Java utilizzata dagli sviluppatori della Rational |
On-line
Titolo | Autore | Sito | Breve descrizione |
UML Semantics | OMG | http://www.omg.org | Metamodello UML11k |
UML Notation Guide | OMG | http://www.omg.org | Manuale di UML 1.1 |
An Investigation of XML with Emphasis on
Extensible Linking Language (XLL) |
Justin Ludwig | http://pages.wooster.edu/ludwigj/
xml/thesis.html |
Introduzione a XML, XSL, XLL, DOM |
XML Metadata Interchange (XMI) | OMG | http://www.omg.org | Proposal di XMI |
Introduction to XML | Lars Marius Garshol | http://www.stud.ifi.uio.no/~larsga/
download/xml/xml_eng.html |
Breve introduzione a XML |
How to Write
Doc Comments for Javadoc |
Doug Kramer | http://java.sun.com/products/jdk/
javadoc/writingdoccomments.html |
Indicazione per la creazione di Tag personalizzati e non. |
Pagina Realizzata dal Gruppo 9 / Corso di Ingegneria del Software / Dipartimento di informatica / Università di Bologna