Exercice 134
É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" ;
}
} ;
On souhaite créer un patron de classes cercle permettant de manipuler des cercles,
définis par leur centre (de type point) et un rayon. On n’y prévoira, comme fonctions
membre, qu’un constructeur et une fonction affiche se contentant d’afficher les
coordonnées du centre et la valeur du rayon.
a. Le faire par héritage (un cercle est un point qui possède un rayon).
b. Le faire par composition d’objets membre (un cercle possède un point et un
rayon).
a. La démarche est analogue à celle de la question a de l’exercice 132. On a affaire à
un patron dépendant de deux paramètres (ici T et U) :
template class cercle : public point
{ U r ; // rayon
public :
cercle (T abs, T ord, U ray) : point (abs, ord)
{ r = ray ;
}
void affiche ()
{ point::affiche () ;
cout << " rayon : " << r ;
}
} ;
b. Le patron dépend toujours de deux paramètres (T et U) mais il n’y a plus de notion
d’héritage :
template class cercle
{ point c ; // centre
U r ; // rayon
public :
cercle (T abs, T ord, U ray) : c(abs, ord) // pourrait r(ray)
{ r = ray ;
}
327
É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" ;
}
} ;
On souhaite créer un patron de classes cercle permettant de manipuler des cercles,
définis par leur centre (de type point) et un rayon. On n’y prévoira, comme fonctions
membre, qu’un constructeur et une fonction affiche se contentant d’afficher les
coordonnées du centre et la valeur du rayon.
a. Le faire par héritage (un cercle est un point qui possède un rayon).
b. Le faire par composition d’objets membre (un cercle possède un point et un
rayon).
a. La démarche est analogue à celle de la question a de l’exercice 132. On a affaire à
un patron dépendant de deux paramètres (ici T et U) :
template
{ U r ; // rayon
public :
cercle (T abs, T ord, U ray) : point
{ r = ray ;
}
void affiche ()
{ point
cout << " rayon : " << r ;
}
} ;
b. Le patron dépend toujours de deux paramètres (T et U) mais il n’y a plus de notion
d’héritage :
template
{ point
U r ; // rayon
public :
cercle (T abs, T ord, U ray) : c(abs, ord) // pourrait r(ray)
{ r = ray ;
}
327
