[PDF] Cours Langage C/C++ - Classes et objets Programmation Orienté





Previous PDF Next PDF



Classes héritage

https://www.labri.fr/perso/bourqui/downloads/cours/AP2/support-C%2B%2B-classes.pdf



C++ : PROGRAMMATION-OBJET

Apparue au début des années 70 la programmation orientée objet répond aux nécessités de l'informatique professionnelle. Elle offre aux concepteurs de 



La programmation orientée objet (POO) en C++ Première partie

Un programme Orienté Objet est écrit à partir d'un langage Orienté. Objet. Les langages O.O. les plus utilisés sont : C++ C#



Cours Langage C/C++ - Classes et objets Programmation Orienté

Classes et objets. Les classes sont les éléments de base de la programmation orientée objet (POO) en C++. Dans une classe on réunit :.



Programmation orientée objet & autres concepts illustrés en C++ et

Eric Lecolinet - Télécom ParisTech - Programmation orientée objet et autres concepts illustrés en C++11. ? C/C++ : compilé en code machine natif.



La programmation orientée objet (POO) en C++ Quatrième partie

La programmation orientée objet (POO) en C++. Quatrième partie : Héritage et polymorphisme. Thierry Vaira. BTS SN Option IR v.1.1 - 5 octobre 2018 



Cours Langage C++ : Héritage et polymorphisme Programmation

Les classes sont les éléments de base de la programmation orientée objet (POO) en C++. Dans une classe on réunit : - des données variables : les données 



La programmation orientée objet (POO) en C++ Deuxième partie

statiques car ceux-ci existent même lorsque aucun objet de cette classe n'a été créé. Thierry Vaira (BTS SN-IR Avignon). La POO en C++ (Part. II).



CONTENU DU COURS

d'acquérir les bases de la modélisation et de la programmation orientées objet. Le langage C++ est pris comme exemple. Avertissement : Ce cours suppose la 



La programmation orientée objet (POO) en C++ Troisième partie

La programmation orientée objet (POO) en C++. Troisième partie : Les relations entre classes. Thierry Vaira. BTS SN Option IR v.1.2 - 7 décembre 2020 

Cours Langage C/C++ - Classes et objets

Programmation Orienté Objet

Thierry Vaira

BTS IRIS Avignon

tvaira@free.fr?v0.1

Sommaire

1Classes et objets

2Les objets constants

3Surcharge des opérateurs

4L"héritage

5Les exceptions

6Polymorphisme

7Transtypage

tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 2 / 69

Classes et objets

Classes et objets

Les classes sont les éléments de base de laprogrammation orientée objet (POO)en C++. Dans une classe, on réunit : - des données variables : les données memb res,ou les attributsde la classe. - des fonctions :

les fonctions memb res,ou les méthodesde la classe.Une classeAapporte un nouveau typeAajouté aux types (pré)définis

de base par C++.Une variableacréée à partir du type de classeAest appeléeinstance (ouobjet) de la classe A.Exemple (non compilable*) : class A; //déclare une classe A (* car elle n "estpas définie )

A a1;//instancie un objet a1 de type A

A a2;//crée une instance a2 de type A tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 3 / 69

Classes et objets

État et comportement

Une classe sedéclare dans un fichier.h. La déclaration permet de connaître les types des choses constituant la classe, et ainsi de l"utiliser.Une classe sedéfinit dans un fichier.ccou.cpp. La définition

permettra de fabriquer les choses constituant la classe.Un objet possédera uneidentitéqui permet de distinguer un objet

d"un autre objet (son nom, une adresse mémoire).Un objet possédera unétat(les valeurs contenues dans les attributs

propres à cet objet).Un objet possédera uncomportement(l"utilisation de ses méthodes lui fera changer d"état). tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 4 / 69

Classes et objets

Droits d"accès aux membres (1/2)

Les droits d"accès aux membres d"une classe concernent aussi bien les méthodes que les attributs.En C++, on dispose des droits d"accès suivants : - Accèspublic:on p eututiliser le memb rede n"imp orteoù dans le p rogramme. - Accèsprivate:seule une fonction memb rede la mêm eclasse A p eututiliser ce membre; il est invisible de l"extérieur de A. - Accèsprotected:ce memb rep eutêtre utilisé pa run efonction de cette même classe A, et pas ailleurs dans le programme (ressemble donc à private), mais il peut en plus être utilisé par une classe B qui hérite de A.Il existe une règle de POO qui précise queles attributs doivent être encapsulées dans la classepour éviter une utilisation extérieure. C"est une forme de protection permettant d"éviter une utilisation incorrecte ou non prévue par le programmeur de la classe. On appliquera ce principe en déclarant l"ensemble des attributs en private.tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 5 / 69

Classes et objets

Droits d"accès aux membres (2/2)

Si c"est nécessaire, l"accès aux attributs privés d"une classe se fera par l"intermédiaire de méthodes nommées desaccesseurs et manipulateurs. On a l"habitude de les nommerget()pour l"accès

en lecture etset()pour l"accès en écriture d"un attribut.Exemple (non compilable car les méthodes ne sont pas définies) :

