Tipo di Dato Astratto o Abstract Data Type - ADT

 

Un Tipo di Dato Astratto o Abstract Data Type - ADT è, per definizione, un nuovo tipo di dato che estende i tipi nativi forniti dal linguaggio di programmazione.
 
[adsense:block:adcontenuto]
 
Un ADT è caratterizzato da un insieme di:
  1.  dati;
  2.  operazioni che agiscono sui dati, leggengoli/scrivendoli;

 

Fin qui niente di nuovo: anche i linguaggi procedurali, come per esempio C, consentono di definire un ADT. Ma, mentre per tali linguaggi chiunque può avere accesso ai dati e modificarli, i linguaggi Object Oriented ne garantiscono la loro riservatezza.
 
Supponiamo infatti di voler definire in C (non preoccuparsi della sintassi) un ADT Persona cioé una struttura dati che mantenga le informazioni (dati) di una Persona, come, per esempio, il nome, il cognome e la data di nascita e che consenta di creare e stampare le informazioni di una persona (operazioni):
 
/* Struttura dati per mantenere la data di nascita */
struct Data {
int giorno;
int mese;
int anno;
};
/* Struttura dati per mantenere le info. della persona */
struct Persona {
struct Data *data_di_nascita;
char *nome;
char *cognome;
};
/* Setta le info. della persona */
void creaPersona(struct Persona *persona)
{
persona->data_di_nascita->giorno = 31;
persona->data_di_nascita->mese = 12;
persona->data_di_nascita->anno = 1976;
persona->nome = "Eugenio";
persona->cognome = "Polito";
}
[adsense:block:adcontenuto]
/* Stampa le info. della persona */
void stampaDati(struct Persona *persona)
{
printf("Mi chiamo %s %s e sono nato il %i-%i-%i \n",
persona->nome,
persona->cognome,
persona->data_di_nascita->giorno,
persona->data_di_nascita->mese,
persona->data_di_nascita->anno);
}
/* crea un puntatore alla struttura e lo inizializza;
quindi stampa le info. */
int main()
{
struct Persona *io;
creaPersona(io);
stampaDati(io);
return 0;
}
 
Se eseguiamo questo programma, otteniamo il seguente output:
 
Mi chiamo Eugenio Polito e sono nato il 31-12-1976
 
Proviamo adesso a modificare il main nel seguente modo:
 
int main()
{
struct Persona *io;
creaPersona(io);
io->data_di_nascita->mese = 2;
stampaDati(io);
return 0;
}
 
Questa volta l’output è:
 
Mi chiamo Eugenio Polito e sono nato il 31-2-1976
 
Cioè le mie informazioni private sono state modificate con l’assegnamento:
 
io->data_di_nascita->mese = 2

 

 

Risorse per sviluppo: 

Ti potrebbero anche interessare:

Drupal Fusion theme core e Acquia Slate Theme

 Inserire la banner image nella regione preface del Drupal Theme Acquia Slate a volte può dare problemi o disorientare l'utente più inesperto. Ecco tutti i passi per configurare il tema in m0do che visualizzi l'immagine di vostro gradimento oppure aggiungere altre immagini selezionabili nello skinr.

Drupal Seo: Configurazione e personalizzazione di Page Title

Il Page Title è un modulo utilissimo per l'ottimizzazione sui motori di ricerca (SEO). Permette un controllo totale sull'impostazione dei titoli dei contenuti configurando patterns specifici per ognuno di essi insieme a numerose caratteristiche che potete leggere direttamente nella descrizione del modulo.
Drupal: 

Come guadagnare in 14 giorni con gli infoprodotti

Se tra i modelli di business che hai scelto preferisci l'email marketing per la vendita di infoprodotti, allora devi subito sapere che non si fanno tanti soldi con un solo infoprodotto: è irrilevante il prezzo a cui lo vendi e il pubblico a cui lo proponi.

Internet Marketing: 

L’algoritmo RSA e altri algoritmi

 

Il più conosciuto e utilizzato algoritmo a chiavi asimmetriche è stato proposto da Rivest, Shamir e Andleman nel 1978 e porta come nome la sigla dei cognomi dei suoi inventori. L’algoritmo sfrutta l’approccio di Diffie/Hellman e si basa sulla fattorizzazione di numeri interi grandi.
Risorse per sviluppo: