SOA
Service Oriented Architecture
Focus is set on Web services
MDA
Model Driven Architecture
Framework for model-driven deve (more)
SOA
Service Oriented Architecture
Focus is set on Web services
MDA
Model Driven Architecture
Framework for model-driven development
QVT
Query/Views/Transformations
Upcoming standard for model-to-model transformations from OMG
MOF2Text
MOF Model to Text Transformations
Upcoming standard for model-to-text transformations from OMG
(less)
Sample Ad Advertise your business on myplick. Only $2.00 a month.
Comments:
Notes:
Slide 1: Java e UML
Corrispondenza Semantica tra Diagrammi di Classe e Codice Java
Autore: Andrea Gini Data: 17 novembre 2003
Slide 2: Parte I
Diagrammi di Classe
Slide 3: Sintassi Differente
Stessa Semantica
Slide 4: Classi, Interfacce, Metodi e Attributi
Esiste una corrispondenza uno a uno tra gli elementi del diagramma e le dichiarazioni presenti nel codice
Slide 5: Classe Metodi e Attributi
public class SchedaAnagrafica { private String nome; private String cognome; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getCognome() { return cognome; } public void setCognome(String cognome) { this.cognome = cognome; } }
Sche daAnagrafica -nome:String -cognome:String +getNome():String +setNome(nome:String):void +getCognome():String +setCognome(cognome:String):void
Slide 6: Modificatori
Ese mpioM odificatori -attributoPrivato:int #attributoProtected:int +attributoPublic:int +attributoStatic:int -metodoPrivato:void #metodooProtected:void +metodoPublic:void +metodoStatic:int
• Public: Libero Accesso • Protected: Accessibile dalle Sottoclassi • Private: Accessibile solo all’interno della classe • Static: Accessibili anche senza creare istanze
Slide 7: Classi Astratte e Metodi Astratti
• Una Classe Astratta contiene metodi privi di implementazione +metodoAstratto:void • Per questa ragione non +metodoConcreto:void può essere istanziata • Il corsivo permette di distinguere le parti astratte da quelle concrete
ClasseAstratta
Slide 8: Interfacce
interface Pesabile +unitaDiMisura:String +getPeso():int
public interface Pesabile { public static String unitaDiMisura; public int getPeso(); }
Slide 9: Relazioni di Ereditarietà e Realizzazione
Anche in questo caso la relazione tra diagrammi e codice è di tipo uno a uno
Slide 10: Ereditarietà
EssereUmano
public abstract class EssereUmano { .... } public class Donna extends EssereUmano { .... }
Donna Uomo
public class Uomo extends EssereUmano { .... }
Slide 11: Realizzazione
interface MediaPlayer
Nota: L’ereditarietà multipla tra interfacce permette di porre in essere esempi di ereditarietà a diamante
interface MediaRecorder
+play:void +stop:void +pause:void +fastForward:void +rewind:void
+record:void
Le ttore DVD
Vide oRe gistratore
Re gistratore DVD
Slide 12: Associazione
Una Associazione rappresenta la possibilità che un’istanza ha di inviare un messaggio ad un’altra istanza In UML viene rappresentata con una freccia, in Java viene implementata tipicamente con un reference
Slide 13: Esempio di Associazione
public class Automobile {
Automobile
private Motore motore;
-motore:Motore +accendi:void
public void accendi() { motore.inserisciMiscela(); motore.accendiCandele(); } }
M otore
public class Motore { public void inserisciMiscela(); public void accendiCandele(); }
+inserisciMiscela:void +accendiCandele:void
Slide 14: Dipendenza
La Dipendenza indica che un determinato oggetto può, in certe circostanze, chiamare i metodi di un altro pur senza possederne un’istanza La classe dipendente presuppone l’esistenza della classe da cui dipende. Non vale il viceversa In UML la dipendenza viene rappresentata con una freccia tratteggiata. In java tipicamente l’oggetto dipendente riceve un’istanza dell’oggetto da cui dipende come argomento di una chiamata a metodo
Slide 15: Dipendenza
public class Automobile { public void percorri(TrattoPercorribile p) { .... } }
Automobile Viaggia Su +percorri:void
interface TrattoPercorribile
Nota: L’automobile dipende dalle strade (senza strade l’automobile non avrebbe senso di esistere). Al contrario le strade esistono indipendentemente dall’automobile
Strada
Ste rrato
Slide 16: Aggregazione
L’Aggregazione rappresenta un’associazione uno a molti In UML l’aggregazione viene rappresentato con una freccia con la punta a diamante; in Java viene implementata con un array dinamico tipo “Vector”
Slide 17: Esempi di Aggregazione
Portafoglio Banconota -valore:double -valuta:String
Bibliote ca
interface Libro
Slide 18: Composizione
Una Composizione è una relazione uno a molti che implica una forma di esclusività La distruzione dell’oggetto che rappresenta il “tutto” provoca la distruzione a catena delle “parti”
Slide 19: Esempi di Composizione
Automobile -motore:Motore 4 interface Ruota
M otore 4..8
Cilindro
Slide 20: Differenza tra Composizione e Aggregazione
La Composizione presuppone una condizione di esclusività
Gommista 0..* interface Ruota Automobile 4
Slide 21: Esempio 1
incoming Viaggio Tragitto interface TrattoPercorribile outcoming
Ste rrato
Strada
interface Segnalazione
Autostrada -pedaggioAlChilometro:dobule
StradaStatale Se gnale Stradale
Pubblicita
Slide 22: Esempio 2
Automobile M otore interface Carburante
M otore Be nzina
interface CarburantePerBenzina
CombustibileFossile
interface CarburanteDiesel
M otore Die se l
Be nzina
Gasolio
EcoDie se l
OlioDiColza
Slide 23: Parte II
Diagrammi di Sequenza
Slide 24: Semantica Dei Diagrammi di Sequenza
I diagrammi di sequenza hanno la stessa semantica di un linguaggio imperativo Turing-Equivalente
Slide 25: Chiamata a Metodo
La Chiamata a Metodo denota uno scambio di messaggio, caratterizzato da target, argomenti e valore di ritorno
Slide 26: Valore di Ritorno
Bancomat Io
1: PrelevaDanaro
Slide 27: Sequenza
Una sequenza di frecce ha la stessa semantica di una sequenza di istruzioni
Slide 28: Sequenza di Chiamate
Inte rruttore Lampadina M ia Nonna
1: turnOn
1.1: accendi
Slide 29: Creazione di Oggetti
Il Diagramma di Sequenza permette di rappresentare anche la creazione di oggetti
Slide 30: Creazione di Oggetti
Bancomat Stampe riaClande stina Io
1: PrelevaDanaro 1.1: produci 1.1.1: stampa
Sghe i
Slide 31: Iterazione
Grazie ai diagrammi di sequenza è possibile fornire una rappresentazione grafica dell’iterazione (while, do-while e for)
Slide 32: Iterazione
Bancomat Stampe riaClande stina Io
1: PrelevaDanaro 1.1: produci while(isEmpty()) 1.1.1.1: stampa Sghe i
Slide 33: Selezione
Esiste una sintassi per rappresentare la selezione (if – else o case)
Slide 34: Selezione
Bancomat Stampe riaClande stina Io 1: PrelevaDanaro if(isEmpty()) 1.1.1: produci while(isEmpty()) 1.1.1.1.1: stampa Sghe i
else 1.2.1: prendiBanconotePronte
1.3: contaBanconote
Slide 35: Sincronizzazione
La freccia tagliata permette di rappresentare chiamate asincrone
Slide 36: Schema Statico
Metodi Sincronizzati
Bancomat -deposito:Deposito +prelevaDenaro:Sghei
De posito
Stampe riaClande stina -deposito:Deposito
+putSghei:void +getSghei:Sghei
+avviaProduzione:void
produce Sghe i
spende
Slide 37: Produttore - Consumatore
Bancomat De posito Stampe riaClande stina Io Falsario
1: PrelevaDanaro 1.1: getSghei while(isEmpty) 1.1.1.1: wait Sghe i 2.1.1: stampa while(orarioDiLavoro) 2: avviaProduzione
while(isFull)
2.1.2: putSghei
2.1.2.1.1: wait
Slide 38: Esempio Finale
Automobile -motore:Motore +giraChiave:void M otore -cilindri:Cilindro[] -candele:Candela[] -serbatoio:Serbatoio -marmitta:Marmitta +accendi:void 1 Cilindro 0..* +pompaCarburante:void +espelliGas:void Gas produce 0..* +produciScintilla:void 1 Cande la Brucia +accendi:Gas Carburante
Se rbatoio inquina con +getCarburante:Carburante M armitta
+elimina:void
Slide 39: Sequenza di Accensione
initial Automobile Autista 1: giraChiave():void 1.1: acce ndi():v oid for(int i = 0;i< cilindri.le ngth;i++) 1.1.1.1: c:=ge tCarburante ():Carburante 1.1.1.2: produciScintilla():v oid 1.1.1.3: gasDiScarico:=e spe lliGas():v oid 1.1.1.4: e limina(gasDiScarico):v oid motore Motore se rbatoio Serbatoio cande la Candela cilindro Cilindro marmitta Marmitta