La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

INF1101 Algorithmes et structures de données1 Cours 1 Les classes et les objets.

Présentations similaires


Présentation au sujet: "INF1101 Algorithmes et structures de données1 Cours 1 Les classes et les objets."— Transcription de la présentation:

1 INF1101 Algorithmes et structures de données1 Cours 1 Les classes et les objets

2 INF1101 Algorithmes et structures de données2 Plan du cours 2 I.Principe de modélisation orientée objet II.Définition et implémentation dune classe III. Constructeurs et destructeurs IV. Détails de C++ V. Conversion de types

3 INF1101 Algorithmes et structures de données3 I - Principe de modélisation orientée objet Classe Classe Objet Objet Principe dencapsulation Principe dencapsulation Réutilisation Réutilisation

4 INF1101 Algorithmes et structures de données4 Une classe Un objet possède des attributs (propriétés) et des comportements ou des opérations sur ces attributs, réalisées par des fonctions membres (on les appelle aussi méthodes) Un objet possède des attributs (propriétés) et des comportements ou des opérations sur ces attributs, réalisées par des fonctions membres (on les appelle aussi méthodes) On définit une classe pour représenter On définit une classe pour représenter un ensemble d'objets ayant les mêmes un ensemble d'objets ayant les mêmes propriétés et des comportements communs. propriétés et des comportements communs.

5 INF1101 Algorithmes et structures de données5 Une classe Supposons un logiciel qui doit traiter plusieurs types de cube, tel que une boîte 10x5x20, de couleur rouge, ou bien un cube 5x5x5 de couleur orange. Supposons un logiciel qui doit traiter plusieurs types de cube, tel que une boîte 10x5x20, de couleur rouge, ou bien un cube 5x5x5 de couleur orange. Il faut travailler avec plusieurs types de cubes mais qui Il faut travailler avec plusieurs types de cubes mais qui possèdent tous les mêmes propriétés et les mêmes possèdent tous les mêmes propriétés et les mêmes opérations (ou comportements) pour modifier ces opérations (ou comportements) pour modifier ces propriétés. propriétés.

6 INF1101 Algorithmes et structures de données6 Une classe (suite) Une classe est donc un « super » type que lon définit, une Une classe est donc un « super » type que lon définit, une généralisation dun objet possédant des propriétés et généralisation dun objet possédant des propriétés et des opérations (ou comportements). des opérations (ou comportements). Dans le langage C++, une classe ressemble à une structure Dans le langage C++, une classe ressemble à une structure que lon définirait ( struct type_cube ) avec des que lon définirait ( struct type_cube ) avec des méthodes (ou fonctions membres) pouvant modifier les méthodes (ou fonctions membres) pouvant modifier les champs de la structure. champs de la structure. Largeur Longueur Hauteur

7 INF1101 Algorithmes et structures de données7 Attributs et opérations dune classe Les propriétés d'un objet sont représentées à l'aide Les propriétés d'un objet sont représentées à l'aide d'attributs. d'attributs. Des valeurs sont associées à ces attributs. Des valeurs sont associées à ces attributs. Exemple : Largueur de Cube1 est 10 Exemple : Largueur de Cube1 est 10 Les comportements d'un objet sont représentés à l'aide Les comportements d'un objet sont représentés à l'aide de fonctions membres (méthodes). de fonctions membres (méthodes). Une fonction membre est une action ou une Une fonction membre est une action ou une transformation qui peut être effectuée sur un objet ou transformation qui peut être effectuée sur un objet ou par un objetExemple : Pour effectuer un déplacement, par un objet. Exemple : Pour effectuer un déplacement, il est nécessaire de faire translater le cube. il est nécessaire de faire translater le cube.

8 INF1101 Algorithmes et structures de données8 Représentation dune classe Nom de la classe Listes des attributs attribut: type Listes des fonctions membres fonction(arguments): valeur retournée Cube Largeur: double Longueur: double Hauteur: double setCouleur ( Couleur ) setTaille (haut, larg, long )

