Comments
Transcript
Diagrammi di Classe - Dipartimento di Informatica
Introduzione 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 ■ 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 [email protected] http://www.di.unito.it/~baldoni/didattica Una breve introduzione ai Diagrammi di Classe Perche` usarli? ■ Un esempio 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 ■ ■ ■ ■ 2 Un programma scritto in un linguaggio orientato agli oggetti e` spesso difficile da leggere e capire (non ha una struttura “sequenziale”) 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) Documentare un programma Una breve introduzione ai Diagrammi di Classe 3 Classe Una breve introduzione ai Diagrammi di Classe 4 Attributi Descrive: ■ Class Name Class Name ■ Attributi ■ Operazioni ■ Abstract Class Name ■ 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 Una breve introduzione ai Diagrammi di Classe Attributi Esempio: -cont: int -nome: String #lati: double[] +base: double ■ ■ 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) Operazioni 5 Una breve introduzione ai Diagrammi di Classe 6 1 Operazioni Generalizzazione ■ Class Name ■ Attributi Operazioni ■ Esempio: +area: double +perimetro: double -ipotenusa: double 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) ■ Sottoclasse 2 Una breve introduzione ai Diagrammi di Classe Descrive le relazioni esistenti tra le istanze di varie classi E` possibile indicare direzzione di accessibilita` (mediante una freccia) E` possibile indicare la molteciplicita` ■ ■ role A ■ ■ Classe ■ aggregazione ■ role B * Classe B 0..1 role C Classe C class A { private SetOf_A setOfObjsA; } class B { private B objectOfA; } Una breve introduzione ai Diagrammi di Classe Classe composizione 9 Interfacce ■ 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 Una breve introduzione ai Diagrammi di Classe 10 Together/J ■ <<interface>> Interface Name ■ dipendenza realizzazione Client Class Implementing Class 8 Aggregazioni e Composizione Classe A 1 ■ 7 Associazione 1 Sopraclasse 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` Sottoclasse 1 Una breve introduzione ai Diagrammi di Classe role A ■ ■ ■ ■ 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) Una breve introduzione ai Diagrammi di Classe 11 ■ ■ ■ ■ 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, ... Una breve introduzione ai Diagrammi di Classe 12 2