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:

Sezione Hosting per Drupal!

E' attualmente in sviluppo una sezione del sito interamente dedicata agli hosting per drupal, quindi hosting linux configurati e pensati appositamente per sfruttare al massimo delle risorse il nostro caro cms. La sezione sarà arricchita da classifiche, comparazioni e caratteristiche vincenti e non di ogni singolo provider e relativa offerta.
Blog: 

Drupal-Patch AuthorContact: Aggiungere campi al modulo di contatto dell'autore

L'Author Contact è un utilissimo modulo per Drupal che predispone un blocco con una form di contatto all'autore del nodo. Ecco rilasciata la patch per estendere i campi disponibili e renderlo un po simile a webform

Drupal: 

Come creare velocemente un business online

Molte persone mi chiedono quali sono le fasi necessarie per creare velocemente un business online. La risposta è sorprendentemente semplice. O meglio: semplice si ma il "velocemente" potrebbe non esser per tutti. Qualsiasi attività o lavoro online difficilmente riesce a portare le soddisfazioni volute in poco tempo. Ma questa appunto è una variabile che dipende per lo più dal tuo grado di conoscenze e passioni iniziali.

Internet Marketing: 

La moderna crittografia a chiave asimmetrica

Più di recente è stato proposto un approccio alternativo che risolve brillantemente i limiti della crittografia a chiave segreta. Esso si basa sull’uso non di una singola chiave, bensì di coppie di chiavi: ciascuna coppia è costituita da una chiave pubblica (Kp), normalmente utilizzata per cifrare, e da una chiave privata o segreta (Ks) normalmente utilizzata per decifrare. 

Risorse per sviluppo: 

Codici medioevali e il disco cifrante

Nel medioevo i cifrari sono soprattutto monografici: nomi e frasi convenzionali vengono sostituiti da simboli speciali. Un altro noto cifrario basato su un macchinario fu il disco cifrante dovuto al famoso architetto L.B.Alberti: il disco era composto di due cerchi cifranti concentrici, uno esterno fisso con 24 caselle contenenti 20 lettere latine maiuscole (inclusa la Z, con U=V ed escluse H J K W Y) ed i numeri 1 2 3 4 per il testo in chiaro; ed uno interno mobile, con le 24 lettere latine minuscole per il testo cifrato.

Risorse per sviluppo: