Programmation Orientée
Objet en C++
Soulaïmen SMAOUI
2021
● Objectif
Historique
Introduction ●
● C++ vs C
Objectif
● Maîtriser la programmation Orientée Objet
● Se familiariser avec la notion de Classe et d’Objet
● Apprendre les techniques de partage de code
Historique
Le langage C
développé par : ANSI Standard
Dennis Ritchie(Bell Labs) C++ 1.0 C++ [revised]
1972 1983 1985 1998 2003...
C avec la notion de
ANSI Standard
Classes
Développé par : C++
Bjarne Stroustrup
Evolution de la POO
C++ vs C
#include <stdio.h>
/* My first C program! */
int main(void)
{
printf("hello, world\n");
return 0;
}
C++ vs C
using namespace std;
#include <iostream>
// My first C++ program!
int main(void)
{
cout << "hello world!" << endl;
return 0;
}
Les programmes en C sont aussi des programmes en C++
C C++
● inline
● macros
● pointeurs ● références
● malloc et free ● new et delete
● tableau et char* ● vector et string
● struct ● classes
● Programmation procédurale
● classes et templates
Nouveaux mots clés (réservés)
En plus des mots clés hérités du C, le C++ ajoute:
Exceptions catch, throw, try
bool, class, enum, explicit, export, friend, inline,
mutable, namespace, operator, private, protected,
Déclarations: public, template, typename, using, virtual, volatile,
wchar_t
and, and_eq, bitand, bitor, compl, const_cast, delete,
dynamic_cast, false, new, not, not_eq, or, or_eq,
Expressions: reinterpret_cast, static_cast, this, true, typeid, xor,
xor_eq
Structure d’un programme en C++
#include <iostream>
using namespace std;
int main()
{
déclaration(s)
instruction(s)
return 0;
}
Flux d’entrées-sorties
cout: Flux de sortie standard du programme (Console Output : sortie console)
syntaxe: cout << <expression>
cout<<” hello”; // Affiche hello sur la console
cin: Flux d’entrée standard du programme (Console Input : entrée console)
syntaxe: cin >> <variable>
cin>> X; // lecture au clavier de la valeur de la variable X
Les pointeurs
int a;
int *aPtr; // un pointeur sur entier
aPtr = &a; // address de a affectée à aPtr
*aPtr = 100; // contenu de a affectée par 100
variable valeur Addresse en hex
…
a 100 1F8A26D4
aPtr 1F8A26D4 1F8A26D0
…
Les références
La déclaration d’une référence est de la forme suivante :
<type> & <nom> = <nom var>;
Une référence est un alias pour une autre variable:
Les références
Exemple 1: a,ar 30
int a = 30;
int &ar = a; // référence (alias)
ar = ar + 1; // incrémentation de a
Une fois initialisée, la référencés ne peut pas être changée.
Utilisée généralement pour le passage de paramètres des fonctions.
Les références
Exemple 2:
float A, B;
float &Ar = A; // correct : Ar est une référence sur A
float &Br; // erreur : pas de variable à laquelle se référer
float &Ar = B; // erreur : Re-définir une référence est interdit
Les références avec les fonctions
Exemple 3 :
// version erronée
void permute(int a, int b)
{
int aux; // variable auxiliaire
aux = a;
a = b;
b = aux;
}
// pas de permutation ( passage par valeur)
Les références avec les fonctions
Exemple 3 :
// version avec pointeur (C et C++)
void permute(int *a, int *b)
{
int aux; // variable auxiliaire
aux = *a;
*a = *b;
*b = aux;
}
//Appel de la fonction:
permute(&X, &Y); // Avec &X et &Y sont les adresses de X et Y
// Permutation correcte( passage par adresse)
Les références avec les fonctions
Exemple 3 :
// version avec référence(C++)
void permute(int &a, int &b)
{
int aux; // variable auxiliaire
aux = a;
a = b;
b = aux;
}
//Appel de la fonction:
permute(X, Y); // Avec X et Y sont des int
// Permutation correcte( passage par référence)