Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Carnielli Efrem: Programmazione a componenti<br />
Def<strong>in</strong>izione ed uso <strong>di</strong> classi, oggetti ed <strong>in</strong>terfacce<br />
domanda “make or buy?” e, <strong>in</strong><strong>di</strong>pendentemente dalla risposta, ci saranno dei pregi<br />
e dei <strong>di</strong>fetti riguardo alla scelta effettuata. Nel caso del make, avremo un sistema<br />
<strong>in</strong>formativo perfettamente aderente alle metodologie e alle esigenze dell’azienda.<br />
Per realizzare un software <strong>di</strong> questo tipo le conoscenze richieste sono elevate nel<br />
caso <strong>di</strong> progetti <strong>di</strong> un certo livello, <strong>in</strong>oltre bisogna tenere <strong>in</strong> considerazione il<br />
tempo necessario per la realizzazione <strong>di</strong> software. Se la scelta cade sul make si ha<br />
un notevole risparmio sia <strong>in</strong> term<strong>in</strong>i <strong>di</strong> tempo sia <strong>di</strong> denaro, però è necessario<br />
uniformarsi alle metodologie <strong>di</strong> produzione aziendale standard dovendo<br />
r<strong>in</strong>unciare alla propria specificità e adottando un’applicazione che non sod<strong>di</strong>sfa<br />
pienamente le nostre esigenze. La soluzione migliore si trova comb<strong>in</strong>ando le due<br />
modalità: il software verrà creato unendo e facendo cooperare varie parti già<br />
presenti sul mercato e il quale funzionamento è già stato collaudato. Queste parti<br />
vengono chiamate componenti. Il lavoro, perciò, consiste nel far cooperare le varie<br />
componenti e nello sviluppare quelle che eventualmente non esistono. La<br />
caratteristica fondamentale <strong>di</strong> una componente è il fatto che,una volta creata, può<br />
essere riutilizzata <strong>in</strong> <strong>di</strong>verse situazioni.<br />
Queste sono le caratteristiche <strong>di</strong> una componente:<br />
• è un’unità <strong>di</strong> <strong>di</strong>stribuzione <strong>in</strong><strong>di</strong>pendente: deve essere ben separata<br />
dall’ambiente <strong>in</strong> cui viene utilizzata. Incapsula le caratteristiche che la<br />
costituiscono. Viene def<strong>in</strong>ita come unità nel senso <strong>di</strong> unicità: non può<br />
essere <strong>di</strong>stribuita “a pezzi”.<br />
• è un’unità <strong>di</strong> composizione con terzi: potrebbe non servire a niente da<br />
sola ma deve essere utilizzata <strong>in</strong>sieme ad altre componenti. Il suo uso<br />
da solo <strong>in</strong> certi casi è consentito e <strong>di</strong>pende dalla sua granularità. Per<br />
comporsi, due componenti non devono conoscere le parti costituenti<br />
dell’altra componente. Perciò, sono necessarie delle specifiche che<br />
accompagn<strong>in</strong>o la componente per poterla utilizzare. L’unica cosa che si<br />
deve conoscere per poter utilizzare una componente è la sua<br />
<strong>in</strong>terfaccia.<br />
• non deve avere uno stato persistente: la componente viene chiamata<br />
immutable plan perché se ci sono due componenti uguali, non ci deve<br />
essere uno stato che permetta <strong>di</strong> <strong>di</strong>st<strong>in</strong>guere la prima dalla seconda.<br />
Cerchiamo <strong>di</strong> chiarire la def<strong>in</strong>izione <strong>di</strong> componente con degli esempi.<br />
Penso ad un componente come alla classe Str<strong>in</strong>g, un’istanza della classe può essere<br />
“ciao”. Ma la classe Str<strong>in</strong>g non è cambiata è sempre la stessa. Prendo l’istanza<br />
“notte”, ho due istanze <strong>di</strong>verse <strong>di</strong> uno stesso componente.<br />
Il componente è un programma statico ed immutabile.<br />
La libreria C math.h è una componente mentre il programma che usa la libreria con<br />
l’istruzione #<strong>in</strong>clude math.h, crea un’istanza della componente. Nella macch<strong>in</strong>a<br />
164