Vous êtes sur la page 1sur 20

La POO (Programmation Orientée Objet) 

en C++
Master 1
Électronique (Toutes spécialités)
et
Réseaux et Télécommunication

par
H. ACHOUR & N. SADOUN
Dpt d’Electronique
FGEI/UMMTO 1
Définition wikipédia

La programmation orientée objet (POO), ou programmation par objet, est
un paradigme de programmation informatique élaboré par les Norvégiens
Ole-Johan Dahlet Kristen Nygaard au début des années 1960 et poursuivi
par les travaux d'Alan Kay dans les années 1970.

Il consiste en la définition et l'interaction de briques logicielles appelées
objets ; un objet représente un concept, une idée ou toute entité du monde
physique, comme une voiture, une personne ou encore une page d'un
livre. Il possède une structure interne et un comportement, et il sait interagir
avec ses pairs.

Il s'agit donc de représenter ces objets et leurs relations ; l'interaction entre
les objets via leurs relations permet de concevoir et réaliser les
fonctionnalités attendues, de mieux résoudre le ou les problèmes.

Dès lors, l'étape de modélisation revêt une importance majeure et est
nécessaire pour la POO. C'est elle qui permet de transcrire les éléments
du réel sous forme virtuelle.
2

Intérêt de la POO

Code plus sûr

Réduction de la taille du code source

Programmes plus clairs

Maintenance des applications facilitée et pouvant être
effectuée par n’importe quel programmeur

Code facilement réutilisable

Valable en interne entre les projets,

A l’achat de composants externes chez des
fournisseurs de bibliothèques

Nécessite pour être réemployé une documentation
suffisante

Evolution des programmes facilitée

Temps de développement plus court 3
Définition d'un objet

La POO → programme = ensemble d'objets qui interagissent entre eux.
Tout est objet.

un ordinateur, une lampe, une chaise, un bureau, ... sont tous des objets

Tout Objet a des caractéristiques :

objet personne → Un personnage a des caractéristiques :

Nom

Prénom

Date de naissance



Ces caractéristiques (Appelées ATTRIBUTS) = valeurs stockées dans des
variables.

Un objet a aussi des capacités = fonctions appelées MÉTHODES : Pour l’objet
personne :

Naître / mourir

Changer de résidence
4

...
Un Objet :

Est un ensemble

d’attributs → Variables

Et de méthodes → Fonctions

Peut être modifié (caractéristiques et/ou
comportement) par

La modification des attributs

Invocation des méthodes

En POO, attributs + méthodes = classe

5
Définition d'une classe et d’une instance :

La classe contient la définition des objets à créer i.e.

plan de fabrication d'un objet

Permet de créer une multitude d'objets

La classe = regroupement logique de variables (attributs)
et fonctions (méthodes) que tout objet issu de cette classe
possédera

Une instance = objet = résultat de l’instanciation d’une
classe. i.e : Instancier une classe = se servir d'une classe
afin qu'elle crée un objet.

Une classe abstraite est une classe qui ne peut pas
s'instancier elle-même ; elle doit être héritée.
6
Exemple d'une classe :
Personne
Nom
Prenom
DateDeNaissance
Lieu de Naissance
Adresse
Télephone
….

ChangerTel
ChangerAdresse
AfficherInformationPersonne
...
7
Les 3 concepts fondamentaux de la POO


Encapsulation,

Héritage

Polymorphisme

8
Encapsulation
Protection de l'information contenue dans un objet et
proposition de méthodes pour la manipulation de cet objet.

Il est inutile et/ou dangereux de laisser l'utilisateur manipuler des
objets sans aucune restriction.

En POO on peut masquer le code à l'utilisateur de la classe : i.e
interdire à l'utilisateur de modifier directement les attributs d'un
objet.

l'utilisateur de la classe devant se contenter d'invoquer les
méthodes en ignorant les attributs.

Pour instaurer une telle contrainte (interdiction d’accès), on dit que
les attributs sont privés.

L'encapsulation des membres peut se faire sous différentes
visibilités de types publics, privés ou protégés 9
Héritage
L’héritage est un concept puissant de la programmation
orientée objet, permettant entre autres la ré-utilisabilité
(décomposition du système en composants) et
l'adaptabilité des objets grâce au polymorphisme.

Le principe de l’héritage est en quelque sorte le même que
celui d’un arbre généalogique. Ce principe est basé sur des
classes dont les « filles » héritent des caractéristiques
de leur(s) « mère(s) ».

Chaque classe possède des caractéristiques (attributs et
méthodes) qui lui sont propres. Lorsqu'une classe fille hérite
d'une classe mère, elle peut alors utiliser les
caractéristiques de la classe mère.
10
Héritage

Si la classe mère est abstraite (Non effective ou non instanciable)
il y a de forte chance qu'elle présente des caractéristiques
abstraites.

Pour être effective (instanciable), la classe fille doit alors définir
toutes les caractéristiques, sinon elle sera elle-même abstraite.

Si la classe mère est effective (toutes les caractéristiques sont
définies) alors la classe fille est également effective.

Il est possible d'y ajouter des caractéristiques, d'utiliser les
caractéristiques héritées (appartenant aux parents) et de redéfinir
les méthodes héritées.

Généralement cette redéfinition se fait par surcharge sémantique
(on déclare de nouveau la méthode avec le même nom et la
11
même signature).
Propriétés de la notion d'héritage

