1
Diagrammi di Classe
Programmazione in Rete e Laboratorio
Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino baldoni@di.unito.it
http://www.di.unito.it/~baldoni/didattica
Una breve introduzione ai Diagrammi di Classe 2
Introduzione
■ I diagrammi di classe (Class Diagram) sono una notazione (grafica) per la descrizione dei tipi degli oggetti (classi) che fanno parte di un sistema ed i tipi di relazioni (statiche) che esistono tra di questi (es: associazioni, sottotipo, ecc.)
■ Fa parte dello standard dell’Object Management Group chiamato Unified Modeling Language (UML)
■ Riferimento: Martin Fowler, UML Distilled (2nd ed.), Addison Wesley Longman, Inc., 2000
Una breve introduzione ai Diagrammi di Classe 3
Perche` usarli?
■ La ragione fondamentale e` comunicare con un formalismo indipendente dai linguaggi di programmazione i concetti che guidano la realizzazione di un sistema orientato agli oggetti
■ Un programma scritto in un linguaggio orientato agli oggetti e` spesso difficile da leggere e capire (non ha una struttura
“sequenziale”)
■ Documentare un programma
Una breve introduzione ai Diagrammi di Classe 4
Un esempio
■ Tratto da Martin Fowler, UML Distilled (2nd ed.)
■ In OOP innanzitutto si individuano le classi del progetto e poi i metodi associati (prima i tipi di dati e poi le operazioni per manipolare i dati)
Una breve introduzione ai Diagrammi di Classe 5
Classe
Descrive:
■ il nome della classe
■ gli attibuti della classe specificandone il tipo, la visibilita` e l’eventuale inizializzazione
■ le operazioni (metodi) contenute nella classe e le loro signature
■ In italico i nomi delle classi astratte
Class Name Attributi
Operazioni
Abstract Class Name
Una breve introduzione ai Diagrammi di Classe 6
Attributi
■ Simile alle associazioni ma il loro tipo e` associato a semplici classi come stringhe, interi, reali, booleani. Indicano un valore piuttosto che un puntatore (o riferimento)
■ Puo` essere associato un valore di inizializzazione.
■ La visibilita` e` indicata mediate i simboli + (public), # (protected) e - (private)
Class Name Attributi
Operazioni Esempio:
-cont: int -nome: String
#lati: double[]
+base: double
2
Una breve introduzione ai Diagrammi di Classe 7
Operazioni
■ Corrispondono nei linguaggi di programmazione ai metodi delle classi
■ Come per gli attributi la visibilita`
e` indicata mediate i simboli + (public), # (protected) e - (private)
■ In italico i nomi dei metodi astratti (in classi astratte) Class Name
Attributi
Operazioni Esempio:
+area: double +perimetro: double -ipotenusa: double
Una breve introduzione ai Diagrammi di Classe 8
Generalizzazione
■ Descrive la relazione di ereditarieta` tra le varie classi di un progetto
■ Denota la specializzazione di una classe
■ Le sottoclassi estendono una sopraclasse, le sottoclassi ereditano i metodi delle sopraclassi e definiscono nuove funzionalita`
Sopraclasse
Sottoclasse 1
Sottoclasse 2
Una breve introduzione ai Diagrammi di Classe 9
Associazione
■ Descrive le relazioni esistenti tra le istanze di varie classi
■ E` possibile indicare direzzione di accessibilita` (mediante una freccia)
■ E` possibile indicare la molteciplicita`
class A {
private SetOf_A setOfObjsA;
} class B {
private B objectOfA;
} Classe A
Classe B role A
role B 1
*
Classe C role C 0..1
role A 1
Una breve introduzione ai Diagrammi di Classe 10
Aggregazioni e Composizione
■ Aggregazione: descrive le relazioni “e` parte-di”
■ Composizione: descrive il fatto che oggetti siano composti di altri oggetti
■ Difficile separare nettamente associazioni, aggegrazioni, composizione. In genere aggregazioni e composizioni indicano una piu` stretta dipendenza tra le istanze delle classi
■ Esprimono (insieme all’associazione) la relazione di contenimento
Classe
aggregazione
Classe
composizione
Una breve introduzione ai Diagrammi di Classe 11
Interfacce
■ Le interfacce sono indicate esplicitamente mediante apposita dicitura
■ Analogamente le classi astratte
■ Nomi delle classi e nomi dei metodi (astratti) in italico
■ Una freccia tratteggiata unisce una intefaccia ad una sua implementazione
■ Un altro tipo di freccia tratteggiata esprime dipendenza (intefacce e abstract non hanno istanze)
<<interface>>
Interface Name
realizzazione
dipendenza
Implementing Class
Client Class
Una breve introduzione ai Diagrammi di Classe 12
Together/J
■ della Object International Software Ltd.
■ Together/J permette di mantenere la sincronizzazione tra i diagrammi della progettazione e il codice Java
■ Facilita` la realizzazione di un programma orientato agli oggetti integrando la progettazione con la scrittura vera e propria del programma stesso
■ Object Domain, Rational Rose, ...