SlideShare a Scribd company logo
Java e UML
Corrispondenza Semantica tra
Diagrammi di Classe e
Codice Java
Autore: Andrea Gini
Data: 17 novembre 2003
Parte I
Diagrammi di Classe
Sintassi Differente
Stessa Semantica
Classi, Interfacce,
Metodi e Attributi
Esiste una corrispondenza uno a uno
tra gli elementi del diagramma e le
dichiarazioni presenti nel codice
Classe Metodi e Attributi
SchedaAnagrafica
-nome:String
-cognome:String
+getNome():String
+setNome(nome:String):void
+getCognome():String
+setCognome(cognome:String):void
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;
}
}
Modificatori
• Public: Libero Accesso
• Protected: Accessibile
dalle Sottoclassi
• Private: Accessibile solo
all’interno della classe
• Static: Accessibili anche
senza creare istanze
EsempioModificatori
-attributoPrivato:int
#attributoProtected:int
+attributoPublic:int
+attributoStatic:int
-metodoPrivato:void
#metodooProtected:void
+metodoPublic:void
+metodoStatic:int
Classi Astratte e Metodi Astratti
• Una Classe Astratta
contiene metodi privi di
implementazione
• Per questa ragione non
può essere istanziata
• Il corsivo permette di
distinguere le parti
astratte da quelle
concrete
ClasseAstratta
+metodoAstratto:void
+metodoConcreto:void
Interfacce
interface
Pesabile
+unitaDiMisura:String
+getPeso():int
public interface Pesabile {
public static String unitaDiMisura;
public int getPeso();
}
Relazioni di Ereditarietà e
Realizzazione
Anche in questo caso la relazione
tra diagrammi e codice è di tipo
uno a uno
Ereditarietà
EssereUmano
Donna Uomo
public abstract class EssereUmano {
....
}
public class Donna extends EssereUmano {
....
}
public class Uomo extends EssereUmano {
....
}
Realizzazione
interface
MediaRecorder
+record:void
VideoRegistratore
LettoreDVD
interface
MediaPlayer
+play:void
+stop:void
+pause:void
+fastForward:void
+rewind:void
RegistratoreDVD
Nota: L’ereditarietà
multipla tra interfacce
permette di porre in
essere esempi di
ereditarietà a diamante
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
Esempio di Associazione
public class Automobile {
private Motore motore;
public void accendi() {
motore.inserisciMiscela();
motore.accendiCandele();
}
}
public class Motore {
public void inserisciMiscela();
public void accendiCandele();
}
Automobile
-motore:Motore
+accendi:void
Motore
+inserisciMiscela:void
+accendiCandele:void
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
Dipendenza
Viaggia Su
interface
TrattoPercorribile
Strada Sterrato
Automobile
+percorri:void
public class Automobile {
public void percorri(TrattoPercorribile p) {
....
}
}
Nota: L’automobile dipende dalle
strade (senza strade l’automobile
non avrebbe senso di esistere).
Al contrario le strade esistono
indipendentemente dall’automobile
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”
Esempi di Aggregazione
Portafoglio Banconota
-valore:double
-valuta:String
Biblioteca interface
Libro
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”
Esempi di Composizione
4
4..8
Automobile
-motore:Motore
interface
Ruota
Cilindro
Motore
4
0..*
interface
Ruota
Automobile
Gommista
Differenza tra
Composizione e Aggregazione
La Composizione presuppone una
condizione di esclusività
Esempio 1
incoming
outcoming
interface
TrattoPercorribile
StradaStatale
Autostrada
-pedaggioAlChilometro:dobule
Strada
SegnaleStradale
interface
Segnalazione
Tragitto
Sterrato
Pubblicita
Viaggio
Esempio 2
interface
CarburanteDiesel
interface
CarburantePerBenzina
MotoreDiesel
interface
Carburante
CombustibileFossile
Motore
MotoreBenzina
Benzina
Gasolio EcoDiesel OlioDiColza
Automobile
Parte II
Diagrammi di Sequenza
Semantica Dei Diagrammi di
Sequenza
I diagrammi di sequenza hanno la
stessa semantica di un linguaggio
imperativo Turing-Equivalente
Chiamata a Metodo
La Chiamata a Metodo denota uno
scambio di messaggio, caratterizzato
da target, argomenti e valore di ritorno
Valore di Ritorno
Bancomat
Io
1: PrelevaDanaro
Sequenza
Una sequenza di frecce ha la
stessa semantica di una
sequenza di istruzioni
Sequenza di Chiamate
Mia Nonna
Lampadina
Interruttore
1.1: accendi
1: turnOn
Creazione di Oggetti
Il Diagramma di Sequenza
permette di rappresentare anche
la creazione di oggetti
Creazione di Oggetti
Bancomat StamperiaClandestina
Io
Sghei
1: PrelevaDanaro
1.1.1: stampa
1.1: produci
Iterazione
Grazie ai diagrammi di sequenza è
possibile fornire una rappresentazione
grafica dell’iterazione
(while, do-while e for)
Iterazione
Bancomat StamperiaClandestina
while(isEmpty())
Io
Sghei
while(isEmpty())
1: PrelevaDanaro
1.1.1.1: stampa
1.1: produci
Selezione
Esiste una sintassi per
rappresentare la selezione
(if – else o case)
Selezione
Sghei
Io
Bancomat
if(isEmpty())
else
StamperiaClandestina
while(isEmpty())
while(isEmpty())
1.1.1.1.1: stampa
if(isEmpty())
else
1.2.1: prendiBanconotePronte
1.3: contaBanconote
1.1.1: produci
1: PrelevaDanaro
Sincronizzazione
La freccia tagliata permette di
rappresentare chiamate asincrone
Schema Statico
spende
produce
Sghei
Deposito
+putSghei:void
+getSghei:Sghei
Bancomat
-deposito:Deposito
+prelevaDenaro:Sghei
StamperiaClandestina
-deposito:Deposito
+avviaProduzione:void
Metodi Sincronizzati
Produttore - Consumatore
Io
Bancomat Deposito
while(isEmpty)
while(isFull)
StamperiaClandestina
while(orarioDiLavoro)
Falsario
Sghei
1: PrelevaDanaro
while(orarioDiLavoro)
while(isEmpty)
while(isFull)
2.1.2.1.1: wait
1.1.1.1: wait
2.1.2: putSghei
2.1.1: stampa
2: avviaProduzione
1.1: getSghei
Esempio Finale
1
1
Brucia
produce
inquina con
0..*
0..*
Candela
+produciScintilla:void
Cilindro
+pompaCarburante:void
+espelliGas:void
Serbatoio
+getCarburante:Carburante Marmitta
+elimina:void
Carburante
+accendi:Gas
Gas
Automobile
-motore:Motore
+giraChiave:void
Motore
-cilindri:Cilindro[]
-candele:Candela[]
-serbatoio:Serbatoio
-marmitta:Marmitta
+accendi:void
Sequenza di Accensione
motore
Motore
for(int i = 0;i< cilindri.length;i++)
serbatoio
Serbatoio
candela
Candela
cilindro
Cilindro
marmitta
Marmitta
Autista
initial
Automobile
for(int i = 0;i< cilindri.length;i++)
1.1.1.4: elimina(gasDiScarico):void
1.1.1.3: gasDiScarico:=espelliGas():void
1.1.1.2: produciScintilla():void
1.1.1.1: c:=getCarburante():Carburante
1.1: accendi():void
1: giraChiave():void

