Post on 16-Feb-2019
transcript
Istituto di Scienza e Tecnologie dell'Informazione “A. Faedo”Software Engineering Laboratory
CLASS DIAGRAMCLASS DIAGRAMPARTE 1PARTE 1
UML The Unified Modeling Language
Guglielmo De Angelis
guglielmo.deangelis@isti.cnr.it
SOFTWARE ENGINEERING LABORATORY
la famiglia di diagrammi UML
» structure diagrams» class diagram» object diagram» component diagram» deployment diagram» composite structure diagram» package diagram
» behavior diagrams» state machine diagram» activity diagram» use case diagram» interaction diagrams
» sequence diagram» communication
diagram» interaction overview
diagram» timing diagram
SOFTWARE ENGINEERING LABORATORY
object oriented : concetti fondamnetali
I concetti fondamentali del mondo Object Oriented sono:
» classe» oggetto» messaggio» metodo» operazione» ereditarietà» polimorfismo (non lo considereremo)
{
fondam
en
tali
SOFTWARE ENGINEERING LABORATORY
classe
» modella una famiglia di entità del dominio di applicazione» le proprietà (attributi) » il comportamento (operazioni)
» raggruppa un insieme coeso di entità» coesione vs. accoppiamento
SOFTWARE ENGINEERING LABORATORY
classe
» modella una famiglia di entità del dominio di applicazione» le proprietà (attributi) » il comportamento (operazioni)
» raggruppa un insieme coeso di entità» coesione vs. accoppiamento
solo per capire ... prendiamo un esempio dalla chimica
composto : una sostanza nella quale due o più elementi sono uniti da legami chimiciacqua, acido solforico, cloruro di sodio (sale),
aonossido di carboniosoluzioni e/o miscugli (eterogenei) : un insieme di
sostanze che può essere decomposto per mezzo di metodi di separazione fisicibirra, acqua e sale, acqua e sabbia, acqua e olio
SOFTWARE ENGINEERING LABORATORY
classe
» modella una famiglia di entità del dominio di applicazione» le proprietà (attributi) » il comportamento (operazioni)
» raggruppa un insieme coeso di entità» coesione vs. accoppiamento
» modella entità fisiche, concettuali o software» mammifero, autoveicolo, grafo... OK
SOFTWARE ENGINEERING LABORATORY
oggetto
» rappresenta un “elemento del mondo reale” che si sta modellando
» manifestazione concreta di un’astrazione» ha un’identità ben definita e incapsula uno
stato e un comportamento» ha associato un tipo (definito dalla classe)
» un oggetto si relaziona ad una classe allo stesso modo di come un dato si relaziona ad un tipo (nei ling. di progr.)
» un oggetto è una istanza di una classe
SOFTWARE ENGINEERING LABORATORY
oggetto
»animale» rettile» mammifero» canide» cane : Bobby, Pluto
» felino» gatto : Tom, GattoConGliStivali
SOFTWARE ENGINEERING LABORATORY
operazione, metodo, messaggio
» operazione : specifica di un meccanismo di interazione (prototipo,
segnatura) che un oggetto mette a disposizione di altri oggetti
» metodo : implementazione vera e propria dell'operazione di un oggetto
» messaggio : è la richiesta di un metodo appartenente ad un oggetto A verso un metodo di un oggetto B
SOFTWARE ENGINEERING LABORATORY
class diagram
» mostra un insieme di classi, interfacce e le relazioni tra loro» dipendenza, associazione, aggregazione,
composizione, generalizzazione
» può essere visto come un grafo dove i nodi sono classi/interfacce e gli archi relazioni
» possono contenere anche package o sottosistemi (usati per raggruppare elementi)
SOFTWARE ENGINEERING LABORATORY
class diagram
» modella la struttura statica di una applicazione» elementi specificati e/o composti a design-
time
» si usa per modellare:» gli elementi di una applicazione (vocabolario)
» una classe è l’astrazione di un elemento nel dominio del problema
» semplici collaborazioni» una classe non vive da sola ma si relaziona con
altre al fine di fornire, “cooperativamente”, un comportamento complesso
SOFTWARE ENGINEERING LABORATORY
compartimento nome
» definisce il nome di un’entità» stringa di testo
» semplice stringa» path (prefisso + “::” + nome_classe)
» convenzione» lettera iniziale maiuscola
SOFTWARE ENGINEERING LABORATORY
comparto attributi
» modella le proprietà di una classe» per ogni attributo, l’insieme di valori (tipo)
che esso può assumere
» le proprietà sono condivise tra tutti gli oggetti appartenenti a quella classe (che hanno quella classe come tipo)
» nel nostro esempio:» un sensore è caratterizzato da
» identificativo (univoco) » frequenza di rilemento della misura» modalità standby» contatore del numero di istanze attive
SOFTWARE ENGINEERING LABORATORY
comparto operazione
» le operazioni manipolano lo stato degli oggetti ( ovvero il valore degli attributi ) » hanno una segnatura: un tipo, nome e lista
di parametri
» operations compartment specifica cosa può fare una classe (e non come), ovvero che servizi offre» vedi slide 9 (operazione, metodo, messaggio)
» ad esempio il nostro sensore :» setSamplingFrequency, getMeasure
SOFTWARE ENGINEERING LABORATORY
come rappresento una classe in UML -5-
OPERAZIONE DI CLASSE
ATTRIBUTO DI CLASSE
SOFTWARE ENGINEERING LABORATORY
attributi ed operazioni di classe
» attributi : il valore è condiviso tra tutte le istanze
» operazioni : non richiedono una istanza della classe per essere invocate
SOFTWARE ENGINEERING LABORATORY
“vedo” / “non vedo”
» principio di information hiding (encapsulation)» separazione tra “interfaccia” e implementazione
» semantica del dato vs. implementazione della variabile
» obiettivo : nascondere le scelte che possono essere soggette a cambiamenti
SOFTWARE ENGINEERING LABORATORY
visibilità – public && private – (map in Java)
public class Sensor {
public void Sensor(){
this.numberOfInstances ++;
// OK
}
}
public class testClass {
public void testMethod(){
Sensor s = new Sensor();
s.setSamplingFrequency();// OK
s.samplingFrequency = 10; // ERRORE
}
}
SOFTWARE ENGINEERING LABORATORY
visibilità – protected – (map in Java)
public class Sensor {
public void setMuteOn(){this.isMute = true;// OK
}
}
public class testClass {
public void testMethod(){
Sensor s = new Sensor();
s.isMute = true ; // ERRORE
}
} anche se nel caso generale protect e private sembranoequivalenti, non è cosi. la differenza c'è con la generalizzazione. rimandiamo il discorso più avanti.
SOFTWARE ENGINEERING LABORATORY
public, private, protected ?!?!
» principio di information hiding (encapsulation)» separazione tra “interfaccia” e implementazione
» semantica del dato vs. implementazione della variabile
» obiettivo : nascondere le scelte che possono essere soggette a cambiamenti
SOFTWARE ENGINEERING LABORATORY
public, private, protected ?!?!
» principio di information hiding (encapsulation)» separazione tra “interfaccia” e implementazione
» semantica del dato vs. implementazione della variabile
» obiettivo : nascondere le scelte che possono essere soggette a cambiamenti» REGOLA PRATICA : gli attributi sono sempre
privati, le operazioni possono essere pubbliche
» chiaramente» l’interfaccia deve essere particolarmente stabile» esistono operazioni get/set per accedere agli
attributi
SOFTWARE ENGINEERING LABORATORY
interfacce
» collezioni di operazioni che sono utilizzate per specificare un servizio di una classe o di un componente
» definisce solo la segnatura delle operazioni
» le operazioni possono avere attributi di visibilità (come nelle classi)
» non tutti i linguaggi orientati agli oggetti hanno le interfacce» C++ NO , Java SI, UML SI
SOFTWARE ENGINEERING LABORATORY
interfacce
» collezioni di operazioni che sono utilizzate per specificare un servizio di una classe o di un componente
» definisce solo la segnatura delle operazioni
» le operazioni possono avere attributi di visibilità (come nelle classi)
» non tutti i linguaggi orientati agli oggetti hanno le interfacce» C++ NO , Java SI, UML SI
ATTENZIONE: l'idea di INTERFACCIA è molto diversa
dall'idea di CLASSE. le interfacce non definiscono
NESSUN TIPO DI STATOle interfacce non definiscono
NESSUN TIPO di attributi
SOFTWARE ENGINEERING LABORATORY
proviamoci!
Una prof di matematica mantiene un archivio di esercizi per il suo corso. Gli esercizi (univocamente identificati da un codice) sono di 3 tipi: algebra, geometria, logica. Per ogni esercizio già assegnato, deve essere possibile risalire al compito scritto (contrassegnato dalla data) in cui era incluso. Per tutti e soli gli esercizi già assegnati è anche riportata la soluzione (un testo). A ogni compito è associato il voto (un valore) ottenuto da ogni studente che ha sostenuto il compito. Uno studente è contrassegnato dal numero di matricola.