Exercice 140
Énoncé
Écrire une classe point (à deux coordonnées entières) qui dispose d’un constructeur à
deux arguments levant une exception lorsque les deux composantes sont égales. De
plus, l’appel d’un constructeur sans argument ou à un seul argument devra également
lever un autre type d’exception. Ici, on limitera les fonctions membre de point aux
seuls constructeurs.
Écrire un programme d’utilisation de la classe point, interceptant convenablement les
exceptions prévues, en mentionnant la cause.
Il est préférable d’associer un type classe à chacune des deux sortes d’exceptions
prévues. Nous choisirons er_compos pour l’exception déclenchée en cas d’égalité des
composantes et er_constr pour celle déclenchée en cas d’appel d’un constructeur à 0 ou 1
argument ; la distinction entre les deux se fera par une valeur entière transmise au
constructeur et conservée ici dans un champ public. Voici ce que pourrait être la
définition de notre classe :
class er_compos
{ } ;
class er_constr
{ public :
int num ;
er_constr (int n) { num = n ; }
} ;
class point
{ int x, y ;
public :
point (int abs, int ord)
{ if (abs==ord) throw new er_compos ;
x=abs ; y=ord ;
}
point ()
{ throw new er_constr (0) ;
}
point (int abs)
{ throw new er_constr (1);
}
} ;
Voici un exemple de programme qui se contente de signaler les exceptions interceptées
en interrompant l’exécution. On notera que les trois constructions proposées
provoquent effectivement une exception qui, au bout du compte, interrompt le
342
Précédent

- 343/398

Suivant