+ All Categories
Home > Documents > Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des...

Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des...

Date post: 12-Jul-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
66
Introduction à la Programmation Orientée Objet et au C++ Christophe Collard Concepts et exemples
Transcript
Page 1: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Introduction à la Programmation Orientée

Objet et au C++

Christophe Collard

Concepts et exemples

Page 2: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Plan

Notions de programmation de base

Classes et Objets

Les fonctions amies

La surdéfinition d op ateu s

Les patrons de fonctions et de classes

La te h i ue de l h itage

Les espaces de nommage

Application - Code de calcul Simula+

Discussion

Page 3: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Notions de Programmation de Base

Christophe Collard

Page 4: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

1. Les variables système

Type de donnée Signification Taille (en octets) Plage de valeurs acceptée

char Caractère 1 -128 à 127

unsigned char Caractère non signé 1 0 à 255

short int Entier court 2 -32 768 à 32 767

unsigned short int Entier court non signé 2 0 à 65 535

int Entier

unsigned int Entier non signé

long int Entier long 4 -2 147 483 648 à 2 147 483 647

unsigned long int Entier long non signé 4 0 à 4 294 967 295

float Flottant (réel) 4 -3.4*10-38 à 3.4*1038

double Flottant double 8 -1.7*10-308 à 1.7*10308

long double Flottant double long 10 -3.4*10-4932 à 3.4*104932

bool Booléen

2 (sur processeur 16 bits) 4 (sur processeur 32 bits)

-32 768 à 32 767 -2 147 483 648 à 2 147 483 647

2 (sur processeur 16 bits) 4 (sur processeur 32 bits)

0 à 65 535 0 à 4 294 967 295

Même taille que le type int, parfois 1 sur quelques

compilateurs

Prend deux valeurs : 'true' et 'false' mais une conversion implicite (valant 0 ou 1) est faite par le compilateur lorsque l'on affecte un entier (en réalité toute autre valeur que 0 est considérée comme égale à True).

1 octet = 8 bits

1 bit = 0 ou 1

Christophe Collard

Page 5: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

2. Les boucles

But : effectuer plusieurs fois le e type d’op ratio s

Ex: sommer les 10 premiers entiers

Attention : en C++ il faut initialiser les variables, sinon une valeur aléatoire est attribuée

for (int i=0; i<10; i++)

type du compteur

initialisation du compteur

reste dans la boucle tant que cette condition est vérifiée

Incrémente le compteur de 1

Christophe Collard

Page 6: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

3. Les fonctions

Fonction int

double float

INPUTS OUTPUT

But : accomplir une tâche

Atte tio : u e fo tio e peut e o e u u seul t pe

Fonction standard : float fctname (int, double)

Fonction sans argument : float fctname ()

Fonction sans valeur de retour : void fctname (int, double)

Remarque : une fonction bien programmée peut être lue sur 1 seul écran

Page 7: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Transmission de variable

Il existe 3 façons de transmettre des variables à une fonction :

- transmission par valeur

- transmission par adresse

- transmission par référence

adresse

valeur

adresse

valeur

n a

les valeurs de n et p sont dupliquées

on change les valeurs des copies

adresse

valeur

n a

les valeurs de n et p ne sont pas dupliquées

on change les valeurs des originaux

la simplicité de la notation de la transmission par valeur

le mécanisme de la transmission par adresse Christophe Collard

Page 8: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

4. Surdéfinition de fonctions

une fonction avec un même nom possède plusieurs significations

sosie numero 1 : a = 5

sosie numero 2 : a = 2.5

Que se passe t il si x est de type float, long

dou le, …?

conversion du type par le compilateur Christophe Collard

Page 9: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

7. Lallo atio d a i ue de oi e

l op ateu NEW se t à alloue de la oi e

l op ateu DELETE se t à li e de la oi e

Exemple 1

Exemple 2

Pou alloue l e ts d u « type » donné : new type [n]

new retourne un pointeur (type*) sur le 1er l e t d u ta leau

adresse

valeur

p

p[0]

adresse

valeur

adresse

valeur

adresse

valeur

adresse

valeur

p[4]

Lop ateu NEW

Christophe Collard

Page 10: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Lop ateu DELETE

li e la oi e allou e pa l op ateu NEW

o do e o e a gu e t l ad esse du poi teu fou ie pa e

syntaxe pour les éléments de type C++ standard

int* p;

p = new int [5];

delete p;

Atte tio le rôle de l’op rateur delete est tr s i porta t. Si on détruit un pointeur sans libérer correctement la mémoire, celle-ci ’est plus accessible et ne peut être réallouée

Stack overflow

