Vous êtes sur la page 1sur 30

PROGRAMMATION ORIENTÉE OBJET

- LANGAGE C++ -

Rania MZID KEBEILI


Objectifs
 Initier les étudiants aux concepts orientés objet en utilisant le langage C++
 A l’issue de ce module, un étudiant doit être capable de :
o Résoudre un problème orienté objet
o Ecrire correctement un code C++ avec les notions introduites.
Auditoire
 Deuxième année licence á l’ISI (L2SE & L2 SIL)
Références
 Ellis, M. A., & Stroustrup, B. (1990). The annotated C++ reference manual.
Addison- Wesley.
 Musser, D. R., Derge, G. J., & Saini, A. (2009). STL tutorial and reference guide :
C++ programming with the standard template library. Addison-Wesley
Professional.
2
PLAN

Généralités: Nouvelles Possibilités en C++


Classes et objets en C++
Surcharge/Sur-définition des opérateurs
Héritage

3
PLAN

Généralités: Nouvelles Possibilités en C++


Classes et objets en C++
Surcharge/Sur-définition des opérateurs
Héritage

4
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

PROGRAMMATION CLASSIQUE VS PROGRAMMATION OBJET

Programmation classique = Programmation centrée sur les


procédures (ou les opérations)
 Programme = structures de données + algorithmes (fonction ou
procédures)
 Exemple en C :

 Couplage procédures/données :
 Les données sont indépendantes des procédures
 Les données à traiter sont passées en arguments aux procédures

5
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

PROGRAMMATION CLASSIQUE VS PROGRAMMATION OBJET

Problèmes de la programmation procédurale


 Réutilisation & Evolution
Solution : POO (Programmation Orientée Objet)

La POO :
 Centrée sur les données : Tout tourne autour des "objets" qui sont des
petits ensembles de données représentants leurs propriétés
 Exemple : Une automobile 4 portes, familiale, moteur 6 cylindres,
automatique, etc.
Exemples de langage OO : C++, Java, C#, etc.
6
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

C++ EXTENSION DU LANGAGE C


Espace de nom
Commentaire : nouvelle forme Encapsulation : Classe, Objet, etc.
Notion de référence Héritage
Arguments par défaut Polymorphisme de classe (Patron
polymorphisme de fonction de classe)
Fonctions inline Etc.
Etc.

Concepts non Concepts


OO OO Langage
C++
Langage C

7
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LES ENTRÉES-SORTIES (E/S) STANDARDS DU C++

Les Opérateurs << , >> :


 C : printf (″ bonjour″ )  C++ : cout << ″ bonjour″ ;
scanf(&n)  cin >>n ;
Concaténation :

Affichage des variables :

8
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

ESPACE DE NOM (NAMESPACE)

namespace en anglais, est une zone de déclaration


d'identificateurs permettant au compilateur de résoudre les
conflits de noms

9
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

ESPACE DE NOM

Toute la bibliothèque standard C++ est définie dans son propre


espace de nom, le namespace std

# include <iostream>
int main() {
std::cout << "Hello, World ! \n " ;
std::cout << "Hello, World ! " << std:: endl; iostream est un nom de
return 0; } fichier dans la bibliothèque
 standard c++