More Related Content

More from JiaJunWang17

Cash flow model
Cash flow modelCash flow model
Cash flow model
JiaJunWang17
 
Business_Analysis_Decision_Analysis.ppt
Business_Analysis_Decision_Analysis.pptBusiness_Analysis_Decision_Analysis.ppt
Business_Analysis_Decision_Analysis.ppt
JiaJunWang17
 
Capacitacion_2016_pptx_pptx.pptx
Capacitacion_2016_pptx_pptx.pptxCapacitacion_2016_pptx_pptx.pptx
Capacitacion_2016_pptx_pptx.pptx
JiaJunWang17
 
fontes_jud_rabinico_mestrado_jan_2014_pp.ppt
fontes_jud_rabinico_mestrado_jan_2014_pp.pptfontes_jud_rabinico_mestrado_jan_2014_pp.ppt
fontes_jud_rabinico_mestrado_jan_2014_pp.ppt
JiaJunWang17
 
Cybercrime_PPT.ppt
Cybercrime_PPT.pptCybercrime_PPT.ppt
Cybercrime_PPT.ppt
JiaJunWang17
 
PENGARATAN_PPT.pptx
PENGARATAN_PPT.pptxPENGARATAN_PPT.pptx
PENGARATAN_PPT.pptx
JiaJunWang17
 
neuroaids_ppt.ppt
neuroaids_ppt.pptneuroaids_ppt.ppt
neuroaids_ppt.ppt
JiaJunWang17
 
PPT_presentation_PaperKISMIF2016_ppt.ppt
PPT_presentation_PaperKISMIF2016_ppt.pptPPT_presentation_PaperKISMIF2016_ppt.ppt
PPT_presentation_PaperKISMIF2016_ppt.ppt
JiaJunWang17
 
PPT_MERCADOS.pptx
PPT_MERCADOS.pptxPPT_MERCADOS.pptx
PPT_MERCADOS.pptx
JiaJunWang17
 
El ciclo del hábito.pptx
El ciclo del hábito.pptxEl ciclo del hábito.pptx
El ciclo del hábito.pptx
JiaJunWang17
 
Hatshepsut_PPT.pptx
Hatshepsut_PPT.pptxHatshepsut_PPT.pptx
Hatshepsut_PPT.pptx
JiaJunWang17
 
hho_acctg09GE_inppt05_ppt.ppt
hho_acctg09GE_inppt05_ppt.ppthho_acctg09GE_inppt05_ppt.ppt
hho_acctg09GE_inppt05_ppt.ppt
JiaJunWang17
 
hho_acctg09GE_inppt05B_ppt.ppt
hho_acctg09GE_inppt05B_ppt.ppthho_acctg09GE_inppt05B_ppt.ppt
hho_acctg09GE_inppt05B_ppt.ppt
JiaJunWang17
 
