Abstract Data Type (ADT)

Parlando di operazioni su strutture dati abbiamo visto come le possibilità di “agire” siano molte. Per esempio, la sola operazione di inserimento può essere essere interpretato in vario modo: inserimento all’inizio, inserimento in una posizione precisa, …

Dallo studio delle strutture dati, si capisce che non è possibile avere la massima efficienza per tutte le operazioni possibili in un’unica struttura (si veda qui un esempio in Java).

Spesso, perciò, si definisce una struttura dati astratta in termini delle operazioni che si possono fare su quella struttura. Ad esempio possono definire una struttura dati vettore come una qualsiasi struttura dati che permetta l’accesso mediante indici (come negli array).

Definizione: Abstract Data Type (ADT)

Una abstract data type (ADT) è la specificazione delle operazioni che possono essere eseguite oltre che dei tipi di dati che possono essere manipolati. Le ADT sono solitamente associate a costrutti astratti di un linguaggio di programmazione come, ad esempio, le interfacce Java.

La definizione sopra indica che normalmente si utilizza specifici costrutti dei linguaggi di programmazione (ad esempio interface in Java) per specificare le strutture dati astratte. A titolo esemplificativo, la seguente interfaccia Java permette di leggere (get) e scriver (set) oggetti di tipo String utilizzando un indice int per specificare la posizione, tale interfaccia è una minima rappresentazione dell’ADT vettore di cui abbiamo fatto cenno sopra.

interface VectorADT {
    String get(int i);
    void set(int i, String val);
}
Definizione: Application Programming Interface (API)

La definizione in forma di costrutto di programmazione viene spessa chiamata API (acronimo per Application Programming Interface). È importante tenere a mente che il termine API indica più in generale la descrizione di una parte del codice in termini di quali input e quali output sono ammessi ed in termini del comportamento del software rispetto agli input forniti.

Esercizio

Definire una ADT per gestire un carrello della spesa, la definizione deve essere fatta in due “fasi”:

  1. si definiscono le operazioni e i dati coinvolti in modo discorsivo;
  2. si definisce la API utilizzando un linguaggio di programmazione a scelta.

  • Michele Schimd © 2024
  • Ultimo aggiornamento: 17/02/2024
  • Materiale di studio e di esercizio per gli alunni dello Zuccante.

Creative Commons License