class A private intx;//je suis un attribut privé de type int voidfoo();//je suis une méthode privée de nom foo public ://seulement des méthodes ici ( reglePOO ) intgetX();//je suis l "accesseurget de x ,je retourne sa valeur voidsetX(int);//je suis le manipulateur set de x ,je fixe sa valeur voidafficher();//je suis une autre méthode publique tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 6 / 69

Classes et objets

Constructeur

Un constructeur est chargé d"initialiser une instance (objet) de la classe.Il est appeléautomatiquement au moment de la créationde l"objet.Un constructeur est uneméthode qui porte toujours le même nom que la classe.Il existe quelques contraintes : Il peut avoir des paramètres, et des valeurs par défaut. Il peut y avoir plusieurs constructeurs pour une même classe.

Il n"a jamais de type de retour.

Il existe d"autres constructeurs : le constructeur par défaut et le constructeur de copie. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 7 / 69

Classes et objets

Destructeur

Le destructeur est laméthode membre appelée lorsqu"une

instance (objet) de classe cesse d"exister en mémoire.Son rôle est delibérer toutes les ressources qui ont été acquises

lors de la construction(typiquement libérer la mémoire qui a été

allouée dynamiquement par cet objet).Un destructeur est uneméthode qui porte toujours le même nom

que la classe, précédé de "~".Il existe quelques contraintes :

Il ne possède aucun paramètre.

Il n"y en a qu"un et un seul.

Il n"a jamais de type de retour.

Voilà, on sait suffisamment de choses pour écrire notre première classe et instancier nos premiers objets. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 8 / 69

Classes et objets

Déclaration d"une classePointdans un fichierpoint.h//Une classe apporte un nouveau type : ici un Point .C "estdonc un modèle pour les futurs objets de type

Point Mon type Point possède des caractéristiques des propriétés une coordonnée entière x et une coordonnée entière y Mon type point peut faire des choses des opérations il est capable d afficher ses coordonnées class Point private int_x, _y; public

Point(int,int);//je suis le constructeur

~Point();//je suis le destructeur intgetX(); voidsetX(int); intgetY(); voidsetY(int); voidafficher(); };tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 9 / 69

Classes et objets

Définition des membres de la classe Point dans un fichierpoint.cc#include< iostream>// j "utilisecout

include point h il me faut la déclaration de la classe Point using namespacestd;//utile ! je definis la méthode Point donc le constructeur ici de la classe Point pour que le compilateur comprenne et la trouve j utilise l opérateur de résolution de portée

