Title: POURQUOI HERITER
1Leçon 1 notion dobjet
IUP Génie InformatiqueBesançon Méthode et
Outils pour la Programmation Françoise Greffier
Université de Franche-Comté
2notion dobjet
- Classe / instance
- Interface / implantation
- Classification des méthodes
- Constructeur(s), destructeur
- Méthodes implicites
- pointeur this
3Une CLASSE est un MODELE
La classe rectangle fournit des méthodes
Une application
Utilise une (ou plusieurs) classe(s) include
... Par activation des méthodes fournies par
la classe
R.saisir()
4Classe et instance de classe
include "rectangle.h" void main
(void) rectangle R
Une classe est définie à la compilation
de lapplication
5ACTIVATION D UNE METHODE
Toute méthode est déclenchée par une instance
include "rectangle.h" void main
(void) rectangle R R.saisir ( ) . . .
6CONFIDENTIALITE
7PRINCIPE de confidentialité
Principe Seules les informations
déclarées publiques dans une classe sont
accessibles à lutilisateur de cette classe.
TOUT LE RESTE EST DU DOMAINE PRIVE (NON
ACCESSIBLE DE l EXTERIEUR).
include "rectangle.h" void main
(void) rectangle R R.saisir ( ) R.lo 4
. . .
pour garantir le fonctionnement correct dun objet
8REGLES D ACCESSIBILITE
Seuls les membres de la section public de (des)
classe(s) utilisées(s) sont accessibles.
Les membres d une classe ont accès à tous les
autres membres de cette classe
9INTERFACE /IMPLANTATION
Interface mode d emploi protocole
d utilisation partie descriptive
INTERFACE d une classe est une partie
conceptuelle qui est distincte et qui précède
l IMPLANTATION de celle-ci.
Implantation représentation physique de
l objet code des méthodes
- DISTINCTION entre
- les fonctionnalités d un objet INTERFACE
- et le codage de celles-ci IMPLANTATION
10CONCEVOIR UNE CLASSE
Etape 1 spécifier une méthode Exemple saisie
du rectangle
11CODER UNE CLASSE
Etape 2 implanter cette méthode Exemple
méthode de saisie du rectangle
include ltiostream.hgt
12Organisation d'une INTERFACE
L interface d une classe est la partie
visible depuis l extérieur, par l utilisateur
de la classe. Elle décline les méthodes fournies
par la classe.
Facteur de qualité Une classification des
méthodes permettra à l utilisateur de la classe
de trouver facilement les méthodes dont il a
besoin.
13CONSTRUCTEUR(S)
Un constructeur est une méthode qui permet de
créer une instance et qui peut aussi
initialiser létat de l'instance créée
Toute classe comprend au moins un constructeur
- SYNTAXE prototype d un constructeur nom de la
classe (paramètres(s) éventuel(s))
Exemple rectangle(void)
14CONSTRUCTEUR(S)
- Il existe trois types de constructeur
- constructeur par défaut
- constructeur par initialisation
- constructeur par copie
15Constructeur par défaut
- SYNTAXE prototype du constructeur par défaut
- nom de la classe (void)
rectangle (void) // IC est construite vide
include "rectangle.h" void main
(void) rectangle R . . .
16Constructeur par initialisation
- SYNTAXE prototype du constructeur par
initialisation - nom de la classe (paramètres d initialisation)
- Exemple
rectangle (double x, double y) //IC est
construite et lox, la y
include "rectangle.h" void main
(void) rectangle R (10,6) . . .
17Constructeur par copie
- Le constructeur par copie peut jouer un des rôles
suivants - Création d une instance par recopie d une
autre instance - Transmission d'argument par valeur
- Retour d'une valeur par une fonction
- SYNTAXE prototype du constructeur par copie
- nom_classe(const nom_classe)
- Exemple
rectangle (const rectangle B) //IC est
construite ICB
18Constructeur par copie
- include "rectangle.h"
- void main (void)
- rectangle R (10,6)
- rectangle R2 (R)
- rectangle R3 R
- . . .
19Constructeur par copie
IMPLANTATION
Cette méthode existe par défaut dans toute
classe. Le compilateur fait par défaut une copie
des valeurs des attributs de l'instance.
Cette copie est satisfaisante pour dupliquer la
longueur et la largeur d'un rectangle.
On surchargera (redéfinira) le constructeur par
copie lorsque la copie des valeurs des attributs
ne réalisera pas une vraie copie (exgestion
par pointeurs). Dans ce cas il sera impératif
de redéfinir le constructeur par copie, car
l'opération implicite de copie est déclenchée
automatiquement dans de nombreux contextes.
20DESTRUCTEUR
Le destructeur joue le rôle suivant Une
instance a une durée de vie correspondant au bloc
dans lequel elle est déclarée. En fin de bloc
l'instance est détruite par un appel automatique
du destructeur. L exécution du destructeur
génère une remise en l état des ressources
(espace mémoire) utilisée à la création de
l instance.
- SYNTAXE prototype du destructeur
- nom_classe (void)
- Exemple
rectangle (void) //destructeur
21DESTRUCTEUR APPEL
- include "rectangle.h"
- void main (void)
- rectangle R
- R.saisir ( )
- . . .
22DESTRUCTEUR implantation
Action vide pour la classe rectangle car il n'y
a pas de ressources mémoire particulières à gérer.
rectangle rectangle (void)
Autre cas gestion dynamique de la
mémoire Lorsque le constructeur induit une
allocation de mémoire (new en C) alors le
destructeur comprend des instructions (delete en
C) permettant de libérer la mémoire
précédemment allouée.
23METHODES IMPLICITES
- Les méthodes suivantes sont prédéfinies pour
chaque classe - constructeur par défaut
- constructeur par copie
- destructeur
- affectation
- tests d égalité
- include "rectangle.h"
- void main (void)
- rectangle R,R2
- R.saisir ( )
- R2R //affectation
Les méthodes implicites peuvent être redéfinies.
Il est parfois impératif de le faire (gestion
dynamique de la mémoire).
24 Le pointeur this
Remarque il nest pas nécessaire d expliciter
un paramètre représentant l instance courante
(IC).
Mécanisme chaque méthode a un premier
paramètre implicite pour représenter l instance
courante.Ce paramètre a pour identificateur (en
C) this this désigne un pointeur sur IC
25Le paramètre this
ILLUSTRATION implantation de la méthode
afficher
void rectangleafficher (void) cout ltlt lo
cout ltlt la
//cout ltlt this -gt lo //cout ltlt this -gt la