Page 663 - Informatica dalla A a Z
P. 663
Riutilizzo del codice
Quando si giunge alla risoluzione di un problema risulterà più comodo sfruttare il codice
già scritto, per tale risoluzione, piuttosto che riscriverlo tutto daccapo, ma se dobbiamo
apportare delle modifiche, nonostante quando abbiamo scritto quel codice tutto ci sem-
brava chiaro e scontato, in fase di revisione, questo potrebbe apparirci complicato po-
tremmo non capire perché siano stati usati dei costrutti invece di altri; per questo è sempre
utile commentare ampiamente le proprie scelte.
Per questo spesso è più conveniente sfruttare il polimorfismo e l’ereditarietà del linguaggio
C++, per ampliare le possibilità delle “vecchie” classi per venire incontro alle nuove neces-
sità del nostro nuovo programma. È anche possibile utilizzare una strategia per la quale si
costruiscono delle classi in modo tale che accettino in input differenti tipi di dato pur con-
tinuando ad avere lo stesso tipo di comportamento (situazione parametrica). Per fare que-
sto si costruiscono delle classi che rappresentano un modello di classe (template).
Il C++ consente di definire delle funzioni generiche, ovvero delle funzioni parametriche in
grado di avere lo stesso comportamento anche in presenza di parametri di tipo diverso.
Esempio:
template <class T>
T Maggiore (T a, T b)
{
T ris;
if (a>b)
{
ris = a;
}
else
{
ris = b;
}
return (ris);
}
Questa funzione prende in input due interi (a e b) e restituisce il maggiore tra i due. Qui al
posto del tipo int utilizziamo il tipo T, un tipo generico.
Nota: L’uso della lettera T come indicatore del tipo generico è una pura convenzione. Al
suo posto possiamo utilizzare un nome qualsiasi.
Ora non ci rimane che vedere come richiamare e utilizzare la funzione generica realizzata:
int main ()
{
int max1, x1=6, x2=7;
double max2, y1=10.5, y2=10.6;
max1 = Maggiore<int>(x1,x2);
max2 = Maggiore<double>(y1,y2);
659