1. Support des TPs en Programmation Orientée Objet & C++
M. Ouadï Belmokhtar EMSI-Rabat
ouadi.belmokhtar@gmail.com
2. q Introduction à C++
§ Historique du langage C++
§ Qu’est-ce que le C++
§ Apports de C++ par rapport au C
§ Exemple de logiciels développés via C++
q Préparation de l’environnement de développement
§ Choix de l’IDE
- Top meilleurs IDE
- Pourquoi choisir eclipse ?
- Présentation de l’interface d’eclipse
§ Compilateur C++
- Pourquoi utiliser un compilateur ?
- Les compilateurs les plus utilisés en C++
- Installation du compilateur MinGW sous windows
q Premier Programme C vs C++
q Structure d’un projet eclipse
q Processus compilation/exécution
q Exercices
2
3. § Première version développée par
Dr. Bjarne Stroustrup de Bell Labs
en 1980;
§ 4ème langage le plus utilisé au monde:
- Classements TIOBE de Août 2013
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
- Et LangPop de Octobre 2013 http://langpop.com/
§ Appelé à l’origine « Langage C avec classes » ;
§ Le but de la création de C++, était de créer un langage
permettant la POO;
TPs : Programmation Orientée Objet & C++
3
Ouadï Belmokhtar
4. § C++98 : devenu une norme ANSI/ISO C++ en Juillet 1998;
§ C++03 : mise à jour en 2003;
§ C++11 : nouvelle norme approuvée par l’ISO en September 2011
§ C++14 : publication la version la plus récente.
§ Votes terminés en Août 2014
§ ...
TPs : Programmation Orientée Objet & C++
4
Ouadï Belmokhtar
https://isocpp.org/std/status
5. § Le C++ est un langage multiparadigme. Il supporte
essentiellement les paradigmes suivants :
§ Programmation procédurale : il reprend essentiellement les
concepts des fonctions du langage C;
§ Programmation structurée : il reprend la notion struct du
langage C.
§ Programmation orientée-objet : il implémente la notion d’objet,
de classe, d’héritage, d’encapsulation et de polymorphisme;
§ Programmation générique : il implémente les fonctions et classes
génériques.
§ C++ est créer sur la base du langage C ;
§ C++ est une amélioration du langage C;
§ C++ est un langage compilé;
§ C++ est portable et rapide;
TPs : Programmation Orientée Objet & C++
5
Ouadï Belmokhtar
6. § C++ est crée sur la base du langage C, en
prenant soin de préserver la compatibilité;
§ Toutes les fonctionnalités de C peuvent être
utilisées dans C++;
§ Il est possible de combiner entre des librairies
C et des classes C++;
§ Tout programme C peut être compilé en C++
TPs : Programmation Orientée Objet & C++
6
Ouadï Belmokhtar
7. Le C++ a apporté par rapport au langage C les notions suivantes :
§ La plupart des ajouts sont inspirés des langages Simula et Algol
§ Les concepts orientés objet (classe, encapsulation, héritage,
polymorphisme) ;
§ Les références (passage des paramètres par référence) ;
§ Les entrés et sorties (cin et cout);
§ La vérification stricte des types (Bool, ...) ;
§ Les valeurs par défaut des paramètres de fonctions ;
§ La surcharge de fonctions (plusieurs fonctions portant le même nom se
distinguent par le nombre et/ou le type de leurs paramètres) ;
§ La surcharge des opérateurs (pour utiliser les opérateurs avec les objets) ;
§ Les templates de classes et de fonctions ;
§ Les constantes typées ;
TPs : Programmation Orientée Objet & C++
7
Ouadï Belmokhtar
8. § Une partie du noyau du
navigateur Google
Chrome écrite en C++;
§ La JVM (Java Virtual
Machine) HotSpot est écrite
en C++;
TPs : Programmation Orientée Objet & C++
8
Ouadï Belmokhtar
§ Les jeux vidéos;
§ Les logiciels financiers;
§ Les applications militaires;
Jargon Informatique
Tetris
9. À quoi sert un outil de développement :
Un environnement de développement intégré
(EDI en français et IDE en anglais) est un outil
(logiciel) complet qui permet d’éditer et de
modifier des fichiers sources, de les compiler,
de lancer l'exécutable, de "déboguer" le
programme, etc...
TPs : Programmation Orientée Objet & C++
9
Ouadï Belmokhtar
10. Exemple d’IDE:
Multi-plateformes
§ Eclipse IDE for C/C++ Developers : gratuit et Open Source
§ Code::Blocks, gratuit et Open Source (EDI complet fournit avec gcc mais utilisable avec d'autre compilateur).
§ CodeLite, gratuit et Open Source de base, seule exception : les plugins développés en annexe pour cet EDI peuvent être de
n'importe quelle licence, y compris propriétaire et fermée.
§ Qt Creator, gratuit et Open Source, dédié au framework Qt (création des intérfaces graphiques)
Sous windows
§ Visual C++ de Microsoft (basé sur Visual studio).
§ Visual C++ Express (disponible gratuitement et complètement utilisable).
§ Borland C++ Builder (propriétaire).
§ DevC++ (disponible gratuitement sous Windows).
Sous Linux
§ Anjuta
§ Kdevelop
§ g++ (commun à tout système Unix, ligne de commande)
§ ...
Sous MacOS X
§ Apple Xcode (livré avec Mac OS X).
§ Metrowerks CodeWarrior.
§ g++ (commun à tout système Unix, ligne de commande)
TPs : Programmation Orientée Objet & C++
10
Ouadï Belmokhtar
11. Choix de l’outil de développement:
§ Eclipse IDE for C/C++ Developers est le meilleur outil
pour créer des programmes en C++;
§ Coloration syntaxique
§ Auto-completion du code;
§ Extensible à base de plugins;
§ Open source et gratuit;
§ Professionnel (c’est le plus utilisé dans les entreprises
d’ingénierie informatique);
§ Multi-plateforme (Windows, Linux, Mac OS X);
§ Portable (ne s’installe pas);
§ IDE N°1 dans le développement professionnel Java/J2EE.
TPs : Programmation Orientée Objet & C++
11
Ouadï Belmokhtar
13. Pourquoi utiliser un compilateur :
§ Pour exécuter des programmes C++ il faut avoir
un compilateur installé sur l’ordinateur;
§ Eclipse utilise ce compilateur pour compiler,
exécuter et déboguer les programmes C++;
C’est quoi un compilateur:
§ Un compilateur est un programme informatique
permet de compiler les fichiers du code source
afin d’obtenir un programme exécutable (“.exe”
sous windows).
TPs : Programmation Orientée Objet & C++
13
Ouadï Belmokhtar
14. § Il existe plusieurs compilateurs C/C++, le plus populaire
c’est GCC (GNU Compiler Collection), c’est un logiciel
open source et gratuit;
§ La plupart des autres compilateurs sont fondé sur la base de
GCC;
Windows:
MinGW
CygWin
Linux:
GCC
Mac OS:
MacOSX GCC
TPs : Programmation Orientée Objet & C++
14
Ouadï Belmokhtar
15. MinGW : MinGW est une collection d’outils permettant de faire de la programmation,
parmi ces outils sont présents: compilateurs(gcc, g++), éditeur de liens,
débogueur(gdb), ...
Installation:
1. Télécharger et installer la dernière version de MinGW mingw.org;
§ Lors de l’installation, il faut cocher les cases (packages) suivantes:
mingw32-base
mingw32-gcc=g++
msys-base
2. Configuration de la variable d’environnement PATH:
a. Clique droit sur poste de travail et propriété.
b. Paramètre système avancé
c. Variables d'environnements
d. Variables système
e. Chercher "PATH" et modifier. Ou en crée un nouveau. Aller à la fin de la ligne et
rajouter les deux chemins ”;C:MinGWbin;C:MinGWmsys1.0bin;" sans les
guillemets.
§ Eclipse cherche dans PATH pour découvrir les compilateurs C/C++ à utiliser.
TPs : Programmation Orientée Objet & C++
15
Ouadï Belmokhtar
16. Exemple C vs. C++ :
TPs : Programmation Orientée Objet & C++
16
Ouadï Belmokhtar
Exemple1.c Exemple2.cpp
Affichage par printf() Affichage par cout
17.
TPs : Programmation Orientée Objet & C++
17
Ouadï Belmokhtar
§ Binaries : Contient le programme
exécutable “.exe” produit après
la compilation des fichiers sources;
§ Includes : Contient les fichiers
headers (fournies par le GCC)
nécessaires à l’exécution du projet;
§ Src : Contient les fichiers de code
source de notre application;
§ Debug : les fichiers binaires
“.o”, “.obj”, “.d” (utils
pour la création du programme
exécutable)
18.
TPs : Programmation Orientée Objet & C++
18
Ouadï Belmokhtar
Programme C++
Fichier1.hpp
Fichier1.cpp
Fichier2.hpp
Fichier2.cpp
Fichier2.hpp
Fichier2.cpp
Compilateur
Phase 1 : Préprocessing & Compilation
Phase 2 : Optimisation & Édition de liens
Fichier1.o Fichier2.o Fichier3.o
Executable.exe
19. Ecrire un programme qui demande à l’utilisateur
de saisir un nom, puis il lui affiche Bonjour
“nom saisie”
TPs : Programmation Orientée Objet & C++
19
Ouadï Belmokhtar
20.
TPs : Programmation Orientée Objet & C++
20
Ouadï Belmokhtar
Programme C++ :
Résultat d’exécution :
21. q Rappel de la dérnière séance
q Correction du devoir
q Les fichiers d’un programme C++
§ Entêtes (.h, .hpp)
§ Sources (.c, .cpp, .cc)
§ Objets (.o, .obj)
q Explication détaillée du premier programme
q Explication des messages de compilation affichés par
eclipse
q Compilation sur la ligne de commande (DOS)
q Exercices sur les entrées/sorties
TPs : Programmation Orientée Objet & C++
21
Ouadï Belmokhtar
23. Les fichiers d’en-tête:
Les fichiers "entêtes" ("headers" en anglais), portent
souvent l'extension .h ou .hpp (mais la plupart des
entêtes systèmes du C++ standard n'ont plus d'extension
du tout), ces fichiers contiennent généralement les
prototypes de différentes fonctions, structures et
classes.
Les fichiers sources:
Les fichiers sources en C++ portent souvent
l'extension .cpp, .cxx, .cc, parfois .c. Ces fichiers
contiennent la définition (l'implémentation) des
différentes fonctions et méthodes définies dans les
fichiers d'en-tête .
Les fichiers objet:
Après la compilation des fichiers .cpp on obtient dans
un premier temps des fichiers objets (extension .obj
ou .o en général).
TPs : Programmation Orientée Objet & C++
23
Ouadï Belmokhtar
Exemple4.cpp
Exemple3.hpp
24. La directive #include :
§ La directive de compilation #include
<iostream> permet d'inclure les prototypes des
différentes classes contenues dans la
bibliothèque standard iostream.
§ Cette bibliothèque contient la définition de
cout qui permet entre autre d'afficher des
messages à l'écran.
L’espace de nom “namespace” :
§ L’utilisation des espaces de nom permet d’éviter
les problèmes de confusion entre les noms des
variables (objets), lorsque plusieurs espaces de
noms comportant des noms de variables
identiques.
§ Exemple:
espace1::var1
espace2::var1
TPs : Programmation Orientée Objet & C++
24
Ouadï Belmokhtar
Exemple2.cpp
25. La fonction main():
§ La fonction main()est le point d’entrée de tout
programme en C++.
§ C’est la première fonction qui sera exécuter lors de
l’exécution d’un programme C++ quelque soit sa taille.
§ Tout programme en C++ commence par l'exécution de la
fonction main(), Il se termine lorsque la fonction
main() est terminée.
§ Quelque soit le nombre de fichiers sources d’un
programme C++, il ne doit avoir qu’une seule fonction
main().
L’objet cout (Console Output):
Il permet d'envoyer des caractères vers le flux de sortie
standard du programme, c'est-à-dire l'écran pour ce
programme (sa fenêtre console).
Return 0:
Cette instruction indique que la fonction main() est
terminée correctment et que tout s'est bien passé.
TPs : Programmation Orientée Objet & C++
25
Ouadï Belmokhtar
Exemple2.cpp
26. Prenons l’exemple du projet précédent qui contient deux fichiers sources
“Exemple1.c” et “Exemple2.cpp”, la compilation de ce projet en utilisant
eclipse affiche les messages suivants:
TPs : Programmation Orientée Objet & C++
26
Ouadï Belmokhtar
Eclipse fait appel au compilateur GCC C pour compiler le fichier source “Exemple1.c”,
pour cela, eclipse utilise la commande gcc.
Eclipse fait appel au compilateur GCC C++ pour compiler le fichier source “Exemple2.cpp”,
pour cela, eclipse utilise la commande g++.
Eclipse fait appel à l’éditeur de liens pour rassembler les différents fichiers objets (binaires)
afin de construire le fichier exécutable (Projet_2.exe).
27. § Pour compiler des programmes C++ sur DOS, il faut avoir la variable
d’environnement PATH déjà configurée.
§ Dans la fenêtre DOS, il faut se positioner sur le dossier contenant le
fichier source, puis tapez la commande suivante (supposant que le
fichier source est placé dans le Bureau):
TPs : Programmation Orientée Objet & C++
27
Ouadï Belmokhtar
§ La commande g++ Exemple2.cpp –o Exemple2.exe
permet de compiler le fichier source Exemple2.cpp et de
construire le fichier exécutable Exemple2.exe.
§ Pour lancer le programme, il suffit de faire un double clique sur ce
fichier exécutable
28. Exercice 1:
Ecrire la fonction calculerSomme qui accepte 2 paramètres
de type entier et qui retourne leurs somme.
Testez la fonction dans la méthode main()
Exercice 2:
Ecrire la fonction calculerDivision qui accepte 2
paramètres de type entier et qui retourne leurs division. La
fonction doit vérifier le cas de division par 0 (si c’est le cas,
il faut afficher un message d’erreur)
Testez la fonction dans la méthode main()
28
TPs : Programmation Orientée Objet & C++ Ouadï Belmokhtar
29. • Nouvelle forme de commentaire (en fin de ligne);
• Plus grande libérté dans l’emplacement des déclarations des variables;
• Notion de référence facilitant la mise en oeuvre de la transmission
d’arguments par adresse;
• Surdéfinition(surcharge) des fonctions: attribution d’un même nom à
différentes fonctions, la reconnaissance de la fonction réellement
appelée se faisant d’après le type et le nombre des arguments figurant
dans l’appel (on parle parfois de signature);
• Nouveaux opérateurs de gestion dynamique de la mémoire: new et
delete;
• Possibilité de définir des fonctions “en ligne” (inline), ce qui accroît
la vitesse d’exécution, sans perdre pour autant le formalisme des
fonctions.
TPs : Programmation Orientée Objet & C++
29
Ouadï Belmokhtar