09/01/2016
1
Programmation Orientée Objet
par C++
ZAKRANI Abdelali
ENSAM – CASABLANCA
Année universitaire 2015-2016
ZAKRANI / POO par C++ / 13-14 2
Rappel
Fonctions amies:
déclaration, définition et utilisation
Héritage simple
Dérivation publique / privée
Redéfinition des fonctions
Héritage multiple
Surdéfinition des opérateurs
La séance dernière
Cette séance
09/01/2016
2
ZAKRANI / MOO par UML / 13-14 3
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 / POO par C++ / 13-14 4
Utilité & Exemple
Class complexe
{ float re;
float im;
…
}
#include " complexe.h"
…
main {
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.
09/01/2016
3
ZAKRANI / POO par C++ / 13-14 5
Le mécanisme de la
surdéfinition d’opérateurs
Class point
{ int x, y;
…
}
Objectif: surdéfinir l’opérateur +
--------------------------------------------
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 6
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
09/01/2016
4
ZAKRANI / POO par C++ / 13-14 7
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
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
Exercice 1
09/01/2016
5
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
Exercice 2
Top Related