Christophe Collard

Page 11: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Classes et Objets

Christophe Collard

Page 12: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Objectif

double a, b, s, p;

a= 5;

b = 7;

s = a + b;

p = a * b;

Variables standart du C++

Page 13: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Objectif

double a, b, s, p;

a= 5;

b = 7;

s = a + b;

p = a * b;

Variables standart du C++

D fi i de ou eau t pes de a ia les : e teu s, at i e, te seu s, …

double p;

vector u (4) , v(4), w(4);

u[1]=5; u[2]=3; u[3]=-1; u[4]=7;

v[1]=0.4; v[2]=7; v[3]=-1.2; v[4]=0.75

w = u + v;

p = u * v;

Page 14: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

1. Classes et encapsulation des données

généralisation de la notion de type

e te sio des t pes C++ sta da d à de ou eau t pes d fi is pas l utilisateu

regroupe des données et des méthodes

données membres fonctions membres

Classe

On a séparé les données et fonctions membres en 2 catégories

public private Christophe Collard

Page 15: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Encapsulation

p i ate : do es et thodes o a essi les à l e t ieu de la lasse

seules les fonctions membres y ont accès

p ote ted : do es et thodes o a essi les à l e t ieu de la lasse

accès possible par les classes dérivées (cf plus tard)

pu li : do es et thodes a essi les à l e t ieu de la lasse

Remarques

pour modifier des données privées il faut passer via des méthodes publiques

En POO pure, les données sont encapsulées et leur accès ne peut se faire que par le

biais de méthodes

Christophe Collard

Page 16: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Définition des fonctions membres (méthodes)

x et y modifiables initialise méthode de point

le symbole :: est un opérateur de résolution de portée

l ide tifi ateu initialise est celui défini dans la classe point

Christophe Collard

Page 17: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Utilisation de la classe

Remarques

poi t est u ou eau t pe d fi i pa l utilisateu

a et b sont des instances de la classe point

a et b sont encore appelés des objets de type point

si au u des ots p i ate ou pu li appa aît da s la lasse, tout est o sid o e ta t p i ate => ie est a essi le

Christophe Collard

Page 18: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

2. Constructeur et destructeur

atio d u ou el o jet

initialisation de ses données

allocation de mémoire

Processus automatisé

CONSTRUCTEUR

dest u tio d u o jet

libération de mémoire

Processus automatisé

DESTRUCTEUR

Fonctions membres appelées automatiquement à

ha ue atio / dest u tio d o jet

Christophe Collard

Page 19: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Exemple Résultat: affiche 10 valeurs aléatoires

Ch

rist

op

he

Co

lla

rd

Page 20: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

3. E ploitatio d u e lasse

Disso ie l i pl e tatio d u e lasse de so utilisatio

Mettre dans un fichier séparé la classe et son implémentation

C atio de i lioth ues ue l o eg oupe pa th es

4. Propriétés des fonctions membres

Surdéfinition des fonctions membres

La surdéfinition de fonctions « ordinaires » e C++ s appli ue au fonctions membre d u e lasse, o p is au constructeur

Elle e peut s appli ue au dest u teu ui e eçoit au u a gu e t Christophe Collard

Page 21: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Exe

mp

le

Christophe Collard

Page 22: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Les o jets t a s is e a gu e t d u e fo tio e e

définir une méthode « coincide » dans la classe point pour comparer 2

objets de type point

Exemple

so appel s effe tue de la a i e sui a te

a.coincide (b)

ou par symétrie du problème

b.coincide (a)

Christophe Collard

- transmission par valeur

- transmission par adresse

- transmission par référence

Page 23: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Résultat

a et b 0 (false)

b et c 1 (true) Christophe Collard

Page 24: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Les fonctions amies

Christophe Collard

Page 25: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

POO pure Encapsulation des données

données membres privées accessibles seulement par les

méthodes publiques de la classe

u e thode d u e aut e lasse doit passe ia les méthodes publiques de la classe pour accéder aux

données privées

problème dans certains cas

Exemple

On définit une classe vector et une classe matrix.

Produit matrice- e teu essite l a s au do es p i es des 2 lasses

Christophe Collard

Page 26: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Il e iste plusieu s situatio s d a iti

• fo tio i d pe da te a ie d u e lasse

• fo tio e e d u e lasse et a ie d u e aut e lasse

• fonction amie de plusieurs classes

• toutes les fo tio s e e d u e lasse, a ies d u e aut e lasse

Fo tio i d pe da te a ie d u e lasse

Une fonction amie se déclare avec le mot clé friend

Exemple

Christophe Collard

Page 27: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Résultat a et b coincident