Point::Point(intx,inty) {

cout << "Appel du constructeur Point : j"initialise les membres privés x et y" << endl; _x = x; _y = y;

Point::~Point() {

cout << "Appel du destructeur ~Point : j"ai rien à faire" << endl; intPoint::getX() { return_x; voidPoint::setX(intx) { _x = x; intPoint::getY() { return_y; voidPoint::setY(inty) { _y = y; voidPoint::afficher() { cout << _x << "," << _y << endl; }tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 10 / 69

Classes et objets

Un programme d"essai dans un fichiermain.cc#include< iostream>// j "utilisecout include point h il me faut la déclaration de la classe Point using namespacestd;//utile ! intmain() Point pointA(0,0);//j "instancieun objet pointA de type Point Point pointB(1,2);//ou je crée une instance pointB de type Point pointA.afficher();//j "appellela méthode publique afficher ()de l "objetpointA pointB.afficher();//chaque objet possède ses propres attributs pointB _y 1; interdit car l attribut _y est privé donc pointB.setY(1);//je modifie la valeur de l "attribut_y de pointB pointB.afficher(); return0; }tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 11 / 69

Classes et objets

Fabrication de l"exécutablea.out(sous Linux)$ g++ -c point.cc $ g++ -c main.cc $ ls *.o main.o point.o $ g++ main.o point.o ou en une seule ligne $ g++ main.cc point.ccExécution du programme d"essai Appel du constructeur Point : j"initialise les membres privés x et y Appel du constructeur Point : j"initialise les membres privés x et y 0,0 1,2 1,1 Appel du destructeur ~Point : j"ai rien à faire Appel du destructeur ~Point : j"ai rien à faire tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 12 / 69

Classes et objets

new et delete

Pour allouer dynamiquement en C++, on utilisera l"opérateurnew.Celui-ci renvoyant une adresse où est crée la variable en question, il

nous faudra un pointeur pour la conserver.Manipuler ce pointeur, reviendra à manipuler la variable allouée

dynamiquement.Pour libérer de la mémoire allouée dynamiquement en C++, on utilisera l"opérateurdelete.tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 13 / 69

Classes et objets

Pour allouer dynamiquement unobjet, on utilisera l"opérateurnew.Exemple : allocation dynamique d"un objet

include iostream include point h using namespacestd; intmain() Point *pointC;//je suis pointeur sur un objet de type Point pointC =newPoint(2,2);//j "allouedynamiquement un objet de type Point

pointC->afficher();//Comme pointC est une adresse ,je dois utiliser l "opérateur-> pour accéder aux

membres de cet objet pointC->setY(0);//je modifie la valeur de l "attribut_y de pointB

(*pointC).afficher();//cette écriture est possible : je pointe l "objetpuis j "appellesa méthode

afficher deletepointC;//ne pas oublier de libérer la mémoire allouée pour cet objet return0; }tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 14 / 69

Classes et objets

Cas particuliers

Un programme d"essai qui pose problème!

include iostream include point h using namespacestd; intmain() Point pointA;//déclaration d "unobjet pointD sans coordonnées ( quefaut -ilfaire ?) tableauDe10Points[10];//déclaration d "untableauDe10Points contenant 10 objets de type Point

Point pointE();//que fait cette ligne ?

return0; }tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 15 / 69

Classes et objets

Rappel : paramètres par défaut

Le langage C++ offre la possibilité d"avoir des valeurs par défaut pour les paramètres d"une fonction (ou d"une méthode), qui peuvent alors être sous-entendus au moment de l"appel.intmult(inta=2,intb=3) { returna*b; mult(3,4);//donne 12 mult(3);//équivaut à mult (3,3)qui donne 9

mult();//équivaut à mult (2,3)qui donne 6 Remarque : cette possibilité, permet d"écrire qu"un seul constructeur

profitant du mécanisme de valeur par défaut. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 16 / 69

Classes et objets

Constructeur par défaut (1/4)

Deux constructeurs sont toujours nécessaires dans toute nouvelle

classe : leconstructeur par défautet leconstructeur de copie.Ils sont tellement importants que si vous ne les écrivez pas, le

compilateur tentera de le faire à votre place ... mais à moins de savoir

exactement ce que vous faites il vaut mieux les écrire soi-même.Le rôle du constructeur par défaut est de créer une instance non

initialisée quand aucun autre constructeur fourni n"est applicable.Par exemple, le constructeur par défaut de notre classePointsera :Point::Point() {}//Sans aucun paramètre ! tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 17 / 69

Classes et objets

Constructeur par défaut (2/4)

Si on essaye de compiler les déclarations suivantes : Point pointD;//un pointD sans coordonnées ( quefaut -ilfaire ?) Point tableauDe10Points[10];//typiquement : les cases d "untableau de Point pointA.afficher();

tableauDe10Points[0].afficher();//le premier objet Point du tableau On obtient des erreurs en provenance du compilateur :

ligne 8: erreur: no matching functionforcall to Point::Point()" ligne 9: erreur: no matching function for call to Point::Point()" tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 18 / 69

Classes et objets

Constructeur par défaut (3/4)

Le compilateur n"a pas trouvé de constructeur par défaut dans notre

classe, il faut donc le déclarer et le définir.Définition d"un constructeur par défaut sans argument :

Point::Point() { _x=0; _y=0; }

Maintenant, le programme précédent se compile et le constructeur par défaut sera appelé pour l"objetpointAet 10 fois pour chaque objetPoint du tableau. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 19 / 69

Classes et objets

Constructeur par défaut (4/4)

Le constructeur par défaut est donc un constructeursans argumentou

avec des arguments qui possèdent une valeur par défaut.Déclaration d"un constructeur par défaut avec arguments :

Point(int_x=0,int_y=0);Définition d"un constructeur par défaut avec arguments :

Point::Point(int_x/*=0*/,int_y/*=0*/) {}Le constructeur par défaut est nécessaire notamment dans : la création de

tableaux d"objet, la fabrication d"objets temporaires et l"agrégation par valeur des objets. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 20 / 69

Classes et objets

Liste d"initialisation

Un meilleur moyen d"affecter des valeurs lors de la construction aux

données membres de la classe est laliste d"initialisation.Dans le fichier .cc, il suffit d"utiliser la syntaxe suivante :

Point::Point(intx,inty) : _x(x), _y(y)//c "estla liste d "initialisation

{/*il n "ya rien d "autreà faire */ }La liste d"initialisation permet d"utiliser le constructeur de chaque

donnée membre, et ainsi d"éviter une affectation après coup.la liste d"initialisation doit être utilisée pour certains objets qui ne

peuvent pas être contruits par défaut : c"est le cas des références et des objets constants.Important : l"ordre d"initialisation des membres doit correspondre à celui de leurs déclarations dans le fichier .h. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 21 / 69

Classes et objets

Le pointeur spécial d"instance :thisDans certaines conditions particulières, il est nécessaire de disposer

d"un moyen de désigner depuis l"intérieur d"une fonction membre, non pas les données membres, mais l"instance elle-même de la classe surquotesdbs_dbs48.pdfusesText_48
[PDF] orientez moi svp !

[PDF] Origami urgent

[PDF] origin of english language pdf

[PDF] origine agriculture

[PDF] origine alimentaire

[PDF] origine commune des êtres vivants

[PDF] Origine commune svt

[PDF] origine crise de cuba

[PDF] origine d'un séisme

[PDF] Origine de Électricité consommée

[PDF] origine de l économie collaborative

[PDF] origine de l'islam

[PDF] origine de la chaleur de la terre

[PDF] origine de la diversité des êtres humains

[PDF] Origine de la fete des morts au Mexique