9 INF1101 Algorithmes et structures de données9 Un objet Exemple: Un rectangle 5x10x20 est un objet de classe Cube et un Cube 5x5x5est un autre objet de la classeCube. Cube 5x5x5 est un autre objet de la classe Cube. Un objet est donc une instanciation dune classe. Un objet est donc une instanciation dune classe. Cet objet possède tous les attributs et toutes les fonctions membres de la classe, mais avec des valeurs dattributs propres à lobjet. Cet objet possède tous les attributs et toutes les fonctions membres de la classe, mais avec des valeurs dattributs propres à lobjet.

10 INF1101 Algorithmes et structures de données10 Un objet (suite) Une fois quune classe Cube a été définie, il est possible dinstancier des objets de la classe Cube, qui posséderont des attributs associés à des valeurs. Largeur = 5 Hauteur = 10 ChangerCouleur rectangle

11 INF1101 Algorithmes et structures de données11 Représentation d'une instance (Cube) Hauteur = 5 Longueur = 5 Largeur = 5 (Cube) Hauteur = 5 Longueur = 5 Largeur = 5 Cube unCube; Nom de lobjet La classe Valeurs par défaut

12 INF1101 Algorithmes et structures de données12 Programmation par objets Principe dencapsulation (masquage des données) Types de données abstraits ( classe indépendante de son implémentation). Limplémentation de classe peut changer et le client est toujours fonctionnel. Réutilisation, réutilisation, réutilisation… Réutilisation: agrégation, héritage, généralisation.

13 INF1101 Algorithmes et structures de données13 Principe dencapsulation Largeur Longueur Hauteur Couleur Largeur Longueur Hauteur Couleur Les valeurs des attributs peuvent être changées seulement par les méthodes fournies avec l'objet. Changer Taille L'état de l'objet ne peut être modifié directement par le client. Écrire Info Translater Rotation Les opérations pour afficher les valeurs des attributs pour le client Changer Couleur

14 INF1101 Algorithmes et structures de données14 La réutilisation La réutilisation est une notion omniprésente dans le langage C++, car il est possible dutiliser une classe dun certain contexte pour la redéfinir dans un autre contexte en effectuant un héritage Héritage

15 INF1101 Algorithmes et structures de données15 II - Définition et implémentation dune classe ClasseClasse AttributsAttributs Fonctions membresFonctions membres Double inclusion du fichier dentêteDouble inclusion du fichier dentête Paramètres par défaut des fonctionsParamètres par défaut des fonctions InlineInline Principe dencapsulation et abstraction des donnéesPrincipe dencapsulation et abstraction des données

16 INF1101 Algorithmes et structures de données16 Classe En C++, la définition dune classe débute toujours en spécifiant class, suivie du nom de la classe.En C++, la définition dune classe débute toujours en spécifiant class, suivie du nom de la classe. Toute linterface de la classe, cest-à-dire les attributs etToute linterface de la classe, cest-à-dire les attributs et les signatures (entête) de fonctions, est contenue les signatures (entête) de fonctions, est contenue entre des accolades. entre des accolades. La définition dune classe se situe TOUJOURS La définition dune classe se situe TOUJOURS dans un fichier entête (ex: cube.h) dans un fichier entête (ex: cube.h)Exemple: class Cube class Cube { { (... Définition) }; Note: ne pas oublier le ; après la deuxième accolade. }; Note: ne pas oublier le ; après la deuxième accolade.

17 INF1101 Algorithmes et structures de données17 Interface et implémentation dune classe Limplémentation de la classe représente la définition des fonctions membres. (fichier.cpp)Limplémentation de la classe représente la définition des fonctions membres. (fichier.cpp) Linterface dune classe représente les comportements ou les fonctions membres disponibles aux clientsLinterface dune classe représente les comportements ou les fonctions membres disponibles aux clients ( fichier.h). ( fichier.h).

