Vous êtes sur la page 1sur 51

Cours de Programmation

orientée Objet C++

Pr. Amina SERIR

1
Sommaire
• Chap. 1: Introduction à la programmation POO
• Chap. 2: Notions de base
• Chap. 3: Classes et objets
• Chap. 4: Héritage et polymorphisme
• Chap 5. Les conteneurs, itérateurs et foncteurs
• Chap. 6 Notions avancées

2
TP Programmation orientée objets en C++
• - TP1 : Maitrise d’un compilateur C++
• - TP2 : Programmation C++
• - TP3 : Classes et objets
• - TP4 : Héritage et polymorphisme
• - TP5 : Gestion mémoire
• - TP6 : Templates
Mode d’évaluation :
• Contrôle continu : 40% ; Examen : 60%.
Références bibliographiques :
• 1. Bjarne Stroustrup (auteur du C++), Le langage C++, Pearson.
• 2. Claude Delannoy, Programmer en langage C++, 2000.
• 3. Bjarne Stroustrup, Le Langage C++, Édition Addison -W l
(2000) Wesley (2000) ou Pearson Education France (2007).
• 4. P.N. Lapointe, Pont entre C et C++ (2ème Édition), Vuibert,
Edition 2001.
3
Cours de Programmation
orientée Objet C++

Chap. 1: Introduction à la POO

Pr. Amina SERIR

4
Chapitre 1: Introduction à la POO
• Principe de la POO,
• Définition du langage C++,
• Mise en route de langage C++,
• Le noyau C du langage C++.

5
Introduction

Programmation orientée Objet

Programmation Objets