hho_acctg09GE_inppt02_ppt (1).ppt
hho_acctg09GE_inppt02_ppt (1).ppthho_acctg09GE_inppt02_ppt (1).ppt
hho_acctg09GE_inppt02_ppt (1).ppt
JiaJunWang17
 
hho_acctg09GE_inppt06_ppt.ppt
hho_acctg09GE_inppt06_ppt.ppthho_acctg09GE_inppt06_ppt.ppt
hho_acctg09GE_inppt06_ppt.ppt
JiaJunWang17
 
Worksheet for a Merchandising Business.ppt
Worksheet for a Merchandising Business.pptWorksheet for a Merchandising Business.ppt
Worksheet for a Merchandising Business.ppt
JiaJunWang17
 
Akl_ppt.pptx
Akl_ppt.pptxAkl_ppt.pptx
Akl_ppt.pptx
JiaJunWang17
 
vakum_ppt.pptx
vakum_ppt.pptxvakum_ppt.pptx
vakum_ppt.pptx
JiaJunWang17
 
Arab spring.pptx
Arab spring.pptxArab spring.pptx
Arab spring.pptx
JiaJunWang17
 
Matrix_PPT.pptx
Matrix_PPT.pptxMatrix_PPT.pptx
Matrix_PPT.pptx
JiaJunWang17
 

More from JiaJunWang17 (20)

Cash flow model
Cash flow modelCash flow model
Cash flow model
 
Business_Analysis_Decision_Analysis.ppt
Business_Analysis_Decision_Analysis.pptBusiness_Analysis_Decision_Analysis.ppt
Business_Analysis_Decision_Analysis.ppt
 
Capacitacion_2016_pptx_pptx.pptx
Capacitacion_2016_pptx_pptx.pptxCapacitacion_2016_pptx_pptx.pptx
Capacitacion_2016_pptx_pptx.pptx
 
fontes_jud_rabinico_mestrado_jan_2014_pp.ppt
fontes_jud_rabinico_mestrado_jan_2014_pp.pptfontes_jud_rabinico_mestrado_jan_2014_pp.ppt
fontes_jud_rabinico_mestrado_jan_2014_pp.ppt
 
Cybercrime_PPT.ppt
Cybercrime_PPT.pptCybercrime_PPT.ppt
Cybercrime_PPT.ppt
 
PENGARATAN_PPT.pptx
PENGARATAN_PPT.pptxPENGARATAN_PPT.pptx
PENGARATAN_PPT.pptx
 
neuroaids_ppt.ppt
neuroaids_ppt.pptneuroaids_ppt.ppt
neuroaids_ppt.ppt
 
PPT_presentation_PaperKISMIF2016_ppt.ppt
PPT_presentation_PaperKISMIF2016_ppt.pptPPT_presentation_PaperKISMIF2016_ppt.ppt
PPT_presentation_PaperKISMIF2016_ppt.ppt
 
PPT_MERCADOS.pptx
PPT_MERCADOS.pptxPPT_MERCADOS.pptx
PPT_MERCADOS.pptx
 
El ciclo del hábito.pptx
El ciclo del hábito.pptxEl ciclo del hábito.pptx
El ciclo del hábito.pptx
 
Hatshepsut_PPT.pptx
Hatshepsut_PPT.pptxHatshepsut_PPT.pptx
Hatshepsut_PPT.pptx
 
hho_acctg09GE_inppt05_ppt.ppt
hho_acctg09GE_inppt05_ppt.ppthho_acctg09GE_inppt05_ppt.ppt
hho_acctg09GE_inppt05_ppt.ppt
 
hho_acctg09GE_inppt05B_ppt.ppt
hho_acctg09GE_inppt05B_ppt.ppthho_acctg09GE_inppt05B_ppt.ppt
hho_acctg09GE_inppt05B_ppt.ppt
 
hho_acctg09GE_inppt02_ppt (1).ppt
hho_acctg09GE_inppt02_ppt (1).ppthho_acctg09GE_inppt02_ppt (1).ppt
hho_acctg09GE_inppt02_ppt (1).ppt
 
hho_acctg09GE_inppt06_ppt.ppt
hho_acctg09GE_inppt06_ppt.ppthho_acctg09GE_inppt06_ppt.ppt
hho_acctg09GE_inppt06_ppt.ppt
 
Worksheet for a Merchandising Business.ppt
Worksheet for a Merchandising Business.pptWorksheet for a Merchandising Business.ppt
Worksheet for a Merchandising Business.ppt
 
Akl_ppt.pptx
Akl_ppt.pptxAkl_ppt.pptx
Akl_ppt.pptx
 
vakum_ppt.pptx
vakum_ppt.pptxvakum_ppt.pptx
vakum_ppt.pptx
 
Arab spring.pptx
Arab spring.pptxArab spring.pptx
Arab spring.pptx
 
Matrix_PPT.pptx
Matrix_PPT.pptxMatrix_PPT.pptx
Matrix_PPT.pptx
 

[eBook - ITA] - Programmazione - Esercitazione-Java-UML.ppt