Come organizziamo il codice?

Progettazione: l’insieme delle attività relative al concepimento della soluzione informatica di un problema (architettura, dati da manipolare, tecniche algoritmiche)

Modularizzazione: dividere per gestire la complessità (unità di programma)

Moduli

Un modulo è una unità di programma che mette a disposizione risorse e servizi computazionali (dati, funzioni, ..)

Fondamentale nella realizzazione dei concetti di astrazione e information hiding

Riuso di componenti già costruite e verificate (funzioni per sottoproblemi di utilità generale)

Costituita da una interfaccia visibile ai clienti che definisce le risorse ed i servizi (astrazioni) messi a disposizione dei clienti (programma o altri moduli) e una sezione implementativa (body) completamente occultata che implementa le risorse ed i servizi esportati

Astrazione

Procedimento mentale che consente da una parte di evidenziare le caratteristiche pregnanti di un problema e dall’altra di offuscare gli aspetti che si ritengono secondari rispetto a un determinato obiettivo

Information hiding

La realizzazione di alti livelli di astrazione passa attraverso la definizione di strutture capaci di mettere a disposizione (esportare) risorse e servizi occultando, ovvero rendendo inaccessibili, i dettagli implementativi

Moduli e C

In C non esiste un apposito costrutto per realizzare un modulo, di solito un modulo coincide con un file

Per esportare le risorse definite in un file (modulo), il C fornisce un particolare tipo di file, chiamato header file (estentione .h); un header file rappresenta l’interfaccia di un modulo verso gli altri moduli