ENSA de Marrakech
Langage C/C++
TD n°4.
Exercice 0:
Réaliser une classe String permettant de gérer les chaînes de caractères. Elle contient alors un attribut de type
« char « la classe doit fournir les services suivants :
1. Un constructeur avec un paramètre de type char contenu de la chaîne.
2. Surcharger le constructeur pour accepter un entier ; même chose pour un réel et un caractère.
3. Un destructeur-.
- void set(int i, char c) qui remplace le caractère numéro i par le caractère ‘c’.
- void set(char* string) qui remplace le contenu de la chaîne par la chaîne string.
- Surcharger la méthode set pour accepter un entier ; même chose pour un réel et un caractère .
- Surcharger la méthode append pour accepter un entier ; même chose pour un réel et un caractère.
- void insert(int i, char* string) : insertion d’une chaîne " string à la position i.
- void insert(int i, String string) : insertion d’une chaîne " string à la position i.
- Surcharger la méthode insert pour accepter en deuxième paramètre un entier ; même chose pour un réel et
un caractère.
- int intValue) : permettant de retourner sous forme d’entier le contenu de la chaîne si c’est un entier.
- double doubleValue() : permettant de retourner sous forme de réel le contenu de la chaîne si c’est un réel.
5. Surcharger les opérateurs + pour la concaténation des chaînes, et = pour les affectations entre chaînes.
Remarque : il existe une classe standard en C++ classe string ( s miniscule) #include <string> qui permet la
manipulation des chaines de caractères. Le but de cet exercice est de voir comment elle est définie.
Exercice 1 :
On dispose d’un fichier nommé point.h contenant la déclaration suivante de la classe point :
class point
{ float x, y ;
public :
void initialise (float abs=0.0, float ord=0.0)
{ x = abs ; y = ord ;
}
void affiche ()
{ cout << "Point de coordonnées : " << x << " " << y << "\n" ;
}
float abs () { return x ; }
float ord () { return y ; }
};
1. Créer une classe pointb, dérivée de point comportant simplement une nouvelle fonction membre nommée
rho, fournissant la valeur du rayon vecteur (première coordonnée polaire) d’un point.
2. Même question, en supposant que les membres x et y ont été déclarés protégés (protected) dans point, et
non plus privés.
3. Introduire un constructeur dans la classe pointb.
4. Quelles sont les fonctions membre utilisables pour un objet de type pointb ?
Exercice 2:
On garde la classe Point de l’exercice précédent.
1. Créer une classe PointCol, dérivée de Point comportant un attribut de type char* couleur.
2. Définir dans les 2 classes un constructeur de copie.
3. Surchargez dans les 2 classes l’opérateur d’affectation.
Exercice 4:
1) reprendre la classe Vecteur3D, et surcharger les opérateurs d’entrée sortie pour les Vecteur3D.
Pour l’affichage : (abs, ord, cote)
Pour la saisie : abs ord cote
2) Idem pour la classe Pile.
Exercice 5: Template
Rendre la classe Vecteur3D une classe template qui permet de créer des vecteurs de coordonnées de tous
types.