a et c ne coincident pas Christophe Collard

Page 28: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

La su d fi itio d op ateu s

Christophe Collard

Page 29: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

On considère une classe vector 2D :

class vector

{ int x,y;

};

On définit 2 objets de type vector a et b

a

b

Peut on écrire comme pour un type standard C++ la somme a + b ?

Page 30: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Il faut surd fi ir l’op rateur + pour la classe

définir une fonction operator + au sein de la classe

utiliser le mot clé operator sui i de l op ateu à su d fi i

la fonction operator + peut être :

• soit une fonction membre de la classe

• soit une fonction indépendante amie de la classe

• soit une fonction indépendante de la classe

Afi de p ot ge les do es et d a l e le ode, o hoisit e g al de su d fi i l op ateu o e fo tio i d pe da te a ie de la lasse.

Page 31: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Surdéfinition d op ateu a e u e fo tio a ie

Résultat

coordonnees (1,2)

coordonnees (2,5)

coordonnees (3,7)

coordonnees (6,14)

Page 32: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Surdéfinition d op ateu a e u e fo tio e e

Résultat identique

Page 33: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Remarques

la fonction operator + est appelé de la manière suivante :

fontion indépendante : a + b operator + (a,b)

fontion membre : a + b a.operator + (b)

la fonction membre operator + fait apparaître une dissymétrie et

l o jet a e peut pas t e p ot g

Opérateurs et transmission par référence

Dans les deux exemples précédents, on utilise la transmission par valeur

Pour des objets de grande taille, il vaut mieux utiliser la transmission par

f e e. O peut alo s p ot ge les o jets t a s is a e o st

point operator + (const point& a, const point&b)

Le etou de l o jet poi t se fait obligatoirement par valeur

Page 34: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Surdéfinition de l op ateu [ ]

exemple de la classe vector

l op ateu [ ] pe et d a de au ième élément du vecteur

En informatique on commence à compter à partir de 0

En mathématiques on commence à compter à partir de 1

C est l op ateu [ ] ui fe a la o e sio

C++ i pose de d fi i l op ateu [ ] o e fonction membre

int& operator [ ] (int);

retour par référence o ligatoi e afi d utilise l op ateu pou affe te des valeurs

Page 35: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Les patrons de fonctions

Les patrons de classes

Page 36: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

La surdéfinition de fonctions permet de donner un nom unique à plusieurs

fonctions réalisant un travail différent

La notion de patron est plus puissante et plus restrictive

Plus puissante

o it u e seule fois la d fi itio d u e fo tio pou ue le o pilateu puisse l adapte auto ati ue e t à i po te uel t pe

Plus restrictive

toutes les fonctions ainsi fabriquées ont la même définition et le même

algorithme

But

écrire une fonction qui soit valable quel que soit le type des arguments utilisés

Page 37: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Exemple

int min (int a, int b)

{ return (a < b) ? a : b;

}

float min (float a, float b)

{ return (a < b) ? a : b;

}

double min (double a, double b)

{ return (a < b) ? a : b;

}

long int min (long int a, long int b)

{ return (a < b) ? a : b;

}

et …

On écrit la même fonction pour tous les types existant en C++

est lo g, t s lo g, t s t s lo g

et en plus il faut le faire pour toutes les fonctions

ça multiplie les lignes de code et rend le code illisible

il faut compléter le code quand on définit ses propres classes

Page 38: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

On résout ce problème en utilisant les patrons de fonctions

cette méthode est très puissante

Elle pe et de d fi i des thodes pou des t pes ui e iste t pas e o e

patron type

fonction

Résultat min (n,p) = 4

min (x,y) = 2.5

Page 39: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Surdéfinition des patrons

Remarque

o peut t a s ett e des l e ts de i po te uel t pe au fo tio s grâce aux patrons

les fo tio s su d fi ies doi e t a oi u o e d a gu e ts diff e t afi d ite les a igüit s

Page 40: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Les patrons de classes

Mise en évidence du problème

Comment stocker des points avec des coordonnées int, float, dou le, … ?

Utiliser des patrons de classe

Page 41: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Les patrons de patrons

Exemple d appli atio à la mécanique:

Loi de comportement : Σ = C :: E

Page 42: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Les patrons de patrons

Exemple d appli atio à la mécanique:

Loi de comportement : Σ = C :: E

Tenseurs d o d e 2 : Σ, E

Tenseur d o d e 4 : C (tenseur d lasti it )

C isotrope => 2 constantes d lasti it (Lamé)

Page 43: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Les patrons de patrons

Exemple d appli atio à la mécanique:

Loi de comportement : Σ = C :: E