18 INF1101 Algorithmes et structures de données18 Attributs Les attributs dune classe sont des variables ou des pointeurs, mais qui ne seront généralement accessibles que par les fonctions membres de la classe. Principe dencapsulation.Les attributs dune classe sont des variables ou des pointeurs, mais qui ne seront généralement accessibles que par les fonctions membres de la classe. Principe dencapsulation. Daucune façon les attributs pourront être modifiés ou accédés à lextérieur de la classe (ex: à partir du main() ). Ils seront accessibles à laide des fonctions membres.Daucune façon les attributs pourront être modifiés ou accédés à lextérieur de la classe (ex: à partir du main() ). Ils seront accessibles à laide des fonctions membres. Pour les protéger, on indique que les attributs seront classifiés private.Pour les protéger, on indique que les attributs seront classifiés private.

19 INF1101 Algorithmes et structures de données19 Attributs (suite) Pour la classe Cube, on a: RÉFÉRENCE: cube.h class Cube {private: int Largeur; int Longeur; int Hauteur; Couleur maCouleur;... };

20 INF1101 Algorithmes et structures de données20 Attributs (suite) Cependant, le compilateur déclarera les attributs private par défaut (mais cest une bonne habitude de toujours le spécifier explicitement): class Cube { int Largeur; int Longeur; int Hauteur; Couleur maCouleur;... };

21 INF1101 Algorithmes et structures de données21 Fonctions membres Afin de pouvoir manipuler les attributs dune classe, nous avons recours aux fonctions membres qui permettent de retourner ou modifier la valeur dun ou des attributs.Afin de pouvoir manipuler les attributs dune classe, nous avons recours aux fonctions membres qui permettent de retourner ou modifier la valeur dun ou des attributs. Les fonctions membres qui seront accessibles au client de la classe seront signalées par : publicLes fonctions membres qui seront accessibles au client de la classe seront signalées par : public De ce fait même, les fonctions membres qui nont aucune utilité à lextérieur de la classe mais qui seront utilisées uniquement par la classe peuvent être regroupées dans la section privateDe ce fait même, les fonctions membres qui nont aucune utilité à lextérieur de la classe mais qui seront utilisées uniquement par la classe peuvent être regroupées dans la section private

22 INF1101 Algorithmes et structures de données22 Fonctions membres (suite) Pour la classe Cube, on a : class Cube { public: public: void setTaille(float la, float lo, float ha); void setCouleur(const couleur &uneCouleur); void setTransformation(const transf &uneTransformation); void getTaille(float &la, float &lo, float &ha) const; Couleur getCouleur() const;... private: private: int Largeur; int Longeur; int Hauteur; Couleur maCouleur;......};

23 INF1101 Algorithmes et structures de données23 Implémentation dune fonction membre La définition de la classe est située dans le fichier.h de la classe, toutes les implémentations des fonctions membres dune classe se situent dans le fichier.cpp de la classe (ex: moteur.cpp). Limplémentation dune classe devrait TOUJOURS être dans un fichier.cpp (ex: cube.cpp) et avoir le même nom que la classe.La définition de la classe est située dans le fichier.h de la classe, toutes les implémentations des fonctions membres dune classe se situent dans le fichier.cpp de la classe (ex: moteur.cpp). Limplémentation dune classe devrait TOUJOURS être dans un fichier.cpp (ex: cube.cpp) et avoir le même nom que la classe. La nomenclature à utiliser pour identifier une fonction La nomenclature à utiliser pour identifier une fonction membre dune classe dans le fichier.cpp est: membre dune classe dans le fichier.cpp est: [Type de retour de la fonction] [Nom de classe]::[Nom de la fonction] [Type de retour de la fonction] [Nom de classe]::[Nom de la fonction] (Paramètres de la fontion) { Implémentation de la fonction... } (Paramètres de la fontion) { Implémentation de la fonction... }

