Exercice 132
Énoncé
On dispose du patron de classes suivant :
template class point
{ T x, y ; // coordonnees
public :
point (T abs, T ord) { x = abs ; y = ord ; }
void affiche ()
{ cout << "Coordonnees : " << x << " " << y << "\n" ;
}
} ;
a. Créer, par dérivation, un patron de classes pointcol permettant de manipuler des
« points colorés » dans lesquels les coordonnées et la couleur sont de même type.
On redéfinira convenablement les fonctions membre en réutilisant les fonctions
membre de la classe de base.
b. Même question, mais en prévoyant que les coordonnées et la couleur puissent être
de deux types différents.
c. Toujours par dérivation, créer cette fois une « classe ordinaire » (c’est-à-dire une
classe qui ne soit plus un patron de classes, autrement dit qui ne dépende plus de
paramètres...) dans laquelle les coordonnées sont de type int, tandis que la
couleur est de type short.
a. Aucun problème particulier ne se pose ; il suffit de faire dériver pointcol de
point. V oici ce que peut être la définition de notre patron (ici, nous avons laissé le
constructeur « en ligne » mais nous avons défini affiche en dehors de la classe) :
template class pointcol : public point
{ T cl ;
public :
pointcol (T abs, T ord, T coul) : point (abs, ord)
{ cl = coul ;
}
void affiche () ;
} ;
template void pointcol::affiche ()
{ point::affiche () ;
cout << " couleur : " << cl << "\n" ;
}
Voici un petit exemple d’utilisation (il nécessite les déclarations appropriées ou
323
Énoncé
On dispose du patron de classes suivant :
template
{ T x, y ; // coordonnees
public :
point (T abs, T ord) { x = abs ; y = ord ; }
void affiche ()
{ cout << "Coordonnees : " << x << " " << y << "\n" ;
}
} ;
a. Créer, par dérivation, un patron de classes pointcol permettant de manipuler des
« points colorés » dans lesquels les coordonnées et la couleur sont de même type.
On redéfinira convenablement les fonctions membre en réutilisant les fonctions
membre de la classe de base.
b. Même question, mais en prévoyant que les coordonnées et la couleur puissent être
de deux types différents.
c. Toujours par dérivation, créer cette fois une « classe ordinaire » (c’est-à-dire une
classe qui ne soit plus un patron de classes, autrement dit qui ne dépende plus de
paramètres...) dans laquelle les coordonnées sont de type int, tandis que la
couleur est de type short.
a. Aucun problème particulier ne se pose ; il suffit de faire dériver pointcol
point
constructeur « en ligne » mais nous avons défini affiche en dehors de la classe) :
template
{ T cl ;
public :
pointcol (T abs, T ord, T coul) : point
{ cl = coul ;
}
void affiche () ;
} ;
template
{ point
cout << " couleur : " << cl << "\n" ;
}
Voici un petit exemple d’utilisation (il nécessite les déclarations appropriées ou
323
