Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des...
Transcript of Introduction à la Programmation Orientée Objet et … a la POO.pdf1. Classes et encapsulation des...
![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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/1.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/2.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/3.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/4.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/5.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/6.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/7.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/8.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/9.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/10.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/11.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/12.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/13.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/14.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/15.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/16.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/17.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/18.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/19.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/20.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/21.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/22.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/23.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/24.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/25.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/26.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/27.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/28.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/29.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/30.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/31.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/32.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/33.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/34.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/35.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/36.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/37.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/38.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/39.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/40.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/41.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/42.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/43.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/44.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/45.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/46.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/47.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/48.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/49.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/50.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/51.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/52.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/53.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/54.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/55.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/56.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/57.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/58.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/59.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/60.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/61.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/62.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/63.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/64.jpg)
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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/65.jpg)
Christophe Collard
Documentation en ligne & héritage
![Page 66: 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 }µÀ µÆ Ç](https://reader033.fdocuments.us/reader033/viewer/2022042910/5f3fadcf0255cc14281fc21c/html5/thumbnails/66.jpg)
Christophe Collard
Références P se tatio t l ha gea le à l ad esse : http://www.lpmm.univ-metz.fr/collard/doc/introduction a la POO.pdf
Cours complet téléchargeable à l ad esse :
http://www.lpmm.univ-metz.fr/collard/doc/Programmation Orientee objet et
C++.v1.pdf