# include <iostream> On l’appelle aussi directive du
using namespace std; préprocesseur (# <>)
int main() {
cout << "Hello, World ! \n " ;
cout << "Hello, World ! " << endl;
return 0; } 10
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

PREMIER EXEMPLE

// lire x et y
// afficher x +y

11
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

DÉCLARATION DES VARIABLES

Syntaxe de déclaration:
 [Spécificateur] Type nom de la variable [Initialisation]
 Exemples : float a; int b=0; int A[] = {5, 6, 7} ; int B[2] ={6, 7}
Une variable peut être constante : const
 Elle doit être initialisée
 Elle ne peut plus changer de valeur
 Exemple: const int x = 0 ;

12
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LES TYPES FONDAMENTAUX

Les Caractères : char

Le Type Booléen: bool

13
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LES TYPES FONDAMENTAUX

Les Entiers (6 types) : short, int, long , unsigned short, unsigned int , unsigned
long

14
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LES TYPES FONDAMENTAUX

Les types á virgule flottante : float , double

Autres types
 Structures : struct
 Pointeurs : int *
 Tableaux : int[]
 Absence de type : void
15
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LE TYPE CHAINE DE CARACTÉRES

Une chaine de caractéres est une suite de caractéres contigus en


mémoire qui se termine par le caractère nul ‘\0’
 Char * ch : Pour déclarer une chaine ch
 On utilise cin >> ch ; cout<< ch<<endl; =>Pour lire et écrire une chaine de
caractéres ch
 En C++, on peut utiliser
le type string

16
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LES OPÉRATEURS EN C++

C++accomplit des calculs numériques au moyen de 5 opérateurs


arithmétiques
 +, -, *, / et %
Opérateurs d’incrémentation et de décrémentation
 Pré & post (incrémentation, décrémentation)
Opérateurs d’affectation composés
 +=, -=, *=, /=, %=

17
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

CONVERSION DES TYPES

Plusieurs types de conversion sont possibles en C++, cette


conversion peut être implicite ou explicite
 Conversion de type simple : Conversion vers un type plus petit (double
–> int par exemple )

18
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

CONVERSION DES TYPES

Plusieurs types de conversion sont possibles en C++, cette


conversion peut être implicite ou explicite
 Promotion de types: Conversion vers un type plus grand (int double
par exemple)

19
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LES FONCTIONS EN C++ : SURCHARGE

Plusieurs significations différentes pour une même


fonction
 Le même nom de fonction mais différents arguments
Le compilateur produit une erreur
 Si plusieurs fonctions conviennent au même niveau de
correspondance (ambiguïté)
 Si aucune fonction ne convient à aucun niveau

20
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LES FONCTIONS EN C++ : SURCHARGE

Le compilateur cherche la fonction correspondante


 Correspondance exacte : les mêmes types lors de la déclaration et
l’appel .
 Conversion implicite: le compilateur effectue une conversion afin de
correspondre aux fonctions déclarées
Les règles de conversion
 Le compilateur cherche les fonctions candidates en raisonnant sur les
arguments par ordre de déclaration
 Chaque paramètre engendre un sous ensemble de fonctions
candidates (correspondance exacte, conversion moins couteuse)
 Dans le but de converger ou produire une ERREUR
21
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LES FONCTIONS EN C++ : SURCHARGE

22
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LES FONCTIONS EN C++ : ARGUMENTS PAR DÉFAUTS

En C, il est indispensable que l'appel d'une fonction contienne


autant d'arguments que la fonction en attend effectivement

C++ permet de s'affranchir en partie de cette règle, grâce à un


mécanisme d'attribution de valeurs par défaut à des arguments
lors de la déclaration.

Les variables ayant des valeurs par défaut doivent être placées
les derniers dans la déclaration

23
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LES FONCTIONS EN C++ : ARGUMENTS PAR DÉFAUTS

Exemple :

24
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

LES OPÉRATEURS NEW ET DELETE

En langage C, la gestion dynamique de mémoire fait appel


à des fonctions de la bibliothèque standard telles que
malloc et free

C++ a introduit deux nouveaux opérateurs, new et delete,


particulièrement adaptés à la gestion dynamique d'objets

Ces opérateurs peuvent également être utilisés pour des


"variables classiques"

25
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

OPÉRATEURS NEW ET DELETE

26
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

NOTION DE RÉFÉRENCE

A côté des pointeurs, les références sont une autre manière de


manipuler les adresses des objets placés dans la mémoire

Une référence est un pointeur géré de manière interne par la


machine (par le compilateur)
Une référence est un alias ou un synonyme d’une autre variable

Si T est un type de donnée (par exemple int), le type <référence sur


T> se note T&
int n=44; int &rn = n ; rn est synonyme de n => n et rn sont deux noms
différents qui désignent la même variable

27
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

NOTION DE RÉFÉRENCE

Toute opération effectuée sur la référence agit sur la variable


référencée, non sur l'adresse.

Il est obligatoire d'initialiser une référence lors de sa création


(une référence se rapporte à des objets déjà existants)

Une variable et ses références ont la même adresse (des


appellations différentes pour la même variable)

On ne peut pas initialiser une référence avec une valeur (i.e.


int & a = 5 // incorrect)
28
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

NOTION DE RÉFÉRENCE

29
GÉNÉRALITÉS: NOUVELLES POSSIBILITÉS EN C++

TRANSMISSION DES ARGUMENTS

Transmission par valeur


 La valeur de l’argument transmis sera copiée dans une variable
locale . La valeur de variable passée en paramètre ne sera pas
modifiée en dehors de la fonction
Transmission par variable
 L’argument est transmis comme paramètre et sera utilisé dans la
fonction. Toute modification du paramètre dans la fonction
appelée entraîne la modification de la variable passée en
paramètre.
 En C++ : passage par adresse, passage par référence
30