















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Ce document présente les concepts fondamentaux de la programmation orientée objet (POO) en C++, notamment la notion de classe, d'objet, d'encapsulation et d'accès aux membres. Il aborde la déclaration et la définition des classes, l'instanciation d'objets, les constructeurs et destructeurs, ainsi que les règles d'accès aux membres (public, private, protected). L'objectif est de fournir une introduction solide aux principes de base de la POO en C++ pour les étudiants en BTS SN option IR.
Typology: Exercises
1 / 23
This page cannot be seen from the preview
Don't miss anything!
















Thierry Vaira
BTS SN Option IR
v.1.
(^1) POO, Classes et Objets
(^2) Conception d’une classe
(^3) Création d’objets
(^4) Destruction d’objets
(^5) Les objets constants
(^6) Attributs et méthodes
POO, Classes et Objets
Un programme Orienté Objet est écrit à partir d’un langage Orienté Objet. Les langages O.O. les plus utilisés sont : C++, C#, Java, PHP, Python, ... En C++, un programme Orienté Objet est vu comme un ensemble d’objets interagissant entre eux en s’échangeant des messages.
POO, Classes et Objets
Un objet est caractérisé par le rassemblement, au sein d’une même unité d’exécution, d’un ensemble de propriétés (constituant son état ) et d’un ensemble d’ opérations (constituant son comportement )
fl On parle d’ encapsulation
**Propriétés
Comportement**
La notion de propriété est matérialisée par un attribut fl Comparable à une « variable locale » à un objet, une donnée (information, caractéristique ou état) propre à l’objet
La notion d’ opération est matérialisée par une méthode fl Comparable à une « fonction » de l’objet, une action pouvant être effectuée sur l’objet
POO, Classes et Objets
Les objets interagissent entre eux en s’échangeant des messages.
La réponse à la réception d’un message par un objet est appelée une méthode.
Une méthode est donc la mise en oeuvre du message : elle décrit la réponse qui doit être donnée au message. Le code des méthodes contient généralement : Des accès en lecture/écriture aux attributs d’un objet Des appels (on parle d’ invocation ) aux méthodes d’un objet
Conception d’une classe
Une lampe est caractérisée par : Sa puissance (une propriété fl un attribut ) Le fait qu’elle soit allumée ou éteinte (un état fl un attribut )
Au niveau comportement , les actions possibles sur une lampe sont donc : L’ allumer (une méthode ) L’ éteindre (une autre méthode )
Conception d’une classe
La définition d’une classe revient à définir l’ensemble de ses méthodes. On doit faire précéder chaque méthode de l’opérateur de résolution de portée :: précédé du nom de la classe (ici Lampe) pour préciser au compilateur que ce sont des membres de cette classe. La définition des méthodes de la classe Lampe se fait dans un fichier source Lampe.cpp
#include "Lampe.h" void Lampe::allumer() { this->estAllumee = true; } void Lampe::eteindre() { this->estAllumee = false; }
Création d’objets
Chaque instance possède un exemplaire propre de chaque attribut défini par la classe Un objet possède sa propre existence et un état (c.-à-d. les valeurs de ses attributs) qui lui est propre (indépendant des autres objets) Le code des méthodes est commun à toutes les instances (il n’existe qu’une seule fois en mémoire)
Le mot-clé this (auto pointeur), utilisé dans le code des méthodes d’une classe, fait référence à l’instance (l’objet lui-même) sur laquelle est invoquée la méthode
Création d’objets
L’ instanciation d’un objet est réalisée par l’ appel à un constructeur (une méthode qui porte le même nom que la classe) D’un point de vue système , le constructeur a pour but d’ allouer un nouvel objet en mémoire
D’un point de vue fonctionnel , le constructeur a pour but de créer un nouvel objet dans un état « utilisable »
Il doit donc simplement contenir les instructions d’ initialisation (des attributs) de l’objet
class Lampe { ... public: // Constructeur Lampe( int puissance); }; // Définition du constructeur Lampe::Lampe( int puissance) { this->puissance = puissance; this->estAllumee = false; }
Création d’objets
Un constructeur est chargé d’ initialiser un objet de la classe. Il est appelé automatiquement au moment de la création de l’objet. Un constructeur est une mé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 (surcharge). Il n’a jamais de type de retour. Il existe implicitement un constructeur par défaut : Son rôle est de créer une instance non initialisée quand aucun autre constructeur fourni n’est applicable. Il est sans paramètre. Il est fortement recommandé d’écrire soi-même le constructeur par défaut
Création d’objets
Il est possible de conserver et de manipuler des objets Lampes dans un tableau.
// Un tableau de 10 objets Lampe Lampe guirlande[10]; // Le constructeur par défaut est appelé 10 fois (pour chaque objet Lampe du tableau)! for ( int i = 0; i < 10; i++) { guirlande[i].allumer(); sleep(1); // attendre 1 s guirlande[i].eteindre(); }
Destruction d’objets
Le destructeur est la méthode membre appelée automatiquement lorsqu’une instance (objet) de classe cesse d’exister en mémoire : Son rôle est de libérer toutes les ressources qui ont été acquises depuis la construction (typiquement libérer la mémoire qui a été allouée dynamiquement par cet objet). Un destructeur est une mé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 a qu’un et un seul destructeur. Il n’a jamais de type de retour.
Les objets constants
Les règles suivantes s’appliquent aux objets constants :
On déclare un objet constant avec le modificateur const
On ne pourra pas modifier l’ état (ses attributs) d’un objet constant
On ne peut appliquer que des méthodes constantes sur un objet constant
Une méthode constante est tout simplement une méthode qui ne modifie aucun des attributs de l’objet
class Lampe { ... public: int getPuissance() const ; }; // Une méthode constante int Lampe::getPuissance() const { return this->puissance; } const Lampe l3(100); // l3 est un objet constant int p = l3.getPuissance(); // autorisé : getPuissance() est déclarée const l3.allumer(); // interdit : allumer() n’ est pas const (car elle modifie l’ attribut estAllumee)
Attributs et méthodes
En POO, il est possible de préciser le type d’accès aux membres ( attributs et méthodes ) d’un objet.
Cette opération s’effectue et s’applique au niveau des classes :