Transitivité : si B hérite de A et si C hérite de B alors
C hérite de A ;

Non réflexif : une classe ne peut hériter d’elle-
même ;

Non symétrique : si A hérite de B, B n’hérite pas de
A;

Sans cycle : Il n'est pas possible que B hérite de A, C
hérite de B et que A hérite de C.

12
Polymorphisme

En informatique et en théorie des types, le polymorphisme,
découle du grec ancien polús (plusieurs) et morphê
(forme),

Il consiste à fournir une interface unique à des entités
pouvant avoir différents types.

Il désigne la capacité d'une hiérarchie de classes à fournir
différentes implémentations de méthodes portant le même
nom et par corollaire la capacité qu'ont des objets enfants de
modifier les comportements hérités de leur parents.
i.e c’est un concept d'adaptation à différentes
"situations".
13

Il existe plusieurs niveaux de polymorphisme
Le concept actuel de polymorphisme en POO peut
être implémenté à plusieurs niveaux :

Polymorphisme d'objet : C'est une interchangeabilité entre
variables d'objets de classes de la même hiérachie sous certaines
conditions, que dénommons le polymorphisme d'objet.

Polymorphisme par héritage de méthode : Lorsqu'une classe
enfant hérite d'une classe mère, des méthodes supplémentaires
nouvelles peuvent être implémentées dans la classe enfant mais
aussi des méthodes des parents substituées pour obtenir des
implémentations différentes.

Polymorphisme par héritage de classes abstraites : Certains
membres de la classe peuvent ne pas être implémentés, et c'est à la
classe qui hérite de fournir cette implémentation.

Polymorphisme par implémentation d'interfaces : Une interface
décrit la signature complète des membres qu'une classe doit
implémenter, mais elle laisse l'implémentation de tous ces membres
14 à
la charge de la classe d'implémentation de l'interface.
Définition du langage C++

Conçu par Bjarne Stroustrup en 1982 aux ATT Bell
Laboratories.

L’idée était d’ajouter au C des possibilités sur l’orienté objet et
de palier aux inconvénients du C.

Dico : Le C++ est un langage de programmation dit "haut-
niveau" créé en 1983 par Bjarne Stroustrup des
laboratoires Bell. Il se distingue de son prédécesseur (le
langage C) en proposant une programmation orientée
objet. Ce langage est particulièrement utilisé dans les
applications demandant de hautes performances.

Langage compilé => fichier exécutable produit à partir de
fichiers sources par un compilateur
15
Langage C++ : Compilation en 3 phases :

Preprocessing : Suppression des commentaires et


traitement des directives de compilation
commençant par # → code source brut

Compilation en fichier objet : compilation du
source brut → fichier objet (extension .obj ou .o)

Édition de liens (Link): Combinaison du fichier
objet de l'application avec ceux des bibliothèques
qu'elle utilise → fichier exécutable binaire ou une
librairie dynamique (.dll sous Windows)

16
Langage C++ : Compilation en 3 phases :

17
Différences entre le noyau C du C++ et le langage C

Instructions d'entrées-sorties habituelles du C disponibles. Nouvelles entrées-sorties cin et cout.

Commentaires multi-lignes /* et */ du C permise. En C++ on utilise le commentaire de fin de
ligne //.

En langage C, les variables déclarées en début de bloc. En C++ elle peuvent être déclarées à
n’importe quel endroit avant son utilisation. Sa portée correspond à la partie de bloc dans laquelle
elle a été déclarée, depuis la déclaration jusqu'à la fin du bloc.

En langage C version K-R les constantes sont définies par le préprocesseur grâce à la commande
define. On peut, en langage C version ANSI, utiliser également la déclaration const. Ceci est en
fait une amélioration due au langage C++ qui a migrée vers la nouvelle version du langage C.

La notion de prototype de fonction est un apport du langage C++ qui, comme la notion de
constante, a migré vers le langage C version ANSI. Elle permet de déclarer une fonction à
l’intérieur d’une autre fonction.

passage des paramètres par valeur et par référence. Seul le passage par valeur est implémenté
en langage C, le passage par référence étant émulé grâce au passage par adresse avec
l’utilisation des pointeurs. Le passage par référence est par contre implémenté en langage C++.

Opérateurs d’allocation dynamique de mémoire- En langage C utilise les fonctions malloc() et
free() de la bibliothèque standard. Le langage C++ utilise les opérateurs new et delete à la
syntaxe plus simple.

Les fonctions en lignes correspondent à une forme améliorée de macros qui sera souvent utilisée
pour définir les fonctions membres d’une classe. 18
Mise en route de langage C++

Compilateurs de référence pour le langage C++ : le
compilateur gnu sous le système d’exploitation
UNIX/Linux (g++) (COMPILATEUR OPEN SOURCE)

Sous Microsoft Windows : Borland-C++, Visual-C++, ...

IDE à utiliser pour les Tps : Code::Block

Multiplateforme (Windows, Linux, Mac Os)

Version actuelle : 16.01

Télécharger : codeblocks-16.01mingw-setup.exe
(Windows) inclue les compilateurs gcc et g++

19
Mise en route de code::block

Réalisation d’un premier exemple : Affichage d’un message à
l’écran :
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}

20

Vous aimerez peut-être aussi