Introduzione ai Tipi di Dati Astratti (ADT)

Transcript

Introduzione ai Tipi di Dati Astratti (ADT)
Corso di Linguaggi e Traduttori 1
AA 2004-05
Introduzione ai Tipi di Dati Astratti
(ADT)
1
1
Accesso non Disciplinato alle
Strutture Dati
A
B
S
C
A, B, C procedure
S
struttura dati
Per accedere ad S le procedure A, B e C devono conoscerne i dettagli !
Si ha così un'inutile propagazione delle informazioni su S che devono essere resi
noti ad A, B e C.
2
2
Accesso non Disciplinato alle
Strutture Dati
Ø Problemi relativi ad un accesso alle strutture dati
"non disciplinato":
§ Propagazione degli errori difficilmente controllabile e
prevedibile
? Un errore provocato da un modulo cliente A potrebbe rivelarsi
in corrispondenza di un modulo cliente B che invece partendo
da dati consistenti li manipolerebbe correttamente!
§ Difficile manutenzione
? Un cambiamento su S indurrebbe modifiche su tutti i moduli
che lo utilizzano)
§ Riuso tipicamente inesistente
? Le strutture dati riflettono aspetti relativi all'applicazione e
all'implementazione, e quindi non sono stati "pensati" per
essere riusati
3
3
Dati Astratti (Abstract Data
Type)
Ø Cos'è un dato astratto? E’ l’implementazione del
concetto di segretario/a.
A
B
D
S
C
A, B, C procedure
D
dato astratto
Per accedere ad S le procedure A, B e C non devono più conoscerne i dettagli!
Per accedere ad S (incapsulata in D) le procedure A, B e C utilizzano soltanto le
primitive di accesso che D mette a disposizione .
4
4
Dati Astratti
Ø Vantaggi relativi ad un accesso alle strutture dati
"disciplinato":
§ Propagazione degli errori controllabile e prevedibile
§ Facile manutenzione
§ Riuso
5
5
Dati Astratti
Ø Un dato astratto incapsula sia le strutture dati da
manipolare che le procedure che si incaricano della
loro gestione
Ø Un dato astratto nasconde tutti quei dettagli che
non sono rilevanti per chi lo utilizza
Ø I dati astratti consentono quindi di realizzare
un'astrazione sui dati e sul controllo
6
6
Dati Astratti
Ø Tipicamente un dato astratto viene realizzato
tramite un opportuno modulo
Ø Cos'è un modulo?
§ Nella sua forma più moderna, un modulo è un insieme
di risorse di cui alcune sono visibili all'esterno mentre
altre sono soltanto locali.
§ Un modulo è comunque il risultato di un'operazione di
astrazione.
7
7
Moduli
Ø I moduli come astrazione sul controllo e sui dati …
§ Sia i dati che il controllo possono essere
opportunamente incapsulati tramite moduli
§ L'incapsulamento da solo però non basta a
caratterizzare un modulo come dato astratto!
PERCHE’?
8
8
Moduli
Ø Affinché un modulo implementi un dato astratto
occorre che anche il principio di occultamento
dell'informazione sia rispettato!
Ø In pratica un modulo che implementa un dato
astratto deve esportare (ovvero mettere a
disposizione dell'esterno) soltanto risorse
"logiche" (tipicamente gli entry point delle
primitive di accesso) e nascondere opportunamente
quelle "fisiche" (tipicamente i dettagli relativi alle
caratteristiche delle strutture dati)
9
9
Information Hiding: un Esempio
Somma
Sottrai
A+jB
Moltiplica
Dividi
Inizializza
ParteReale
ParteImmaginaria
Modulo
Argomento
Complesso
10
10
Dati Astratti
Ø L'utilizzazione di un dato astratto avviene…
§ Dichiarando le istanze del tipo di dato
§ Manipolando le istanze del tipo di dato tramite le
operazioni primitive messe a disposizione
§ Le operazioni definite per la manipolazione dei dati
astratti sono le uniche operazioni possibili per operare
sulle istanze del tipo di dato astratto corrispondente
11
11
Dati Astratti
Ø Per rappresentare un tipo di dato occorre fornirne
una descrizione il più possibile completa,
consistente e non ambigua
Ø Ci sono sostanzialmente tre “viste” di un tipo di
dato che possono essere fornite:
§ Sintattica
§ Semantica
§ Pragmatica
12
12
Dati Astratti
Type Specification
Syntax
Semantics
Pragmatics
Signature
Behavior
Implementation
Under-Specified
Fully Abstract
Over-specified
ABSTRACT DATA TYPE = SYNTAX + SEMANTICS!
13
13
Dati Astratti
Ø Le tre “viste” non sono complementari !
§ La vista sintattica è chiaramente incompleta poiché
specifica soltanto l’interfaccia del dato
§ La vista sintattica e quella semantica forniscono una
descrizione completa del dato prescindendo
completamente da qualunque dettaglio realizzativo
§ La vista pragmatica è ridondante: aggiunge
informazioni inutili ai fini del comportamento del
dato.
14
14
ADT: Concetti Informativi
Ø Breve riassunto sugli ADT
§ Sono il risultato di un'operazione di astrazione
? Il comportamento del dato viene definito specificandone la
sintassi e la semantica ma non l’implementazione
§ Soddisfano il principio dell’occultamento dell’informazione
? Ogni istanza di un ADT può essere rivista come una sorta di
“scatola nera” che nasconde all'esterno la sua
implementazione fisica
§ Suggeriscono di incapsulare in un unico modulo dati e
primitive di accesso ai dati
? Un modulo è tipicamente un insieme di risorse di cui alcune
sono visibili all'esterno mentre altre sono soltanto locali
(soltanto i servizi utilizzati dai moduli clienti devono essere
esportati)
15
15
Un Esempio: ADT Contatore
newCounter
increment
0
decrement
value
min 0
Counter
isZero
Vogliamo realizzare un contatore che esporti ai
moduli clienti le operazioni di:
•incremento (increment)
•decremento (decrement)
•estrazione del valore corrente (value)
•controllo di contatore nullo (isZero)
NB Per scelta di progetto il contatore non può
assumere valori negativi (concettualmente è
16
mappato sui numeri naturali)
16
Specifica Sintattica dell’ADT
Contatore
increment / decrement
newCounter
value
Counter
Natural
isZero
Boolean
17
17
Specifica Sintattica dell’ADT
Contatore
type Counter
uses Natural, Boolean
syntax
newCounter : → Counter
increment : Counter → Counter
decrement : Counter → Counter
value : Counter → Natural
isZero : Counter → Boolean
semantics ...
end Counter.
18
18
Specifica Semantica dell’ADT
Contatore
type Counter
uses Natural, Boolean
syntax ...
semantics
for all C in Counter;
decrement(newCounter) = newCounter
decrement(increment(C)) = C
value(newCounter) = 0
value(increment(C)) = 1 + value(C)
isZero(newCounter) = true
isZero(increment(C)) = false
end Counter.
19
19
Ø La spiegazione dettagliata del metodo attraverso il
quale si perviene alla specifica semantica di un
dato astratto verrà illustrata successivamente.
20
20