6
Introduction
Programmer: C’est donner une procédure (une
suite d’actions réalisables par l’entité (machine,
PC, système embarqué, console de jeu,
téléphone, smartphone, …) qui exécute la
procédure.
Programmation

Algorithme + Langage

7
Introduction
• Algorithme: Liste des actions permettant de
réaliser la procédure d’une façon correcte et
fiable.
Exemple 1:
Réaliser un programme qui permet à un individu
de faire des frites.
De quel individu, il s’agit?
Enfant, Adulte et Adulte expérimenté.
8
Enfant
Début
- Prendre des pommes de terre
- Enlever la peau avec le couteau (Eplucher)
- Rincer les pommes de terre
- Couper les pommes de terre en morceaux fins et
allongés
- Mettre de l’huile dans une poêle,
- Attendre que ça chauffe
- Mettre les P de T dans l’huile
- Attendre qu’elles deviennent dorées,
- Retirer les frites avec un écumoire
fin

9
Adulte
Début
- Eplucher les pommes de terre
- Rincer les pommes de terre
- Couper les pommes de terre en morceaux fins
et allongés
- Faites chauffer une poêle+huile,
- Mettre les P de T dans l’huile
- Retirer les frites avec un écumoire, lorsqu’elles
sont dorées
fin
10
Adulte
Début
- Prendre des pommes de terre
- Enlever la peau avec le couteau (Eplucher)
- Rincer les pommes de terre
- Couper les pommes de terre en morceaux fins et
allongés
- Mettre de l’huile dans une poêle,
- Attendre que ça chauffe
- Mettre les P de T dans l’huile
- Attendre qu’elles deviennent dorées,
- Retirer les frites avec un écumoire
fin

11
Adulte expérimenté
Début
- Préparer les frites
fin

12
Introduction
• Exemples
- Programmer un système de gestion d’ascenseur.

- Calculer la matrice inverse de taille 1000x1000

- Programmer un jeu de rôle RPG

13
Introduction
• Exemples
- Programmer un système de gestion d’ascenseur.
Assembleur
- Calculer la matrice inverse de taille 1000x1000
Langage
Fortran, Pascal, langage C
- Programmer un jeu de rôle RPG
Java, C++ (orientée objet)
- Programme de géolocalisation sur smartphone
Java

14
Introduction
Programmation orientée
objets Niveau 3

Langage de programmation
Niveau 2

Assembleur,
langage
machine

Niveau 1

15
16
Programmation orientée Objet
Historique
• Les concepts de la POO naissent au cours des années 1970 dans des
laboratoires de recherche en informatique. Les premiers langages
de programmation véritablement objets ont été Simula,
puis Smalltalk.
• A partir des années 1980, les principes de la POO sont appliqués
dans de nombreux langages comme Eiffel (créé par le Français
Bertrand Meyer), C++ (une extension objet du langage C créé par le
Danois Bjarne Stroustrup) ou encore Objective C (une autre
extension objet du C utilisé, entre autres, par l'iOS d'Apple).
• Les années 1990 ont vu l'avènement des langages orientés objet
dans de nombreux secteurs du développement logiciel, et la
création du langage Java par la société Sun Microsystems. Le succès
de ce langage, plus simple à utiliser que ses prédécesseurs, a
conduit Microsoft à riposter en créant au début des années 2000 la
plateforme .NET et le langage C#, cousin de Java.

17
• De nos jours, de très nombreux langages
permettent d'utiliser les principes de la POO dans
des domaines variés : Java et C# bien sûr, mais
aussi PHP (à partir de la version 5), VB.NET,
PowerShell, Python, etc. Une connaissance
minimale des principes de la POO est donc
indispensable à tout informaticien (technologue),
qu'il soit développeur ou non.
• REMARQUE : la POO s'accompagne d'un
changement dans la manière de penser les
problèmes et de concevoir l'architecture des
applications informatiques. C'est ce que l'on
appelle l'analyse (ou la modélisation) orientée
objet. Son principal support est le langage de
modélisation UML Unified Modeling Language.
18
Quel langage choisir?
• Cela dépend du problème posé:
1. Résoudre un système d’équations différentielles

2. Calcul de la somme des N nombres premiers.

3. Gestion de comptes bancaires,

4. Gestion d’un garage de maintenance de véhicules

5. Réalisation d’un jeu RPG (Role Play Game)

19
Quel langage choisir?
• Cela dépend du problème posé:
1. Résoudre un système d’équations différentielles
Programmation simple
2. Calcul de la somme des N nombres premiers.
Programmation simple
3. Gestion de comptes bancaires,
Programmation orientée objets POO
4. Gestion d’un garage de maintenance de véhicules
Programmation orientée objets POO
5. Réalisation d’un jeu RPG (Role Play Game)
Programmation orientée objets POO

20
Qu'est-ce qu'un objet ?
Quand on utilise la POO, on cherche à représenter le
domaine étudié sous la forme d'objets. C'est la phase
de modélisation orientée objet.

• Un objet est une entité qui représente (modélise) un


élément du domaine étudié : une voiture, un compte
bancaire, un nombre complexe, une facture, etc.
• Objet = état + actions
• Cette équation signifie qu'un objet rassemble à la fois :
• des informations (ou données) qui le caractérisent.
• des actions (ou traitements) qu'on peut exercer sur lui.

21
• Imaginons qu'on souhaite modéliser des comptes bancaires pour
un logiciel de gestion. On commence par réfléchir à ce qui
caractérise un compte bancaire, puis on classe ces éléments en
deux catégories :
❑ les informations liées à un compte bancaire.
❑ les actions réalisables sur un compte bancaire.

• En première approche, on peut considérer qu'un compte bancaire


est caractérisé par un titulaire, un solde (le montant disponible sur
le compte) et utilise une certaine devise (dinars, euros, dollars, etc).
Les actions réalisables sur un compte sont le dépôt d'argent (crédit)
et le retrait (débit).
• On peut regrouper les caractéristiques de notre objet "compte
bancaire" dans ce tableau.

Informations, état Actions (verbes)


titulaire, solde, devise créditer, débiter

22
• A un instant donné, l'état d'un objet "compte
bancaire" sera constitué par les valeurs de son
titulaire, son solde et sa devise. L'état de
l'objet "compte bancaire de Ali" sera, sauf
exception, différent de l'état de l'objet
"compte bancaire de Houria".

23
Notion de classe
• Imaginons que nous voulions gérer les
différents comptes d'une banque. Chaque
compte aura son propre titulaire, son solde
particulier et sa devise. Mais tous les comptes
auront un titulaire, un solde et une devise, et
permettront d'effectuer les mêmes opérations
de débit/crédit. Chaque objet "compte
bancaire" sera construit sur le même modèle :
ce modèle est appelée une classe.
24
• DEFINITION : une classe est un modèle
d'objet. C'est un nouveau type créé par le
programmeur et qui sert de modèle pour tous
les objets de cette classe. Une classe spécifie
les informations et les actions qu'auront en
commun tous les objets qui en sont issus.

25
• Le compte en banque appartenant à Ali, dont le solde est
de 45000 dinars, est un compte bancaire particulier. Il s'agit
d'un objet de la classe "compte bancaire". En utilisant le
vocabulaire de la POO, on dit que l'objet "compte bancaire
de Ali" est une instance de la classe "compte bancaire".

• ATTENTION : ne pas confondre objet et classe. Une classe


est un type abstrait (exemple : un compte bancaire en
général), un objet est un exemplaire concret d'une classe
(exemple : le compte bancaire de Ali).

• Un objet est une variable particulière dont le type est une


classe.

26
Représentation graphique
• Afin de faciliter la communication entre les programmeurs
n'utilisant pas le même langage de programmation objet, il
existe un standard de représentation graphique d'une classe.
Ce standard fait partie de la norme UML (Unified Modeling
Language). On parle de diagramme de classe.
• Voici la représentation de notre classe "compte bancaire"
réalisée par Visual Studio.

27
• Voici la même classe représentée sous la forme d'un
diagramme conforme au standard UML.

28
Quel que soit l'outil utilisé, on observe que la
classe est décomposée en deux parties :
les champs, qui correspondent aux informations
de la classe : devise, solde et titulaire.
les méthodes, qui correspondent aux actions
réalisables: créditer, débiter et décrire.
DEFINITION : une méthode représente une
action réalisable sur un objet de la classe dans
laquelle cette méthode est définie. Une
méthode représente une partie du
comportement d'une classe.
29
• En résumé
• La POO consiste à programmer en utilisant des objets.
• Un objet modélise un élément du domaine étudié (exemples :
un compte bancaire, une voiture, un satellite, etc).
• Un objet est une instance de classe. Une classe est un type
abstrait, un objet est un exemplaire concret de cette classe.
• Une classe regroupe des informations et des actions.
• Les informations sont stockées sous la forme de champs. Les
champs décrivent l'état d'un objet.
• Les actions réalisables sur un objet sont représentés par
des méthodes. Elles expriment ce que les objets peuvent
faire, leur comportement.
• Les informations stockées par un objet peuvent être
appelées champs, attributs ou encore propriétés.
30
L’encapsulation
• Le fait de concevoir une application comme un système
d’objets interagissant entre eux apporte une certaine
souplesse et une forte abstraction.
• Exemple: la machine à café du bureau. Nous insérons nos
pièces dans le monnayeur, choisissons la boisson et nous
nous retrouvons avec un gobelet de la boisson
commandée. On ignore comment cela fonctionne à
l’intérieur (si le café est en poudre, en grain, comment
l’eau est ajoutée, chauffée, comment le sucre est
distribué, etc.)
Tout ce qui nous importe c’est que le fait de mettre de
l’argent dans la machine nous permet d’obtenir un café.

31
• C’est un exemple de programmation orientée
objet. Nous manipulons un objet MachineACafe
qui a des propriétés (Allumée/éteinte, présence
de café, présence de gobelet, …) et qui sait faire
des actions (AccepterMonnaie, DonnerCafe, …).

• Le fait d’ignorer ce qui se passe à l’intérieur,


s’appelle l’encapsulation. Cela permet de
protéger l’information contenue dans notre objet
et de le rendre manipulable uniquement par ses
actions ou propriétés. Ainsi, l’utilisateur ne peut
pas accéder au café ni au sucre ou encore moins
à la monnaie. Notre objet est ainsi protégé et
fonctionne un peu comme une boite noire.
32
Héritage
• C’est-à-dire qu’un objet dit « père » peut transmettre
certaines de ses caractéristiques à un autre objet dit «
fils ».
• Pour cela, on pourra définir une relation d’héritage
entre eux. S’il y a une relation d’héritage entre un objet
père et un objet fils, alors l’objet fils hérite de l’objet
père. On dit également que l’objet fils est
une spécialisation de l’objet père ou qu’il dérive de
l’objet père.
• Exemple Classe « être vivant » et « classe
mammifère »

33
Classe être vivant

Classe des animaux Classe des végétaux …….


Mammifères: classes des chiens, chats,
chevaux, ………….

34
Polymorphisme-Subtitution
• Le mot polymorphisme suggère qu’une chose peut prendre
plusieurs formes.
• En fait, on peut dire qu’une manifestation du
polymorphisme est la capacité pour un objet de faire une
même action avec différents types d’intervenants. C’est ce
qu’on appelle le polymorphisme « ad hoc » ou le
polymorphisme « paramétré ». Par exemple, notre objet
voiture peut rouler sur la route, rouler sur l’autoroute,
rouler sur la terre si elle est équipée de pneus adéquats,
rouler au fond de l’eau si elle est amphibie, etc …
Concrètement ici, je fais interagir un objet « voiture » avec
un objet « autoroute » ou un objet « terre »… par l’action
qui consiste à « rouler ».

35
• La substitution est une autre manifestation
du polymorphisme. Il s’agit de la capacité
d’un objet fils à redéfinir des
caractéristiques ou des actions d’un objet
père.

36
Interfaces
• Un autre concept important de la
programmation orientée objet est la notion
d’interface.

37
POUR PLUS DE PRECISIONS ATTENDONS LA
PROGRAMMATION CONCRETE

38
A quoi sert la programmation orientée
objet?
• En fait, on peut dire que la POO est une façon de
développer une application qui consiste à représenter (on
dit également « modéliser ») une application informatique
sous la forme d’objets, ayant des propriétés et pouvant
interagir entre eux. La modélisation orientée objet est
proche de la réalité ce qui fait qu’il sera relativement facile
de modéliser une application de cette façon. De plus, les
personnes non-techniques pourront comprendre et
éventuellement participer à cette modélisation.
• Cette façon de modéliser les choses permet également de
découper une grosse application, généralement floue, en
une multitude d’objets interagissant entre eux. Cela permet
de découper un gros problème en plus petits afin de le
résoudre plus facilement.

39
• Utiliser une approche orientée objet améliore
également la maintenabilité. Plus le temps passe et
plus une application est difficile à maintenir. Il
devient difficile de corriger des choses sans tout
casser ou d’ajouter des fonctionnalités sans
provoquer une régression par ailleurs. L’orienté objet
nous aide ici à limiter la casse en proposant une
approche où les modifications internes à un objet
n’affectent pas tout le reste du code, grâce
notamment à l’encapsulation.

40
• Un autre avantage de la POO est la réutilisabilité. Des
objets peuvent être réutilisés ou même étendus grâce à
l’héritage. C’est le cas par exemple de la bibliothèque de
classes du framework .NET que nous avons déjà utilisée.
Cette bibliothèque nous fournit par exemple tous les objets
permettant de construire des applications graphiques. Pas
besoin de réinventer toute la mécanique pour gérer des
fenêtres dans une application, le framework .NET sait déjà
faire tout ça. Nous avons juste besoin d’utiliser un objet «
fenêtre », dans lequel nous pourrons mettre un objet «
bouton » et un objet « zone de texte ». Ces objets héritent
tous des mêmes comportements, comme le fait d’être
cliquable ou sélectionnable, etc. De même, des composants
tout faits et prêts à l’emploi peuvent être vendus par des
entreprises tierces (système de log, contrôles utilisateurs
améliorés, etc …).

41
En résumé
• L’approche orientée objet permet de
modéliser son application sous la forme
d’interactions entre objets.
• Les objets ont des propriétés et peuvent faire
des actions.
• Ils masquent la complexité d'une
implémentation grâce à l'encapsulation.
• Les objets peuvent hériter de fonctionnalités
d'autres objets s'il y a une relation d'héritage
entre eux.

42
Langage C++
• Publié par coyotte49 le Dimanche 07 octobre 2007
• Le langage C++ est un langage de programmation crée par
Bjarne Stroustrup et normalisé en 1998. Le ++ est
l'opérateur d'incrémentation (qui fais +1) : le C++ est donc
une amélioration de l'ancestral langage C.
Il apporte notamment la programmation orientée
objet (qui est l'apport majeur), la gestion des exceptions, la
gestion des références (remplaçant partiellement l'usage
quelque peu délicat des pointeurs), la surcharge des
opérateurs et les templates (liste non exhaustive).
Enfin, une rétrocompatiblité a été gardée ; les programmes
en C se compilent sans difficulté avec un compilateur C++.

43
1er programme
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, new world!" << std::endl;
}

44
Logiciels à utiliser
• Codeblocks
http://www.codeblocks.org/downloads
• Microsoft Visual Studio.

45
46
There are different ways to download and install Code::Blocks on your
computer:
•Download the binary release

•This is the easy way for installing Code::Blocks. Download the setup file, run it
on your computer and Code::Blocks will be installed, ready for you to work
with it. Can't get any easier than that!Download a nightly build: There are also
more recent so-called nightly builds available in the forums. Please note that
we consider nightly builds to be stable, usually, unless stated otherwise.
•Other distributions usually follow provided by the community (big "Thank
you!" for that!). If you want to provide some, make sure to announce in the
forums such that we can put it on the official C::B homepage.
•Download the source code
• source code from SVN

47
• Vous cliquez sur
• Windows XP / Vista / 7 / 8.x / 10

Sélectionnez

Sélectionnez

DOWNLOAD
Code Blocks Windows 64 bit (including compiler)
48
Sélectionnez
codeblocks-20.03-setup.exe
FOSSHUB

codeblocks-20.03- FossHUB or Sourceforge.ne


setup.exe t
codeblocks-20.03-setup- FossHUB or Sourceforge.ne
nonadmin.exe t
codeblocks-20.03- FossHUB or Sourceforge.ne
nosetup.zip 29 Mar 2020 t
codeblocks-20.03mingw- 29 Mar 2020 FossHUB or Sourceforge.ne
setup.exe 29 Mar 2020 t
codeblocks-20.03mingw- 29 Mar 2020 FossHUB or Sourceforge.ne
nosetup.zip 29 Mar 2020 t
codeblocks-20.03-32bit- 02 Apr 2020 FossHUB or Sourceforge.ne
setup.exe 02 Apr 2020 t
codeblocks-20.03-32bit- 02 Apr 2020 FossHUB or Sourceforge.ne
setup-nonadmin.exe 02 Apr 2020 t
codeblocks-20.03-32bit- 02 Apr 2020 FossHUB or Sourceforge.ne
nosetup.zip t
codeblocks-20.03mingw- FossHUB or Sourceforge.ne
32bit-setup.exe t
codeblocks-20.03mingw- FossHUB or Sourceforge.ne
32bit-nosetup.zip t

49
Sélectionnez
DOWNLOAD
Code Blocks Windows 64 bit (including compiler)

Une fois que le fichier codeblocks-20.03mingw-


setup.exe téléchargé.
Vous cliquez sur ce fichier pour installer Codeblocks
Vous suivez la procédure: Next – I agree - Next
Install- oui - OK

50
• Premier programme en C/C++
En langage C/C++, un programme consiste en l'exécution d'une suite
d'instructions
insérées dans le bloc principal.
void main()
{

}
• Ce bloc d'instructions doit être sauvegardé dans un fichier portant
l'extension .cpp. Pour exécuter le programme, il faut tout d'abord le
compiler afin de générer un fichier ..exe (la compilation est une opération
consistant à transformer le texte du programme en code machine). Le
programme est alors exécuté en lançant le fichier .exe (sous Windows,
cliquer deux fois sur l'icône du fichier).
• Pour tester le compilateur, écrivez le programme suivant qui doit afficher
sur une fenêtre console « Ceci est mon premier programme en langage
C++"
51

Vous aimerez peut-être aussi