SlideShare a Scribd company logo
1 of 41
DIAGRAMMI DELLE CLASSI 
INGEGNERIA DEL SOFTWARE 
Università degli Studi di Padova 
Dipartimento di Matematica 
Corso di Laurea in Informatica, A.A. 2014 – 2015 
rcardin@math.unipd.it
SOMMARIO 
 Introduzione 
 Proprietà e Operazioni 
 Concetti base e avanzati 
 Diagrammi degli oggetti 
Ingegneria del software mod. A 
Riccardo Cardin 2
SOMMARIO 
 Introduzione 
 Proprietà e Operazioni 
 Concetti base e avanzati 
 Diagrammi degli oggetti 
Ingegneria del software mod. A 
Riccardo Cardin 3
DIAGRAMMI DELLE CLASSI 
Ingegneria del software mod. A 
Riccardo Cardin 4
DIAGRAMMI DELLE CLASSI 
 Specifica Tecnica, Definizione di Prodotto 
Ingegneria del software mod. A 
Riccardo Cardin 5 
• Diagrammi Use case 
• Diagrammi di flusso 
Revisione dei 
Requisiti 
R. Progetto 
Architetturale 
Revisione di 
Qualifica 
R. di 
Accettazione 
• Diagrammi dei package 
• Diagrammi delle classi 
• Diagrammi degli oggetti 
• Diagrammi di attività 
• Diagrammi di sequenza 
• Diagrammi delle classi 
• Diagrammi di attività 
• Diagrammi di sequenza 
• Diagrammi di flusso
DIAGRAMMI DELLE CLASSI 
 Definizione 
 Descrizione del tipo degli oggetti che fa parte di un 
sistema 
 Relazioni statiche fra i tipi degli oggetti 
Unica parte 
obbligatoria 
Ingegneria del software mod. A 
Riccardo Cardin 6 
Nome della classe 
Attributo 1 
Attributo 2 
Attributo 3 
… 
Operazione 1 
Operazione 2 
… 
Questa è una 
classe!!! 
Features
DIAGRAMMI DELLE CLASSI 
 Definizione: esempio 
Ingegneria del software mod. A 
Riccardo Cardin 7
DIAGRAMMI DELLE CLASSI 
 Esempio principale 
Ingegneria del software mod. A 
Riccardo Cardin 8 
Esempio 
È richiesto lo sviluppo di un’applicazione che permetta la gestione di un semplice blog. 
In particolare devono essere disponibili almeno tutte le funzionalità base di un blog: 
deve essere possibile per un utente inserire un nuovo post e successivamente per gli 
altri utenti deve essere possibile commentarlo. Queste due operazioni devono essere 
disponibili unicamente agli utenti registrati all’interno del sistema. La registrazione 
avviene scegliendo una username e una password. La username deve essere univoca 
all’interno del sistema.
DIAGRAMMI DELLE CLASSI 
 Esempio principale 
Ingegneria del software mod. A 
Riccardo Cardin 9
SOMMARIO 
 Introduzione 
 Proprietà e Operazioni 
 Concetti base e avanzati 
 Diagrammi degli oggetti 
Ingegneria del software mod. A 
Riccardo Cardin 10
PROPRIETÀ 
 Caratteristiche strutturali 
 Attributo 
Definizione 
Visibilità nome : tipo [molteplicità] = default {proprietà aggiuntive} 
 Visibilità: + pubblica, - privata, # protetta 
 Associazione 
 Linea continua e orientata fra due classi 
 Molteplicità 
 Quanti oggetti possono far parte dell’associazione 
 1, 0..1, 0..*, *,… 
 Spesso interscambiabile con un attributo: quando usarla? 
Ingegneria del software mod. A 
Riccardo Cardin 11 
1
PROPRIETÀ 
 Visibilità 
Ingegneria del software mod. A 
Riccardo Cardin 12
PROPRIETÀ 
 Esempio 1 
Ingegneria del software mod. A 
Riccardo Cardin 13
PROPRIETÀ 
 …nel linguaggio di programmazione 
 Attributi 
 Membri di classe (privati, se possibile) 
 Proprietà aggiuntive 
 Se ordered: Array o vettori 
 Se unordered: insiemi 
 Convenzioni dei gruppi di programmazione 
 Esempio: Getter e setter per ogni attributo 
 Associazioni 
 Anche se etichettata con verbo, meglio renderla con un nome 
 Evitare le associazioni bidirezionali 
 Di chi è la responsabilità di aggiornare la relazione? 
Ingegneria del software mod. A 
Riccardo Cardin 14
PROPRIETÀ 
 Esempio 2 
