gaspare.pappalardo1
Ominide
1 min. di lettura
Vota 5 / 5

Concetti Chiave

  • Un ADT (Abstract Data Type) è un concetto utilizzato per ottimizzare la gestione di strutture dati come alberi, grafi, liste e pile.
  • In C, gli ADT non sono supportati nativamente, ma vengono implementati separando la struttura in file diversi con l'utilizzo di file header (.h).
  • Si distinguono due tipi di ADT: il quasi ADT, che include la definizione della struttura nei file header, e l'ADT di prima classe, che nasconde la struttura dati.
  • Un quasi ADT definisce sia la struttura dati che i metodi nel file header, rendendola accessibile direttamente.
  • L'ADT di prima classe nasconde la definizione della struttura dati, rendendola accessibile solo attraverso i metodi definiti.

C - ADT (Abstract Data Type)

Un ADT in ambito informatico è un tipo di dato astratto utilizzato per gestire in modo ottimizzato alcune strutture dati utili ed importanti come gli alberi, binari e non, i grafi, le liste, le pile, ma anche particolari configurazioni personalizzazioni di queste strutture utili alla risoluzione di generici problemi.
Nel linguaggio di programmazione C non esiste un vero e proprio metodo fornito dal linguaggio per la definizione di queste strutture dati; vengono pertanto create sfruttando la possibilità di usare più file nel codice sorgente, e quindi gestire la struttura di cui si vuole creare l’ADT in un file separato, accessibile dal file principale tramite i metodi e le definizioni presenti nel file header (file di estensione .h).
E’ possibile definire due diverse tipologie di ADT, il quasi ADT e l’ADT di prima classe; il quasi ADT possiede nell’header oltre ai metodi per la gestione della struttura dati, anche la definizione stessa della struttura dati, nell’ADT di prima classe invece la struttura dati non è definita nell’header corrispondente ma è accessibile solo dai metodi che la gestiscono, nascondendo la loro composizione all’esterno.

Es.

Quasi ADT

list.h

struct list{
int val;
struct list *next;
}

void addnodo(struct list *list);

ADT 1° classe

list.h

typedef struct list * listpointer;

void addnodo(listpointer list);

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community