Incapsulamento (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Pil56-bot (discussione | contributi)
smistamento lavoro sporco
Nessun oggetto della modifica
Riga 1:
{{F|programmazione|gennaio 2013}}
In [[informatica]], nell'ambito della [[programmazione]], si definisce '''incapsulamento''' (o '''encapsulation''') la tecnica di ''nascondere'' il funzionamento interno - deciso in fase di progetto - di una parte di un [[programma (informatica)|programma]], in modo da proteggere le altre parti del programma dai cambiamenti che si produrrebbero in esse nel caso che questo funzionamento fosse difettoso, oppure si decidesse di implementarlo in modo diverso. Per avere una protezione completa è necessario disporre di una robusta [[Interfaccia (informatica)|interfaccia]] che protegga il resto del programma dalla modifica delle funzionalità soggette a più frequenti cambiamenti.
 
==Utilizzo==
 
I termini ''incapsulamento'' e ''information hiding'' (letteralmente ''"occultamento delle informazioni"'') vengono spesso usati come sinonimi, anche se, a rigore, esiste una differenza concettuale: l'information hiding è il ''principio teorico'' su cui si basa la ''tecnica'' dell'incapsulamento. Secondo il concetto di information hiding i dettagli implementativi di una [[classe (informatica)|classe]] - o di un costrutto di altro tipo ([[oggetto (informatica)|oggetto]], [[modularità|modulo]], ecc) - sono nascosti all'utente. Pertanto una parte di un programma può nascondere informazioni ''incapsulandole'' in un costrutto dotato di interfaccia, permettendo l'information hiding. Tuttavia l'incapsulamento non è garanzia di information hiding, poiché potrebbe - se mal utilizzato o per motivi particolari - non nascondere i dettagli implementativi.
 
L'incapsulamento riduce il costo da pagare per correggere gli errori in fase di sviluppo di un programma. Questo risultato viene ottenuto strutturando l'intero progetto, ed i moduli che lo compongono, in modo che un'errata decisione presa nell'implementazione di un singolo modulo non si ripercuota sull'intero progetto, e possa essere corretta modificando soltanto '''quel''' modulo. Si potrà così evitare di dover modificare anche i moduli ''clienti'', che interagiranno con il modulo ''incapsulato'' soltanto attraverso ''interfacce''.
Riga 12:
==Esempi==
 
Da un punto di vista generale - quindi non solo applicato alla [[ciclo di vita del software|progettazione del software]] - l'incapsulamento può essere visto come la suddivisione di un sistema complesso in unità modulari aventi ciascuna una funzionalità ben definita. Ad esempio, un'[[automobile]] è un macchinario piuttosto complesso. Per facilitarne il progetto, la fabbricazione e la manutenzione è vantaggioso suddividerla in "moduli" dotati di mutue interfacce, in modo che la progettazione dell'insieme possa prescindere dalla definizione dei dettagli dei singoli moduli, rendendo in questo modo l'automobile non solo più facile da progettare, ma anche più economica da produrre.
 
Continuando con l'esempio dell'automobile, una casa automobilistica potrebbe avere un modello di lusso, equipaggiato con un motore più potente, ed un modello economico, dotato di un motore standard. Ai progettisti conviene prevedere per entrambi i motori gli stessi collegamenti (interfacce) con il resto della vettura, in modo che tutti e due possano essere assemblati all'interno del medesimo vano motore, unificato nelle due versioni. Gli stessi motori, quindi, si potranno collegare allo stesso [[albero di trasmissione]], agli stessi supporti ed agli stessi comandi. La differenza fra le due versioni è che quella di lusso avrà un motore con [[cilindrata]] maggiore e gli [[iniettori]] progettati per fornire il maggior volume di miscela aria-carburante che il motore di cilindrata maggiore richiede. In aggiunta al motore più potente, la versione di lusso può anche essere equipaggiata con altri optional, come un'[[autoradio]] con incorporato [[lettore CD]], sedili più comodi, migliori [[Sospensione (meccanica)|sospensioni]], [[pneumatici]] più larghi e differenti colori. Nonostante queste varianti, la maggior parte della vettura di lusso è uguale alla versione più economica. L'autoradio con lettore CD è un "modulo" che sostituisce la radio normale, che, a sua volta, è un modulo della versione economica. I sedili più confortevoli sono montati sui medesimi supporti di quelli standard. Che i sedili siano di pelle, plastica, abbiano il supporto lombare o no, non ha importanza.