24 INF1101 Algorithmes et structures de données24 Exemple dimplémentation dune fonction membre Dans la classe Cube, on retrouverait dans le fichier Cube.cpp limplémentation de la fonction membre setTaille() : void Cube::setTaille(float uneLargeur, float uneLongueur, float uneHauteur) float uneHauteur){ maLargeur = uneLargeur; maLongueur = uneLongueur; maHauteur = uneHauteur; }

25 INF1101 Algorithmes et structures de données25 Double inclusion du fichier dentête : problématique Problématique: En compilant tout le programme, le compilateur passera à travers tous les fichiers séquentiellement. Cependant, si le compilateur passe deux fois à travers un fichier.h contenant la définition dune classe, ce dernier indiquera une erreur de redéfinition. Comment faire pour que le compilateur ne passe quune seule fois à travers la définition dune classe afin déviter la redéfinition?

26 INF1101 Algorithmes et structures de données26 Double inclusion du fichier dentête : solution Solution: #ifndef CUBE_H #define CUBE_H class Cube {... };#endif

27 INF1101 Algorithmes et structures de données27 Double inclusion du fichier dentête : explications La première fois que le compilateur passe à travers le fichier cube.h pour compiler la définition (ou linterface) de la classe Cube: 1) #ifndef CUBE_H : Est ce que le mot CUBE_H a été défini? Non. défini? Non. 2) Alors, #define CUBE_H : Définir le mot CUBE_H 3) #endif : Termine la définition La deuxième fois que le compilateur passe à travers le fichier cube.h pour compiler la définition (ou linterface) de la classe Cube: 1) #ifndef CUBE_H Est ce que le mot CUBE_H a été défini? Oui. défini? Oui. 2) Alors, sort du fichier.

28 INF1101 Algorithmes et structures de données28 Exemple double inclusion du fichier dentête Vérifiez le problème de la double inclusion en mettant en commentaire dans le fichier cube.h: #ifndef CUBE_H, #define CUBE_H et #endif Compilez tout le programme, et observez lerreur: error C2011: 'Cube' : 'class' type redefinition Cube.cpp 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 entêtes de double inclusion ont été retirées, il y a redéfinition de la classe Cube.

29 INF1101 Algorithmes et structures de données29 Paramètres par défaut des fonctions Les signatures des fonctions recevant des paramètres peuvent posséder des valeurs de défaut si aucun paramètre nest envoyé lors de lappel de la fonction.Les signatures des fonctions recevant des paramètres peuvent posséder des valeurs de défaut si aucun paramètre nest envoyé lors de lappel de la fonction. Les valeurs par défaut des paramètres doivent se trouver seulement dans la déclaration des fonctions membres de linterface de la classe et non pas dans limplémentation de la fonction membre.Les valeurs par défaut des paramètres doivent se trouver seulement dans la déclaration des fonctions membres de linterface de la classe et non pas dans limplémentation de la fonction membre.

30 INF1101 Algorithmes et structures de données30 Paramètres par défaut des fonctions (suite) RÉFÉRENCE: Cube.h, Cube(…) void setTaille2(float uneLargeur=5, float uneLongueur=5, float uneHauteur=5); float uneLongueur=5, float uneHauteur=5); Exemple: Si setTaille2() est appelée sans paramètres, la fonction recevra des paramètres avec les valeurs de défaut.Si setTaille2() est appelée sans paramètres, la fonction recevra des paramètres avec les valeurs de défaut. Cube C2; C2.setTaille2(); C2.setTaille2(); C2.setTaille2(2,6); C2.setTaille2(2,6); C2.setTaille2(2); C2.setTaille2(2); // Impossible de faire M2.SetValvesCylindre(,6); // Impossible de faire M2.SetValvesCylindre(,6);

31 INF1101 Algorithmes et structures de données31 III - Constructeurs et destructeurs Constructeurs par défaut et par paramètres Constructeurs par défaut et par paramètres Constructeur de recopie Constructeur de recopie Destructeurs Destructeurs New dun objet (constructeur) New dun objet (constructeur)