Tenseurs d o d e 2 : Σ, E

Tenseur d o d e 4 : C (tenseur d lasti it )

C isotrope => 2 constantes d lasti it (Lamé)

Loi de

comportement

E

C Σ

INPUTS OUTPUT Fonction

Page 44: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Les patrons de patrons

Exemple d appli atio à la mécanique:

Loi de comportement : Σ = C :: E

Tenseurs d o d e 2 : Σ, E

Tenseur d o d e 4 : C (tenseur d lasti it )

C isotrope => 2 constantes d lasti it (Lamé)

Loi de

comportement

E

C Σ

INPUTS OUTPUT Fonction

C: utilisation d u pat o pou sto ke les constantes d lasti it

Page 45: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Loi de

comportement

E

C Σ

INPUTS OUTPUT Fonction

C: utilisation d u pat o pou sto ke les constantes d lasti it

C -> cubique (3 constantes élasticté)

Comment ne pas réécrire le code de la loi de comportement dans ce nouveau cas ?

Tenseurs d o d e 2 : Σ, E

Tenseur cubique : C (tenseur d lasti it )

Page 46: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Loi de

comportement

E

C Σ

INPUTS OUTPUT Fonction

C: utilisation d u pat o pou sto ke les constantes d lasti it

C -> cubique (3 constantes élasticté)

Comment ne pas réécrire le code de la loi de comportement dans ce nouveau cas ?

Tenseurs d o d e 2 : Σ, E

Tenseur cubique : C (tenseur d lasti it )

utiliser un patron pour C

C utilise déjà un patron pour stocker les constantes d lasti it

=> utilisation d u pat o de pat o

Page 47: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Avantage :

La loi de comportement reste valable même pour des objets non encore définis

Ex. On pourra définir plus tard un classe pour l lasti it orthotrope et utiliser

la même loi de comportement sans changer le code gérant cette loi.

Page 48: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

La te h i ue de l h itage

Page 49: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Le o ept de l h itage ou de lasses d i es o stitue l u des fondements de la POO

Intérêt

classe de base

classe dérivée

propriétés de la classe

propriétés classe de base + nouvelles propriétés

Classe dérivée :

• nouvelle classe

• définie à partir de la classe de base

• hérite des propriétés de la classe de base

• ajoute de nouvelles propriétés à la classe de base

• ne modifie pas la classe de base

permet de développer de nouveaux outils en se basant sur les acquis de la

classe de base

Page 50: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Remarque

L h itage est pas li it à u seul i eau

• une classe dérivée peut devenir classe de base pour une autre classe

• plusieu s lasses peu e t t e d i es d u e e lasse

Page 51: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Mise e œu e de l h itage

Classe de base

Page 52: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Classe dérivée

On ajoute une information à cette classe : la couleur du point

Programme principal

Page 53: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Utilisatio des e es d u e lasse de ase da s u e lasse dérivée

Quand on appelle p.affiche() pour un objet de type pointcol, cette fonction

est pas d fi ie da s la lasse e fa t poi t ol

C est la fo tio affi he de la lasse pa e t poi t ui est appel e

C est la fo tio affi he de la lasse pa e t poi t ui est appel e

Page 54: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Utilisation

classe de base

dérivée 3 dérivée 2 dérivée 1 dérivée 4

pa tie o u e d u p o l e

solution 1 solution 2 solution 3 solution 4

gain de temps en programmation

pas de pénalité de temps pour les fonctions non utilisées dans la classe

dérivée, car non i lues lo s de l ditio de lie

pe te de te ps lo s d appel de fo tio s i i u es

Page 55: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Les espaces de nommage

Page 56: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

zones de déclaration permettant de délimiter la recherche des noms des

identificateurs par le compilateur

Mot clé : namespace

But

regrouper les identificateurs logiquement pour éviter les conflits de nom

e t e plusieu s pa ties d u e p ojet

Remarque

par défaut, C++ utilise un espace de nommage (namespace std) de portée

globale dans lequel il doit y avoir aucun conflit de nom

D fi itio d u espa e de o age

Page 57: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Exemple de projet

Page 58: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

simula+

MOL++

MateriOL++

MPISOL++

PMOL++

materials

tests

gui

doc

MOL++

MateriOL++

MPISOL++

PMOL++

materials

Page 59: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

définition de la classe vector

Page 60: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Page 61: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Méthodes de la classe vector

Page 62: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Page 63: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Utilisation de la classe vector

Page 64: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Page 65: Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des données généralisation de la notion de type Æ v ]}v Ç == v v }µÀ µÆ Ç

Christophe Collard

Documentation en ligne & héritage


Recommended