Académique Documents
Professionnel Documents
Culture Documents
Plan du cours 2
I. II. III. IV. V. Principe de modlisation oriente objet Dfinition et implmentation d une classe Constructeurs et destructeurs Dtails de C++ Conversion de types
Une classe
Un objet possde des attributs (proprits) et des comportements ou des oprations sur ces attributs, ralises par des fonctions membres (on les appelle aussi mthodes) mthodes) On dfinit une classe pour reprsenter un ensemble d'objets ayant les mmes proprits et des comportements communs.
Une classe
Supposons un logiciel qui doit traiter plusieurs types de cube, tel que une bote 10x5x20, de couleur rouge, ou bien un cube 5x5x5 de couleur orange. Il faut travailler avec plusieurs types de cubes mais qui possdent tous les mmes proprits et les mmes oprations (ou comportements) pour modifier ces proprits.
Nom de la classe Listes des attributs attribut: type Listes des fonctions membres fonction(arguments): valeur retourne
Un objet
Exemple: Exemple: Un rectangle 5x10x20 est un objet de classe Cube et un Cube 5x5x5 est un autre objet de la classe Cube. Un objet est donc une instanciation d une classe. Cet objet possde tous les attributs et toutes les fonctions membres de la classe, mais avec des valeurs d attributs propres l objet.
Un objet (suite)
Une fois qu une classe Cube a t dfinie, il est possible d instancier des objets de la classe Cube, qui possderont des attributs associs des valeurs. rectangle Largeur = 5 auteur = 10 ChangerCouleur
10
Cube unCube;
(Cube) auteur = 5 Longueur = 5 Largeur = 5
12
Principe d encapsulation
Les valeurs des attributs peuvent tre changes seulement par les mthodes fournies avec l'objet. L'tat de l'objet ne peut tre modifi directement par le client. Changer Taille Les oprations pour afficher les valeurs des attributs pour le client
Rotation
crire Info
13
La rutilisation
ritage
La rutilisation est une notion omniprsente dans le langage C++, car il est possible d utiliser une classe d un certain contexte pour la redfinir dans un autre contexte en effectuant un hritage
14
II - Dfinition et implmentation
d une classe
Classe Attributs Fonctions membres Double inclusion du fichier d entte Paramtres par dfaut des fonctions Inline Principe d encapsulation et abstraction des donnes donnes
15
Classe
En C++, la dfinition d une classe dbute toujours en spcifiant class, suivie du nom de la classe. class, Toute l interface de la classe, c est--dire les attributs et estles signatures (entte) de fonctions, est contenue entre des accolades. La dfinition d une classe se situe TOUJOURS dans un fichier entte (ex: cube.h)
Exemple: class Cube { (. . . Dfinition) }; Note: ne pas oublier le ; aprs la deuxime accolade. aprs
INF1101 Algorithmes et structures de donnes 16
17
Attributs
Les attributs d une classe sont des variables ou des pointeurs, mais qui ne seront gnralement accessibles que par les fonctions membres de la classe. Principe d encapsulation. D aucune faon les attributs pourront tre modifis ou accds l extrieur de la classe (ex: partir du main()). main()). Ils seront accessibles l aide des fonctions membres. Pour les protger, on indique que les attributs seront classifis private. private.
INF1101 Algorithmes et structures de donnes 18
Attributs (suite)
Pour la classe Cube, on a:
RFRENCE: cube.h
class Cube { private: int Largeur; int Longeur; int Hauteur; Couleur maCouleur; . . . };
19
Attributs (suite)
Cependant, le compilateur dclarera les attributs private par dfaut (mais c est une bonne habitude de toujours le spcifier explicitement):
class Cube { int Largeur; int Longeur; int Hauteur; Couleur maCouleur; . . . };
20
Fonctions membres
Afin de pouvoir manipuler les attributs d une classe, nous avons recours aux fonctions membres qui permettent de retourner ou modifier la valeur d un ou des attributs. Les fonctions membres qui seront accessibles au client de la classe seront signales par : public De ce fait mme, les fonctions membres qui n ont aucune utilit l extrieur de la classe mais qui seront utilises uniquement par la classe peuvent tre regroupes dans la section private
INF1101 Algorithmes et structures de donnes 21
24
25
26
Le compilateur indique cette erreur puisque le fichier Cube.h est inclus dans voiture.h et dans main.cpp. Ainsi, le compilateur passe deux fois dans le fichier Cube.h, et puisque que les enttes de double inclusion ont t retires, il y a redfinition de la classe Cube.
INF1101 Algorithmes et structures de donnes 28
Si setTaille2() est appele sans paramtres, la fonction setTaille2() recevra des paramtres avec les valeurs de dfaut.
Cube C2; C2.setTaille2(); C2.setTaille2(2,6); C2.setTaille2(2); C2.setTaille2(2); // Impossible de faire M2.SetValvesCylindre(,6);
30
III - Constructeurs et
destructeurs
Constructeurs par dfaut et par paramtres Constructeur de recopie Destructeurs New d un objet (constructeur)
31
Le constructeur
Le constructeur est une fonction membre publique appele implicitement lors de la cration d un objet. Pour un tableau d objet, le constructeur par dfaut est appel pour chaque lment du tableau. Le constructeur sert initialiser un objet lors de sa cration.
INF1101 Algorithmes et structures de donnes 32
33
35
38
39
L objet reoit temporairement un nouveau nom qui sera utilis par la fonction
(..) }
40
41
image=
img
42
Constructeur de recopie
Un constructeur qui sert crer un objet identique l objet reu en paramtre. Chaque attribut de l objet en construction est initialis selon les valeurs des attributs de l objet copier.
43
44
Destructeurs
Le destructeur est une fonction membre publique appele implicitement lors de la destruction d un objet. Les destructeurs sont appels dans l ordre inverse des constructeurs. La fonction principale d un destructeur rside dans la dsallocation de mmoire dynamique qui a t alloue par le constructeur.
46
Destructeurs (suite)
RFRENCE: sphere.h class Sphere { public: Sphere(); Sphere(float unRayon, char* unNom); Sphere(const sphere &copie); ~Sphere(); . . . private: float char* Couleur Translation Rotation
Destructeur
monRayon; monNom; maCouleur; maPosition; monAngle;
Destructeurs (suite)
Constructeur de sphere :
Sphere::Sphere() : monRayon( 0 ), maCouleur( ), maTransformation( ) { nbSphere++; monNom = new char[30]; }
Destructeur de sphere :
Sphere::~Sphere() { nbSphere--; nbSphere--; if(monNom) delete []monNom; }
48
Constructeur et destructeur
Une classe a toujours automatiquement un constructeur par dfaut, un constructeur de recopie et un destructeur sans qu il soit ncessaire de les crire. Le constructeur de recopie implicite fait une copie attribut par attribut.
49
50
Vecteurs
Utilisation de la classe vector de la librairie STL pour une gestion plus facile et efficace. La classe vector est une classe gnrique, c est--dire une classe qui permet de stocker n importe quel type d objet. Inclusion de la librairie: #include <vector> Dclaration en spcifiant le nom du vecteur et le type d lments conserver: Ex: vector<int> lesEntiers;
INF1101 Algorithmes et structures de donnes 51
Manipulation d un vecteur
Redimensionnement d un vecteur : vector<image> Im; Im.resize(9); Accs une position avec l oprateur [ ] : image UneIm=Im[4];
52
Utilisation d un string
Inclusion de la librairie: #include <string> Dclaration en spcifiant le nom de la chane Ex: string c_chaine; La classe string gre toute manipulation d une chane de caractres, tel que la copie (=), La concatnation (+=), L accs un caractre ([]) et ([]) La taille de la chane (.size() ).
INF1101 Algorithmes et structures de donnes 53
Utilisation d un string
Exemple:
c_chaine=Bonjour; c_chaine=Bonjour; c_chaine+= le monde; c_chaine[c_chaine.size()c_chaine[c_chaine.size()-1]=s;
54