32 INF1101 Algorithmes et structures de données32 Le constructeur Le constructeur est une fonction membre publique appelée implicitement lors de la création dun objet.Le constructeur est une fonction membre publique appelée implicitement lors de la création dun objet. Pour un tableau dobjet, le constructeur par défaut est appelé pour chaque élément du tableau.Pour un tableau dobjet, le constructeur par défaut est appelé pour chaque élément du tableau. Le constructeur sert à initialiser un objet lors de sa création.Le constructeur sert à initialiser un objet lors de sa création.

33 INF1101 Algorithmes et structures de données33 Constructeurs par défaut Un constructeur par défaut : Constructeur ne recevant aucun paramètre. Constructeur ne recevant aucun paramètre. RÉFÉRENCE: cube.cpp, Cube::Cube(){ maLargeur = 0; maLargeur = 0; maLongueur = 0; maLongueur = 0; maHauteur = 0; maHauteur = 0;}

34 INF1101 Algorithmes et structures de données34 Constructeurs par paramètres Un constructeur par paramètres est un constructeur recevant des paramètres afin dinitialiser les attributs de lobjet selon les valeurs des arguments reçus.Un constructeur par paramètres est un constructeur recevant des paramètres afin dinitialiser les attributs de lobjet selon les valeurs des arguments reçus. Contrairement au constructeur par défaut, une classe peut posséder plusieurs constructeurs par paramètres, ayant tous des signatures différentes.Contrairement au constructeur par défaut, une classe peut posséder plusieurs constructeurs par paramètres, ayant tous des signatures différentes.

35 INF1101 Algorithmes et structures de données35 Constructeurs par paramètres RÉFÉRENCE: cube.cpp Cube::Cube(float uneLargeur, float uneLongueur, float uneHauteur) float uneHauteur){ maLargeur = uneLargeur; maLargeur = uneLargeur; maLongueur = uneLongueur; maLongueur = uneLongueur; maHauteur = uneHauteur; maHauteur = uneHauteur;}

36 INF1101 Algorithmes et structures de données36 Constructeurs par défaut et paramètres Note: il ne peut jamais coexister dans une classe un constructeur par défaut sans paramètres et un constructeur par défaut avec des paramètres possédant des valeurs de défaut. Il ne peut y avoir quun seul constructeur par défaut.Note: il ne peut jamais coexister dans une classe un constructeur par défaut sans paramètres et un constructeur par défaut avec des paramètres possédant des valeurs de défaut. Il ne peut y avoir quun seul constructeur par défaut. Il y aurait une ambiguïté lors de lappel dun constructeur, le compilateur ne sachant pas quel constructeur appeler.Il y aurait une ambiguïté lors de lappel dun constructeur, le compilateur ne sachant pas quel constructeur appeler.

37 INF1101 Algorithmes et structures de données37 Constructeurs par défaut et par paramètres (suite) Un constructeur par défaut et par paramètres : Un constructeur par défaut et par paramètres : Constructeur possédant des paramètres avec des valeurs Constructeur possédant des paramètres avec des valeurs de défaut. de défaut. RÉFÉRENCE: couleur.h RÉFÉRENCE: couleur.h class Couleur {public: Couleur(float r=0, float g=0, float b=0); Couleur(float r=0, float g=0, float b=0);... private: float rouge; float rouge; float vert; float vert; float bleu; float bleu;}

38 INF1101 Algorithmes et structures de données38 Constructeurs par défaut et par paramètres (suite) Faire une démonstration de lambiguité. Faire une démonstration de lambiguité. Il ny aura pas dambiguité tant que lon ne déclare pas dobjets (seulement un warning). Il ny aura pas dambiguité tant que lon ne déclare pas dobjets (seulement un warning).

