5

Click here to load reader

Programmation Orientée Objet par C++ Surdéfinition des opérateurs 2015-2016.pdf

Embed Size (px)

Citation preview

Page 1: Programmation Orientée Objet par C++ Surdéfinition des opérateurs 2015-2016.pdf

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

Page 2: Programmation Orientée Objet par C++ Surdéfinition des opérateurs 2015-2016.pdf

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.

Page 3: Programmation Orientée Objet par C++ Surdéfinition des opérateurs 2015-2016.pdf

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

Page 4: Programmation Orientée Objet par C++ Surdéfinition des opérateurs 2015-2016.pdf

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

Page 5: Programmation Orientée Objet par C++ Surdéfinition des opérateurs 2015-2016.pdf

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