Vous êtes sur la page 1sur 5

09/01/2016

Programmation Orientée Objet


par C++

ZAKRANI Abdelali
ENSAM – CASABLANCA
Année universitaire 2015-2016

Rappel
La séance dernière
Fonctions amies:
déclaration, définition et utilisation
Héritage simple
Dérivation publique / privée
Redéfinition des fonctions
Héritage multiple

Cette séance

Surdéfinition des opérateurs

ZAKRANI / POO par C++ / 13-14 2

1
09/01/2016

Introduction
 C++ autorise la surdéfinition(surcharge) des fonctions
(fonctions membres ou indépendantes):
◦ Cette technique consiste à attribuer le même nom à des
fonctions différentes, lors d’un appel, le choix de la
«bonne fonction» est effectué par le compilateur, suivant
le nombre et le type des arguments.
 C++ permet également, dans certaines conditions,
de surdéfinir des opérateurs:
◦ Il réalise déjà la surdéfinition (a+b : entiers, réels…)
◦ Cette possibilité nous permettra de créer, par le biais des
classes, des types à part entière, c’est-à-dire munis,
comme les types de base, d’opérateurs parfaitement
intégrés.
ZAKRANI / MOO par UML / 13-14 3

Utilité & Exemple


#include " complexe.h"
Class complexe

{ float re;
main {
float im;
complexe a,b;


}
}

• En surdéfinissant les opérateurs +, - et *: nous pouvons


donner signification aux expressions a+b, a-b et a*b.
• Lors de la surdéfinition des opérateurs vous spécifiez le
rôle exact que vous souhaitez leur attribuer.

ZAKRANI / POO par C++ / 13-14 4

2
09/01/2016

Le mécanisme de la
surdéfinition d’opérateurs
Objectif: surdéfinir l’opérateur +
Class point --------------------------------------------
{ int x, y;
Rôle: la somme de deux points est

}
un point dont les coordonnées sont
la somme de leurs coordonnées

• Pour cela, le mécanisme adopté par C++ est de


définir une fonction sous le nom: operater+ (le mot
clé operator suivi du l’opérateur concerné)
• Dans notre cas, notre fonction operator + doit
disposer de deux arguments de type point et fournir
une valeur de retour du même type.

Cette fonction doit être fonction membre ou indépendante?


ZAKRANI / POO par C++ / 13-14 5

Surdéfinition d’opérateur avec une


fonction amie
Déclaration du prototype de
la fonction amie employée
pour surdéfinir l’opérateur +

Définition de la fonction
amie employée pour
surdéfinir l’opérateur +

Coordonnees : 1 2
Coordonnees : 2 5
Coordonnees : 3 7
Coordonnees : 6 14
ZAKRANI / POO par C++ / 13-14 6

3
09/01/2016

Surdéfinition d’opérateur avec une


fonction membre
Déclaration du prototype de
la fonction membre employée
pour surdéfinir l’opérateur +

Définition de la fonction
membre employée pour
surdéfinir l’opérateur +

Coordonnees : 1 2
Coordonnees : 2 5
Coordonnees : 3 7
Coordonnees : 6 14
ZAKRANI / POO par C++ / 13-14 7

Exercice 1
 Définir une classe des nombres complexe
qui contient:
◦ Un constructeur qui prend deux arguments et
avec des valeurs défaut.
◦ Une fonction qui afficher le nombre complexe
sous la forme : a + bi
◦ Surcharger l’opérateur + (somme de 2
complexes) en utilisant une fonction membre
◦ Surcharger l’opérateur – en utilisant une fonction
amie
 Écrire un programme principal pour le test

ZAKRANI / POO par C++ / 13-14 8

4
09/01/2016

Exercice 2
 Définir une classe date:
◦ Un constructeur qui prend trois arguments et
avec des valeurs défaut.
◦ Une fonction qui afficher la date sous la forme :
jj/mm/aaaa
◦ Surcharger l’opérateur < et > en utilisant une
fonction membre
◦ Surcharger l’opérateur == et != en utilisant une
fonction amie
 Écrire un programme principal pour le test

ZAKRANI / POO par C++ / 13-14 9