39 INF1101 Algorithmes et structures de données39 Passage par référence void agrandirX2(image & img) //img change de valeur { /*--- modification de l'image transmise /*--- modification de l'image transmise a la fonction ----*/ a la fonction ----*/ img.bitmap = imgX2.bitmap; img.bitmap = imgX2.bitmap; img.largeur = imgX2.largeur; img.largeur = imgX2.largeur; img.hauteur = imgX2.hauteur; img.hauteur = imgX2.hauteur;...... En ajoutant un & devant le paramètre reçu, ceci indique quune référence En ajoutant un & devant le paramètre reçu, ceci indique quune référence à ladresse est transmise, et donc en modifiant la valeur du paramètre à ladresse est transmise, et donc en modifiant la valeur du paramètre dans la fonction, la modification sera conservée à la sortie de la fonction. dans la fonction, la modification sera conservée à la sortie de la fonction.

40 INF1101 Algorithmes et structures de données40 Schématisation du passage par référence image void agrandirX2(image & img) {(..)} lImage lImage Lobjet reçoit temporairement un nouveau nom qui sera utilisé par la fonction img img

41 INF1101 Algorithmes et structures de données41 Passage par valeur void agrandirX3(image img) void agrandirX3(image img) { /*--- modification de l'image transmise a la fonction ----*/ img.bitmap = imgX2.bitmap; img.bitmap = imgX2.bitmap; img.largeur = imgX2.largeur; img.largeur = imgX2.largeur; img.hauteur = imgX2.hauteur; // <- img RECU EN VALEUR, img.hauteur = imgX2.hauteur; // <- img RECU EN VALEUR, NE CHANGERA PAS! NE CHANGERA PAS! } Contrairement à la transmission par référence, la transmission par Contrairement à la transmission par référence, la transmission par valeur fait une copie temporaire de la variable dans la fonction, et donc valeur fait une copie temporaire de la variable dans la fonction, et donc une modification de la variable ne sera pas conservée à la sortie de la une modification de la variable ne sera pas conservée à la sortie de la fonction, puisque la modification a été faite sur une variable temporaire. fonction, puisque la modification a été faite sur une variable temporaire.

42 INF1101 Algorithmes et structures de données42 void agrandirX3(image img) {(..)} Schématisation du passage par valeur image= lImage lImage image= Le contenu de lImage est copié dans le paramètre img img

43 INF1101 Algorithmes et structures de données43 Constructeur de recopie Un constructeur qui sert à créer un objet identique à lobjet reçu en paramètre.Un constructeur qui sert à créer un objet identique à lobjet reçu en paramètre. Chaque attribut de lobjet en construction est initialisé selon les valeurs des attributs de lobjet à copier.Chaque attribut de lobjet en construction est initialisé selon les valeurs des attributs de lobjet à copier.

44 INF1101 Algorithmes et structures de données44 Exemple dun constructeur de recopie RÉFÉRENCE: cube.cpp Cube::Cube(const Cube &copie) : maCouleur( copie.maCouleur ), maTransformation( copie.maTransformation) maTransformation( copie.maTransformation){ maLargeur = copie.maLargeur; maLargeur = copie.maLargeur; maLongueur = copie.maLongueur; maLongueur = copie.maLongueur; maHauteur = copie.maHauteur; maHauteur = copie.maHauteur;}

45 INF1101 Algorithmes et structures de données45 Appel du constructeur de recopie Le constructeur de recopie est appelé lorsquon doit créer une instance dun objet qui est la copie dun autre objet.Le constructeur de recopie est appelé lorsquon doit créer une instance dun objet qui est la copie dun autre objet. Le constructeur de recopie est toujours appelé lorsquun objet est envoyé par valeur à une autre fonction. La fonction créera une copie temporaire de lobjet pour les fins de la fonction.Le constructeur de recopie est toujours appelé lorsquun objet est envoyé par valeur à une autre fonction. La fonction créera une copie temporaire de lobjet pour les fins de la fonction. Il est aussi appelé lorsquune fonction retourne un objet (attention: le constructeur de recopie nest pas appelé lorsquune fonction retourne une référence à un objet).Il est aussi appelé lorsquune fonction retourne un objet (attention: le constructeur de recopie nest pas appelé lorsquune fonction retourne une référence à un objet).

46 INF1101 Algorithmes et structures de données46 Destructeurs Le destructeur est une fonction membre publique appelée implicitement lors de la destruction dun objet.Le destructeur est une fonction membre publique appelée implicitement lors de la destruction dun objet. Les destructeurs sont appelés dans lordre inverse des constructeurs.Les destructeurs sont appelés dans lordre inverse des constructeurs. La fonction principale dun destructeur réside dans la désallocation de mémoire dynamique qui a été allouée par le constructeur.La fonction principale dun destructeur réside dans la désallocation de mémoire dynamique qui a été allouée par le constructeur.

47 INF1101 Algorithmes et structures de données47 Destructeurs (suite) RÉFÉRENCE: sphere.h class Sphere { public: public: Sphere(); Sphere(); Sphere(float unRayon, char* unNom); Sphere(float unRayon, char* unNom); Sphere(const sphere &copie); Sphere(const sphere &copie); ~Sphere(); ~Sphere();...... private: private: floatmonRayon; char* monNom; CouleurmaCouleur; TranslationmaPosition; Rotation monAngle; Rotation monAngle; static unsigned int nbSphere; }; Destructeur

48 INF1101 Algorithmes et structures de données48 Destructeurs (suite) Sphere::~Sphere(){ nbSphere--; nbSphere--; if(monNom) if(monNom) delete []monNom; } Sphere::Sphere() : monRayon( 0 ), monRayon( 0 ), maCouleur( ), maCouleur( ), maTransformation( ) maTransformation( ){ nbSphere++; nbSphere++; monNom = new char[30]; monNom = new char[30];} Constructeur de sphere : Destructeur de sphere :

49 INF1101 Algorithmes et structures de données49 Constructeur et destructeur Une classe a toujours automatiquement un constructeur par défaut, un constructeur de recopie et un destructeur sans quil soit nécessaire de les écrire.Une classe a toujours automatiquement un constructeur par défaut, un constructeur de recopie et un destructeur sans quil soit nécessaire de les écrire. Le constructeur de recopie implicite fait une copie attribut par attribut.Le constructeur de recopie implicite fait une copie attribut par attribut.

50 INF1101 Algorithmes et structures de données50 New dun objet (constructeur) Lallocation dynamique permet la création dun objet ou dun vecteur dobjets.Lallocation dynamique permet la création dun objet ou dun vecteur dobjets. Voir exemple sur les newVoir exemple sur les new

51 INF1101 Algorithmes et structures de données51 Vecteurs Utilisation de la classe vector de la librairie STL pour une gestion plus facile et efficace. La classe vector est une classe générique, cest-à-dire une classe qui permet de stocker nimporte quel type dobjet. Inclusion de la librairie: #include Déclaration en spécifiant le nom du vecteur et le type déléments à conserver: Ex: vector lesEntiers;

52 INF1101 Algorithmes et structures de données52 Manipulation dun vecteur Redimensionnement dun vecteur : vector Im; Im.resize(9); Accès à une position avec lopérateur [ ] : image UneIm=Im[4]; Im.clear();Il est aussi possible de retirer tout les élements dun vecteur : Im.clear(); Im.size();Récupérer le nombre déléments dun vecteur avec la fonction size() : Im.size();

53 INF1101 Algorithmes et structures de données53 Utilisation dun string Inclusion de la librairie: #include Déclaration en spécifiant le nom de la chaîne Ex: string c_chaine; La classe string gère toute manipulation dune chaîne de caractères, tel que la copie (=),la copie (=), La concaténation (+=),La concaténation (+=), Laccès à un caractère ([]) etLaccès à un caractère ([]) et La taille de la chaîne (.size() ).La taille de la chaîne (.size() ).

54 INF1101 Algorithmes et structures de données54 Utilisation dun string Exemple: c_chaine=Bonjour; c_chaine+= le monde; c_chaine[c_chaine.size()-1]=s;


Télécharger ppt "INF1101 Algorithmes et structures de données1 Cours 1 Les classes et les objets."

Présentations similaires


Annonces Google