• Non ci sono risultati.

Linguaggi di Porgrammazione: Paradigmi di Programmazione

N/A
N/A
Protected

Academic year: 2022

Condividi "Linguaggi di Porgrammazione: Paradigmi di Programmazione"

Copied!
6
0
0

Testo completo

(1)

Matteo Baldoni

Dipartimento di Informatica - Universita` degli Studi di Torino C.so Svizzera, 185 - I-10149 Torino (Italy)

e-mail: [email protected] - URL: http://www.di.unito.it/~baldoni

Linguaggi di

Porgrammazione: Paradigmi di Programmazione

Una breve introduzione ai Diagrammi di Classe

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

(2)

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

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

(3)

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

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

(4)

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

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

(5)

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

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 Classe

aggregazione

Classe

composizione

(6)

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

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

Riferimenti

Documenti correlati

The compiler will generate an error, indicating a violation of this rule, for any integer constant whose type is not the same in any standard-conforming implementation. Example

- Infatti, durante la compilazione di un singolo file sorgente, il compilatore non può conoscere le entità (variabili e funzioni) definite negli altri file e quindi ha

• Richiede tuttavia di un processo di traduzione da Assembly a linguaggio macchina, ma a differenza dei linguaggi ad alto livello la corrispondenza è 1:1 (ad ogni istruzione

[r]

double reali virgola mobile in doppia precisione reali virgola mobile in doppia precisione 8 byte 8 byte Intervallo. Intervallo ±10 ±10 308 308 , , 15 15 cifre significative

■ 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

• E’ un grafo che rappresenta le entità di un modello come classi e interfacce assieme ai loro contenuti (campi e/o metodi) e alle loro relazioni statiche.. • Una

[r]