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