Ingegneria del software mod. A 
public class Commento { 
private String corpo = null; 
private List<Commento commenti = 
new ArrayList<Commento>(); 
public void addCommento(Commento c) { 
Riccardo Cardin 15 
commenti.add(c); 
} 
} 
public class Post { 
private List<Commento> commenti = 
new ArrayList<Commento>(); 
// ... 
public List<Commento> getCommenti() 
{...} 
} 
Java
OPERAZIONI 
 Le azioni che la classe “sa eseguire” 
 Aspetto comportamentale 
 Servizio che può essere richiesto ad ogni istanza della 
classe 
Visibilità nome (lista-parametri) : tipo-ritorno {proprietà aggiuntive} 
 Direzione: in, out, inout (default in) 
 Visibilità: + pubblica, - privata, # protetta 
 Query 
 Modificatori 
 Operazione ≠ metodo 
 Concetti differenti in presenza di polimorfismo 
Ingegneria del software mod. A 
Riccardo Cardin 16 
Lista-parametri := direzione nome : tipo = default 
Definizione
OPERAZIONI 
 Esempio 3 
Modificatori 
Ingegneria del software mod. A 
Riccardo Cardin 17 
Operazioni query 
• addCommento modifica lo stato interno 
di un post 
• getCommenti non modifica lo stato
SOMMARIO 
 Introduzione 
 Proprietà e Operazioni 
 Concetti base e avanzati 
 Diagrammi degli oggetti 
Ingegneria del software mod. A 
Riccardo Cardin 18
COMMENTI E NOTE 
 Informazioni aggiuntive 
 Singole e solitarie 
 Legate a qualsiasi elemento grafico 
 Linea tratteggiata 
 Esempio 5 
Ingegneria del software mod. A 
Riccardo Cardin 19
RELAZIONE DI DIPENDENZA 
 Definizione 
Si ha dipendenza tra due elementi di un diagramma se la modifica alla 
definizione del primo (fornitore) può cambiare la definizione del secondo 
(client) 
 UML permettere di modellare ogni sorta di 
dipendenza 
 Non è una proprietà transitiva! 
 Le dipendenze vanno minimizzate! 
 Loose coupling 
 Da inserire solo quando danno valore aggiunto 
 Troppe dipendenze creano confusione nel diagramma 
Ingegneria del software mod. A 
Riccardo Cardin 20
RELAZIONE DI DIPENDENZA 
 Definizione 
Ingegneria del software mod. A 
Riccardo Cardin 21
RELAZIONE DI DIPENDENZA 
 Dipendenze UML 
Ingegneria del software mod. A 
Riccardo Cardin 22 
Parola chiave Significato 
«call» La sorgente invoca un’operazione della classe destinazione. 
«create» La sorgente crea istanze della classe destinazione. 
«derive» La sorgente è derivata dalla classe destinazione 
«instantiate» La sorgente è una istanza della classe destinazione (meta-classe) 
«permit» La classe destinazione permette alla sorgente di accedere ai suoi campi 
privati. 
«realize» La sorgente è un’implementazione di una specifica o di una interfaccia 
definita dalla sorgente 
«refine» Raffinamento tra differenti livelli semantici. 
«substitute» La sorgente è sostituibile alla destinazione. 
«trace» Tiene traccia dei requisiti o di come i cambiamenti di una parte di modello 
si colleghino ad altre 
«use» La sorgente richiede la destinazione per la sua implementazione.
RELAZIONE DI DIPENDENZA 
 Esempio 6 
Ingegneria del software mod. A 
Riccardo Cardin 23
AGGREGAZIONE E COMPOSIZIONE 
 Aggregazione 
 Relazione di tipo “parte di” (part of) 
 Gli aggregati possono essere 
condivisi 
 Composizione 
 Come aggregazione, ma: 
 Gli aggregati appartengono ad un solo aggregato 
 Solo l’oggetto intero può creare e distruggere le sue parti 
Ingegneria del software mod. A 
Riccardo Cardin 24 
0..1, 1
AGGREGAZIONE E COMPOSIZIONE 
 Esempio 7 
Ingegneria del software mod. A 
Riccardo Cardin 25 
Un’istanza di un 
commento può 
essere presente in 
al più un post!
CLASSI DI ASSOCIAZIONE 
 Aggiungono attributi e operazioni alle 
associazioni 
 Esiste solo una istanza della classe associazione fra i 
due oggeti 
Ingegneria del software mod. A 
Riccardo Cardin 26 
1 
1 
* 
1..* 
Una persona ha 
SOLO UN lavoro in 
un’azienda 
Può essere 
“promossa” 
Una persona può 
avere PIU’ lavori 
in un’azienda
CLASSI DI ASSOCIAZIONE 
 Traduzione in linguaggio di programmazione 
