Home
Accesso / Registrazione
 di 

Programmazione orientata agli oggetti in ANSI-C. Esercizi

Programmazione orientata agli oggetti in ANSI-C. Esercizi

Se un oggetto può appartenere a più set allo stesso tempo, dobbiamo necessariamente disporre di una diversa rappresentazione per i set. Se continuassimo a rappresentare gli oggetti come un numero intero univoco e se impostassimo un tetto al numero di oggetti disponibili, potremmo rappresentare un set come una mappa di bit memorizzati in una lunga stringa di caratteri, dove un bit selezionato dal valore dell'oggetto è impostato o "azzerato" in base o meno alla presenza dell'oggetto nel set.

Una soluzione convenzionale più generale prevede di rappresentare i set come liste lineari di nodi in cui memorizzare l'indirizzo degli oggetti nel set. Ciò impone che non vi siano restrizione sugli oggetti e permette di implementare un set senza davvero conoscere alcunchè sulla rappresentazione dell'oggetto.

Per il debug, è molto utile accedere agli oggetti individualmente. Una soluzione praticabile è quella di disporre pertanto di due funzioni:

int store (const void * object, FILE * fp);
int storev (const void * object, va_list ap);

store() scrive la descrizione dell'oggetto sul file pointer. storev() invece usa va_arg() per recuperare il file pointer dalla lista di argomenti puntata da ap. Entrambe le funzioni restituiscono il numero di caratteri scritti. storev() è utile se dovessimo implementare le seguenti funzioni per i set:

int apply (const void * set,
int (* action) (void * object, va_list ap), ...);


apply() chiama action() per ogni elemento nel set e passa il resto della lista degli argomenti. action() restituisce true se tutti gli elementi sono stati analizzati.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 9 utenti e 80 visitatori collegati.

Ultimi Commenti