Ingegneria del software mod. A 
Riccardo Cardin 27 
Java 
public class BlogAccount { 
private String name = null; 
private Category[] categories; 
private BlogEntry entries; 
} 
public class Category { 
private String name; 
} 
public class BlogEntry { 
private String name; 
private Category[] categories 
} 
Ovviamente, è 
necessario imporre 
che esista solo 
un’istanza
GENERALIZZAZIONE 
 A generalizza B, se ogni oggetto di B è anche un 
oggetto di A 
 Equivale all’ereditarietà dei linguaggi di programmazione 
 Ereditarietà multipla supportata, ma da NON USARE! 
 Le proprietà della superclasse non si riportano nel 
diagramma della sottoclasse 
 A meno di override 
 Sostituibilità 
 Sottotipo ≠ sottoclasse 
 Interfacce / implementazinoe 
Ingegneria del software mod. A 
Riccardo Cardin 28
GENERALIZZAZIONE 
 Esempio 4 
Ingegneria del software mod. A 
Riccardo Cardin 29 
Gli attributi protected 
sono visibili anche dalle 
classi derivate 
Il metodo della 
classe base è 
ereditato e può 
esserne fatto 
l’override
CLASSI ASTRATTE 
 Classe Astratta {abstract} 
 Classe che non può essere istanziata 
 Operazione astratta non ha implementazione 
 Altre operazioni possono avere implementazione 
Ingegneria del software mod. A 
Riccardo Cardin 30 
getUsername non ha 
implementazione 
Nome in corsivo
INTERFACCE 
 Interfaccia «interface» 
 Classe priva di implementazione 
 Una classe realizza un’interfaccia se ne implementa le 
operazioni 
Ingegneria del software mod. A 
Riccardo Cardin 31 
«Ball» 
notation UML 
2.x 
«Stereotype» 
notation UML 
1.x
INTERFACCE 
 Interfacce 
Ingegneria del software mod. A 
Riccardo Cardin 32 
IPagamento
CLASSIFICAZIONE E GENERALIZZAZIONE 
 Sottotipo ≠ “è un” (IS A) 
 Generalizzazione 
 Proprietà transitiva 
 La classificazione non lo è! 
 Classificazione 
 Dipendenza «instantiate» 
Ingegneria del software mod. A 
Classificazione 
• Shep è un Border Collie 
• Border Collie è una razza 
Riccardo Cardin 33 
Generalizzazione 
• Un Border Collie è un cane 
• I cani sono animali 
• I cani sono una specie
CARATTERISTICHE VARIE 
 Operazioni e attributi statici 
 Applicabili alla classe, non all’oggetto 
 Sottolineati sul diagramma 
 Parole chiave 
 Estensione della semantica UML 
 Costrutto simile + parola chiave! 
 «interface» 
 {abstract} 
 Responsabilità 
 Funzionalità offerte 
 Aggiunta alla classe con commento 
Ingegneria del software mod. A 
Riccardo Cardin 34
CARATTERISTICHE VARIE 
 Proprietà derivate 
 Possono essere calcolate a partire da altri valori 
 Definiscono un vincolo fra valori 
 Si indicano con “/” che precede il nome della proprietà 
 Proprietà read only e frozen 
 {readOnly} 
 Non vengono forniti i servizi di scrittura 
 {frozen} 
 Immutabile, non può variare nel suo ciclo di vita 
 Enumerazioni 
 Insiemi di valori che non hanno altre proprietà oltre il valore 
simbolico 
 «enumeration» 
Ingegneria del software mod. A 
Riccardo Cardin 35
CARATTERISTICHE VARIE 
 Classi Parametriche 
 T è detto “segnaposto” 
 Come template C++ o 
generics Java 
Ingegneria del software mod. A 
Riccardo Cardin 36 
Raffinamento
CARATTERISTICHE VARIE 
 Classi Attive 
 Eseguono e controllano il proprio thread 
Ingegneria del software mod. A 
Riccardo Cardin 37
CONSIGLI UTILI 
 Diagrammi molto ricchi di concetti 
 Non cercare di utilizzare tutte le notazioni disponibili 
 Cominciare dapprima con i concetti semplici 
 Una prospettiva concettuale permette di esplorare il 
linguaggio di un particolare business 
 Mantenere la notazione semplice e non introdurre concetti 
legati al software 
 Concentrarsi nel disegno dei diagrammi delle parti 
più importanti 
 Disegnare ogni cosa è sinonimo di diagrammi non 
fondamentali che diventano obsoleti molto presto! 
Ingegneria del software mod. A 
Riccardo Cardin 38
SOMMARIO 
 Introduzione 
 Proprietà e Operazioni 
 Concetti base e avanzati 
 Diagrammi degli oggetti 
Ingegneria del software mod. A 
Riccardo Cardin 39
DIAGRAMMI DEGLI OGGETTI 
 Grafo delle istanze, comprensivo di associazioni 
e valori delle proprietà 
 Fotografia degli oggetti che compongono un sistema 
 Non ci sono parti obbligatorie 
 Specifica di istanza 
 Anche di classi astratte, omissione dei metodi, ecc… 
Ingegneria del software mod. A 
Riccardo Cardin 40 
nome dell’istanza : nome della classe
RIFERIMENTI 
OMG Homepage – www.omg.org 
 UML Homepage – www.uml.org 
 UML Distilled, Martin Fowler, 2004, Pearson 
(Addison Wesley) 
 Learning UML 2.0, Kim Hamilton, Russell Miles, 
O’Reilly, 2006 
Ingegneria del software mod. A 
Riccardo Cardin 41

More Related Content

Viewers also liked

Presto updates to 0.178
Presto updates to 0.178Presto updates to 0.178
Presto updates to 0.178Kai Sasaki
 
Errori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei RequisitiErrori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei RequisitiRiccardo Cardin
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionRiccardo Cardin
 
Scala - the good, the bad and the very ugly
Scala - the good, the bad and the very uglyScala - the good, the bad and the very ugly
Scala - the good, the bad and the very uglyBozhidar Bozhanov
 
Java - Generic programming
Java - Generic programmingJava - Generic programming
Java - Generic programmingRiccardo Cardin
 
Java - Collections framework
Java - Collections frameworkJava - Collections framework
Java - Collections frameworkRiccardo Cardin
 
Java - Processing input and output
Java - Processing input and outputJava - Processing input and output
Java - Processing input and outputRiccardo Cardin
 
Java - Remote method invocation
Java - Remote method invocationJava - Remote method invocation
Java - Remote method invocationRiccardo Cardin
 
Java - Concurrent programming - Thread's advanced concepts
Java - Concurrent programming - Thread's advanced conceptsJava - Concurrent programming - Thread's advanced concepts
Java - Concurrent programming - Thread's advanced conceptsRiccardo Cardin
 
Java Exception Handling, Assertions and Logging
Java Exception Handling, Assertions and LoggingJava Exception Handling, Assertions and Logging
Java Exception Handling, Assertions and LoggingRiccardo Cardin
 
Java- Concurrent programming - Synchronization (part 1)
Java- Concurrent programming - Synchronization (part 1)Java- Concurrent programming - Synchronization (part 1)
Java- Concurrent programming - Synchronization (part 1)Riccardo Cardin
 
Java- Concurrent programming - Synchronization (part 2)
Java- Concurrent programming - Synchronization (part 2)Java- Concurrent programming - Synchronization (part 2)
Java- Concurrent programming - Synchronization (part 2)Riccardo Cardin
 
Java Graphics Programming
Java Graphics ProgrammingJava Graphics Programming
Java Graphics ProgrammingRiccardo Cardin
 
A (too) Short Introduction to Scala
A (too) Short Introduction to ScalaA (too) Short Introduction to Scala
A (too) Short Introduction to ScalaRiccardo Cardin
 
Design pattern architetturali Model View Controller, MVP e MVVM
Design pattern architetturali   Model View Controller, MVP e MVVMDesign pattern architetturali   Model View Controller, MVP e MVVM
Design pattern architetturali Model View Controller, MVP e MVVMRiccardo Cardin
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patternsRiccardo Cardin
 
SOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented DesignSOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented DesignRiccardo Cardin
 
Scala For Java Programmers
Scala For Java ProgrammersScala For Java Programmers
Scala For Java ProgrammersEnno Runne
 

Viewers also liked (19)

Presto updates to 0.178
Presto updates to 0.178Presto updates to 0.178
Presto updates to 0.178
 
Errori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei RequisitiErrori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei Requisiti
 
Java - Sockets
Java - SocketsJava - Sockets
Java - Sockets
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency Injection
 
Scala - the good, the bad and the very ugly
Scala - the good, the bad and the very uglyScala - the good, the bad and the very ugly
Scala - the good, the bad and the very ugly
 
Java - Generic programming
Java - Generic programmingJava - Generic programming
Java - Generic programming
 
Java - Collections framework
Java - Collections frameworkJava - Collections framework
Java - Collections framework
 
Java - Processing input and output
Java - Processing input and outputJava - Processing input and output
Java - Processing input and output
 
Java - Remote method invocation
Java - Remote method invocationJava - Remote method invocation
Java - Remote method invocation
 
Java - Concurrent programming - Thread's advanced concepts
Java - Concurrent programming - Thread's advanced conceptsJava - Concurrent programming - Thread's advanced concepts
Java - Concurrent programming - Thread's advanced concepts
 
Java Exception Handling, Assertions and Logging
Java Exception Handling, Assertions and LoggingJava Exception Handling, Assertions and Logging
Java Exception Handling, Assertions and Logging
 
Java- Concurrent programming - Synchronization (part 1)
Java- Concurrent programming - Synchronization (part 1)Java- Concurrent programming - Synchronization (part 1)
Java- Concurrent programming - Synchronization (part 1)
 
Java- Concurrent programming - Synchronization (part 2)
Java- Concurrent programming - Synchronization (part 2)Java- Concurrent programming - Synchronization (part 2)
Java- Concurrent programming - Synchronization (part 2)
 
Java Graphics Programming
Java Graphics ProgrammingJava Graphics Programming
Java Graphics Programming
 
A (too) Short Introduction to Scala
A (too) Short Introduction to ScalaA (too) Short Introduction to Scala
A (too) Short Introduction to Scala
 
Design pattern architetturali Model View Controller, MVP e MVVM
Design pattern architetturali   Model View Controller, MVP e MVVMDesign pattern architetturali   Model View Controller, MVP e MVVM
Design pattern architetturali Model View Controller, MVP e MVVM
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patterns
 
SOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented DesignSOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented Design
 
Scala For Java Programmers
Scala For Java ProgrammersScala For Java Programmers
Scala For Java Programmers
 

Similar to Diagrammi delle Classi

Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular jsRiccardo Cardin
 
Design Pattern Comportamentali
Design Pattern ComportamentaliDesign Pattern Comportamentali
Design Pattern ComportamentaliRiccardo Cardin
 
Design Pattern Creazionali
Design Pattern CreazionaliDesign Pattern Creazionali
Design Pattern CreazionaliRiccardo Cardin
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiMarco Gasparetto
 
Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)lukebonham
 
Layered Expression Trees: una terza via (idiomatica) verso il DDD
Layered Expression Trees: una terza via (idiomatica) verso il DDDLayered Expression Trees: una terza via (idiomatica) verso il DDD
Layered Expression Trees: una terza via (idiomatica) verso il DDDAndrea Saltarello
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven DesignAndrea Saltarello
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
Presentazione review it_20min
Presentazione review it_20minPresentazione review it_20min
Presentazione review it_20minFabrizio Straccia
 
La rivoluzione 3.0: l'integrazione tra le social e le business practices
La rivoluzione 3.0: l'integrazione tra le social e le business practicesLa rivoluzione 3.0: l'integrazione tra le social e le business practices
La rivoluzione 3.0: l'integrazione tra le social e le business practicesSMAU
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignAndrea Saltarello
 
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...LeD87
 
Tesi Marco Ventura
Tesi Marco VenturaTesi Marco Ventura
Tesi Marco Venturaguest335584
 
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con DelphiDelphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con DelphiMarco Breveglieri
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 

Similar to Diagrammi delle Classi (20)

Diagrammi di Attività
Diagrammi di AttivitàDiagrammi di Attività
Diagrammi di Attività
 
Diagrammi Use Case
Diagrammi Use CaseDiagrammi Use Case
Diagrammi Use Case
 
Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular js
 
Introduzione a UML
Introduzione a UMLIntroduzione a UML
Introduzione a UML
 
Design Pattern Comportamentali
Design Pattern ComportamentaliDesign Pattern Comportamentali
Design Pattern Comportamentali
 
Design Pattern Creazionali
Design Pattern CreazionaliDesign Pattern Creazionali
Design Pattern Creazionali
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessi
 
Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)
 
Layered Expression Trees: una terza via (idiomatica) verso il DDD
Layered Expression Trees: una terza via (idiomatica) verso il DDDLayered Expression Trees: una terza via (idiomatica) verso il DDD
Layered Expression Trees: una terza via (idiomatica) verso il DDD
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven Design
 
Vb.Net
Vb.NetVb.Net
Vb.Net
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Presentazione review it_20min
Presentazione review it_20minPresentazione review it_20min
Presentazione review it_20min
 
La rivoluzione 3.0: l'integrazione tra le social e le business practices
La rivoluzione 3.0: l'integrazione tra le social e le business practicesLa rivoluzione 3.0: l'integrazione tra le social e le business practices
La rivoluzione 3.0: l'integrazione tra le social e le business practices
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
 
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
Sviluppo di un prototipo di interfaccia per la verbalizzazione degli esami on...
 
Tesi Marco Ventura
Tesi Marco VenturaTesi Marco Ventura
Tesi Marco Ventura
 
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con DelphiDelphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 

Diagrammi delle Classi

  • 1. DIAGRAMMI DELLE CLASSI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2014 – 2015 rcardin@math.unipd.it
  • 2. SOMMARIO  Introduzione  Proprietà e Operazioni  Concetti base e avanzati  Diagrammi degli oggetti Ingegneria del software mod. A Riccardo Cardin 2
  • 3. SOMMARIO  Introduzione  Proprietà e Operazioni  Concetti base e avanzati  Diagrammi degli oggetti Ingegneria del software mod. A Riccardo Cardin 3
  • 4. DIAGRAMMI DELLE CLASSI Ingegneria del software mod. A Riccardo Cardin 4
  • 5. DIAGRAMMI DELLE CLASSI  Specifica Tecnica, Definizione di Prodotto Ingegneria del software mod. A Riccardo Cardin 5 • Diagrammi Use case • Diagrammi di flusso Revisione dei Requisiti R. Progetto Architetturale Revisione di Qualifica R. di Accettazione • Diagrammi dei package • Diagrammi delle classi • Diagrammi degli oggetti • Diagrammi di attività • Diagrammi di sequenza • Diagrammi delle classi • Diagrammi di attività • Diagrammi di sequenza • Diagrammi di flusso
  • 6. DIAGRAMMI DELLE CLASSI  Definizione  Descrizione del tipo degli oggetti che fa parte di un sistema  Relazioni statiche fra i tipi degli oggetti Unica parte obbligatoria Ingegneria del software mod. A Riccardo Cardin 6 Nome della classe Attributo 1 Attributo 2 Attributo 3 … Operazione 1 Operazione 2 … Questa è una classe!!! Features
  • 7. DIAGRAMMI DELLE CLASSI  Definizione: esempio Ingegneria del software mod. A Riccardo Cardin 7
  • 8. DIAGRAMMI DELLE CLASSI  Esempio principale Ingegneria del software mod. A Riccardo Cardin 8 Esempio È richiesto lo sviluppo di un’applicazione che permetta la gestione di un semplice blog. In particolare devono essere disponibili almeno tutte le funzionalità base di un blog: deve essere possibile per un utente inserire un nuovo post e successivamente per gli altri utenti deve essere possibile commentarlo. Queste due operazioni devono essere disponibili unicamente agli utenti registrati all’interno del sistema. La registrazione avviene scegliendo una username e una password. La username deve essere univoca all’interno del sistema.
  • 9. DIAGRAMMI DELLE CLASSI  Esempio principale Ingegneria del software mod. A Riccardo Cardin 9
  • 10. SOMMARIO  Introduzione  Proprietà e Operazioni  Concetti base e avanzati  Diagrammi degli oggetti Ingegneria del software mod. A Riccardo Cardin 10
  • 11. PROPRIETÀ  Caratteristiche strutturali  Attributo Definizione Visibilità nome : tipo [molteplicità] = default {proprietà aggiuntive}  Visibilità: + pubblica, - privata, # protetta  Associazione  Linea continua e orientata fra due classi  Molteplicità  Quanti oggetti possono far parte dell’associazione  1, 0..1, 0..*, *,…  Spesso interscambiabile con un attributo: quando usarla? Ingegneria del software mod. A Riccardo Cardin 11 1
  • 12. PROPRIETÀ  Visibilità Ingegneria del software mod. A Riccardo Cardin 12
  • 13. PROPRIETÀ  Esempio 1 Ingegneria del software mod. A Riccardo Cardin 13
  • 14. PROPRIETÀ  …nel linguaggio di programmazione  Attributi  Membri di classe (privati, se possibile)  Proprietà aggiuntive  Se ordered: Array o vettori  Se unordered: insiemi  Convenzioni dei gruppi di programmazione  Esempio: Getter e setter per ogni attributo  Associazioni  Anche se etichettata con verbo, meglio renderla con un nome  Evitare le associazioni bidirezionali  Di chi è la responsabilità di aggiornare la relazione? Ingegneria del software mod. A Riccardo Cardin 14
  • 15. PROPRIETÀ  Esempio 2 Ingegneria del software mod. A public class Commento { private String corpo = null; private List<Commento commenti = new ArrayList<Commento>(); public void addCommento(Commento c) { Riccardo Cardin 15 commenti.add(c); } } public class Post { private List<Commento> commenti = new ArrayList<Commento>(); // ... public List<Commento> getCommenti() {...} } Java
  • 16. OPERAZIONI  Le azioni che la classe “sa eseguire”  Aspetto comportamentale  Servizio che può essere richiesto ad ogni istanza della classe Visibilità nome (lista-parametri) : tipo-ritorno {proprietà aggiuntive}  Direzione: in, out, inout (default in)  Visibilità: + pubblica, - privata, # protetta  Query  Modificatori  Operazione ≠ metodo  Concetti differenti in presenza di polimorfismo Ingegneria del software mod. A Riccardo Cardin 16 Lista-parametri := direzione nome : tipo = default Definizione
  • 17. OPERAZIONI  Esempio 3 Modificatori Ingegneria del software mod. A Riccardo Cardin 17 Operazioni query • addCommento modifica lo stato interno di un post • getCommenti non modifica lo stato
  • 18. SOMMARIO  Introduzione  Proprietà e Operazioni  Concetti base e avanzati  Diagrammi degli oggetti Ingegneria del software mod. A Riccardo Cardin 18
  • 19. COMMENTI E NOTE  Informazioni aggiuntive  Singole e solitarie  Legate a qualsiasi elemento grafico  Linea tratteggiata  Esempio 5 Ingegneria del software mod. A Riccardo Cardin 19
  • 20. RELAZIONE DI DIPENDENZA  Definizione Si ha dipendenza tra due elementi di un diagramma se la modifica alla definizione del primo (fornitore) può cambiare la definizione del secondo (client)  UML permettere di modellare ogni sorta di dipendenza  Non è una proprietà transitiva!  Le dipendenze vanno minimizzate!  Loose coupling  Da inserire solo quando danno valore aggiunto  Troppe dipendenze creano confusione nel diagramma Ingegneria del software mod. A Riccardo Cardin 20
  • 21. RELAZIONE DI DIPENDENZA  Definizione Ingegneria del software mod. A Riccardo Cardin 21
  • 22. RELAZIONE DI DIPENDENZA  Dipendenze UML Ingegneria del software mod. A Riccardo Cardin 22 Parola chiave Significato «call» La sorgente invoca un’operazione della classe destinazione. «create» La sorgente crea istanze della classe destinazione. «derive» La sorgente è derivata dalla classe destinazione «instantiate» La sorgente è una istanza della classe destinazione (meta-classe) «permit» La classe destinazione permette alla sorgente di accedere ai suoi campi privati. «realize» La sorgente è un’implementazione di una specifica o di una interfaccia definita dalla sorgente «refine» Raffinamento tra differenti livelli semantici. «substitute» La sorgente è sostituibile alla destinazione. «trace» Tiene traccia dei requisiti o di come i cambiamenti di una parte di modello si colleghino ad altre «use» La sorgente richiede la destinazione per la sua implementazione.
  • 23. RELAZIONE DI DIPENDENZA  Esempio 6 Ingegneria del software mod. A Riccardo Cardin 23
  • 24. AGGREGAZIONE E COMPOSIZIONE  Aggregazione  Relazione di tipo “parte di” (part of)  Gli aggregati possono essere condivisi  Composizione  Come aggregazione, ma:  Gli aggregati appartengono ad un solo aggregato  Solo l’oggetto intero può creare e distruggere le sue parti Ingegneria del software mod. A Riccardo Cardin 24 0..1, 1
  • 25. AGGREGAZIONE E COMPOSIZIONE  Esempio 7 Ingegneria del software mod. A Riccardo Cardin 25 Un’istanza di un commento può essere presente in al più un post!
  • 26. CLASSI DI ASSOCIAZIONE  Aggiungono attributi e operazioni alle associazioni  Esiste solo una istanza della classe associazione fra i due oggeti Ingegneria del software mod. A Riccardo Cardin 26 1 1 * 1..* Una persona ha SOLO UN lavoro in un’azienda Può essere “promossa” Una persona può avere PIU’ lavori in un’azienda
  • 27. CLASSI DI ASSOCIAZIONE  Traduzione in linguaggio di programmazione Ingegneria del software mod. A Riccardo Cardin 27 Java public class BlogAccount { private String name = null; private Category[] categories; private BlogEntry entries; } public class Category { private String name; } public class BlogEntry { private String name; private Category[] categories } Ovviamente, è necessario imporre che esista solo un’istanza
  • 28. GENERALIZZAZIONE  A generalizza B, se ogni oggetto di B è anche un oggetto di A  Equivale all’ereditarietà dei linguaggi di programmazione  Ereditarietà multipla supportata, ma da NON USARE!  Le proprietà della superclasse non si riportano nel diagramma della sottoclasse  A meno di override  Sostituibilità  Sottotipo ≠ sottoclasse  Interfacce / implementazinoe Ingegneria del software mod. A Riccardo Cardin 28
  • 29. GENERALIZZAZIONE  Esempio 4 Ingegneria del software mod. A Riccardo Cardin 29 Gli attributi protected sono visibili anche dalle classi derivate Il metodo della classe base è ereditato e può esserne fatto l’override
  • 30. CLASSI ASTRATTE  Classe Astratta {abstract}  Classe che non può essere istanziata  Operazione astratta non ha implementazione  Altre operazioni possono avere implementazione Ingegneria del software mod. A Riccardo Cardin 30 getUsername non ha implementazione Nome in corsivo
  • 31. INTERFACCE  Interfaccia «interface»  Classe priva di implementazione  Una classe realizza un’interfaccia se ne implementa le operazioni Ingegneria del software mod. A Riccardo Cardin 31 «Ball» notation UML 2.x «Stereotype» notation UML 1.x
  • 32. INTERFACCE  Interfacce Ingegneria del software mod. A Riccardo Cardin 32 IPagamento
  • 33. CLASSIFICAZIONE E GENERALIZZAZIONE  Sottotipo ≠ “è un” (IS A)  Generalizzazione  Proprietà transitiva  La classificazione non lo è!  Classificazione  Dipendenza «instantiate» Ingegneria del software mod. A Classificazione • Shep è un Border Collie • Border Collie è una razza Riccardo Cardin 33 Generalizzazione • Un Border Collie è un cane • I cani sono animali • I cani sono una specie
  • 34. CARATTERISTICHE VARIE  Operazioni e attributi statici  Applicabili alla classe, non all’oggetto  Sottolineati sul diagramma  Parole chiave  Estensione della semantica UML  Costrutto simile + parola chiave!  «interface»  {abstract}  Responsabilità  Funzionalità offerte  Aggiunta alla classe con commento Ingegneria del software mod. A Riccardo Cardin 34
  • 35. CARATTERISTICHE VARIE  Proprietà derivate  Possono essere calcolate a partire da altri valori  Definiscono un vincolo fra valori  Si indicano con “/” che precede il nome della proprietà  Proprietà read only e frozen  {readOnly}  Non vengono forniti i servizi di scrittura  {frozen}  Immutabile, non può variare nel suo ciclo di vita  Enumerazioni  Insiemi di valori che non hanno altre proprietà oltre il valore simbolico  «enumeration» Ingegneria del software mod. A Riccardo Cardin 35
  • 36. CARATTERISTICHE VARIE  Classi Parametriche  T è detto “segnaposto”  Come template C++ o generics Java Ingegneria del software mod. A Riccardo Cardin 36 Raffinamento
  • 37. CARATTERISTICHE VARIE  Classi Attive  Eseguono e controllano il proprio thread Ingegneria del software mod. A Riccardo Cardin 37
  • 38. CONSIGLI UTILI  Diagrammi molto ricchi di concetti  Non cercare di utilizzare tutte le notazioni disponibili  Cominciare dapprima con i concetti semplici  Una prospettiva concettuale permette di esplorare il linguaggio di un particolare business  Mantenere la notazione semplice e non introdurre concetti legati al software  Concentrarsi nel disegno dei diagrammi delle parti più importanti  Disegnare ogni cosa è sinonimo di diagrammi non fondamentali che diventano obsoleti molto presto! Ingegneria del software mod. A Riccardo Cardin 38
  • 39. SOMMARIO  Introduzione  Proprietà e Operazioni  Concetti base e avanzati  Diagrammi degli oggetti Ingegneria del software mod. A Riccardo Cardin 39
  • 40. DIAGRAMMI DEGLI OGGETTI  Grafo delle istanze, comprensivo di associazioni e valori delle proprietà  Fotografia degli oggetti che compongono un sistema  Non ci sono parti obbligatorie  Specifica di istanza  Anche di classi astratte, omissione dei metodi, ecc… Ingegneria del software mod. A Riccardo Cardin 40 nome dell’istanza : nome della classe
  • 41. RIFERIMENTI OMG Homepage – www.omg.org  UML Homepage – www.uml.org  UML Distilled, Martin Fowler, 2004, Pearson (Addison Wesley)  Learning UML 2.0, Kim Hamilton, Russell Miles, O’Reilly, 2006 Ingegneria del software mod. A Riccardo Cardin 41