Documente Academic
Documente Profesional
Documente Cultură
Fabio Hernandez
Fabio.Hernandez@in2p3.fr
Vue d'Ensemble
}
}
}
}
}
}
}
}
}
}
}
}
}
}
Notions de base
Types, variables, oprateurs
Contrle d'excution
Fonctions
Mmoire dynamique
Qualit du logiciel
Evolution du modle objet
Objets et classes
Fonctions membres
Classes gnriques
Hritage
Polymorphisme
Hritage multiple
Entre/sortie
197
abstraction
dfinition de l'interface
utilisation
implmentation
modification
fonction membres
contrle d'accs
initialisation/destruction
Rsum
198
moteur
chssis
volant
systme lectrique
processus de montage
199
Etat
Comportement
Identit
Etat
200
Comportement
Identit
201
}
}
202
interface
implmentation
Interface
203
Implmentation
204
205
la coordonne x
la coordonne y
la distance l'origine ()
l'angle par rapport l'horizontale ()
translation
rotation autour de l'origine
...
206
};
POO en C++: Objets et Classes
207
}
}
208
objet destinataire
du message
POO en C++: Objets et Classes
p.rotate(45.0);
argument(s) du service
209
inclusion du fichier
qui contient
l'interface
de la classe
210
211
212
213
}
}
}
}
}
214
getX();
getY();
rho();
theta();
// x coordinate
// y coordinate
};
POO en C++: Objets et Classes
215
http://www.rational.com/uml
Nom
Nomde
delalaclasse
classe
Point
x_: float
y_: float
Attributs
Attributs
getX: float
getY: float
rho: float
theta: float
translate: void
rotate: void
Oprations
Oprations
216
En temps d'excution
// Create a point object
Point p1;
p1: Point
x_ = 0.0
y_ = 0.0
p2: Point
x_ = 0.0
y_ = 0.0
217
Deux
Deuxinstances
instances
diffrentes
diffrentesde
delalamme
mme
classe
classePoint
Point,,avec
avecles
les
mmes
mmesvaleurs
valeursdans
dansleurs
leurs
attributs
attributs
1997-2003 Fabio HERNANDEZ
p2: Point
x_ = 0.0
y_ = 0.0
// Now translate p2
p2.translate(-10.0, 20.0);
p1: Point
p2: Point
x_ = 34.5
y_ = 18.8
x_ = -10.0
y_ = 20.0
218
219
Une
Uneseule
seuleinstance
instance
de
delalamme
mmeclasse
classe
Point
Point,,rfrence
rfrence
par
pardeux
deuxpointeurs
pointeurs
diffrents
diffrents
1997-2003 Fabio HERNANDEZ
p2
:Point
x_ = 34.5
y_ = 18.8
220
221
Fichier Point.cpp
///////////////////////////////////////////////////////
// File: Point.cpp
// Description: implementation of the Point class
///////////////////////////////////////////////////////
#include "Point.h"
#include <math.h>
float Point::getX()
{
return x_;
}
float Point::getY()
{
return y_;
}
POO en C++: Objets et Classes
222
223
Une
Unefonction
fonction
membre
membrepeut
peuten
en
appeler
appelerd'autres
d'autres
de
delalamme
mme
classe
classe
224
Contrle d'accs
}
pour un service (fonction membre), qu'il est utilisable par n'importe quel
objet client
pour un attribut (donne membre), qu'il est accessible (y compris pour le
modifier) depuis n'importe quel autre objet
225
public
protg
priv
226
Accs public
Accs protg
Mot cl public
Les fonctions/donnes membres sont accessibles par tous les objets
Mot cl protected
Etroitement li avec les mcanismes d'hritage
L'accs est limit aux classes de la hirarchie
Plus de dtails quand nous tudierons l'hritage
Accs priv
Mot cl private
Les fonctions/donnes membres sont accessibles uniquement par les
fonctions qui implmentent les services offerts par la classe, et pas de
l'extrieur
227
private:
float x_;
float y_;
};
POO en C++: Objets et Classes
// x coordinate
// y coordinate
228
229
230
sla
t
Encapsulation
Encapsulation::pour
pour
accder
accderaux
auxdonnes
donnes
membres
membresde
delalaclasse,
classe,ilil
faut
faututiliser
utiliserles
lesservices
services
fournis
fournispar
parlalaclasse
classe
rh
X
get
x_
y_
an
t
o
r
e
t
a
tr
get
Y
ta
e
h
Classe Point
POO en C++: Objets et Classes
231
Fonctions Membres
}
232
233
//
//
//
//
Compilation ERROR:
'origin' is constant
and Point::theta()
is not
1997-2003 Fabio HERNANDEZ
234
// Modifiers
void translate(float horizontal, float vertical);
void rotate(float angle);
// Selectors
float getX() const;
float getY() const;
// x coordinate
// y coordinate
235
236
237
238
239
240
241
}
}
242
243
244
}
}
245
246
247
// Default constructor
248
libration de mmoire
fermeture des fichiers
libration de verrous
...
249
250
251
252
Point.cpp
#include
#include <math.h>
<math.h>
#include
"Point.h"
#include "Point.h"
#if
#if !defined(POINT_H)
!defined(POINT_H)
#define
#define POINT_H
POINT_H
Point::Point()
Point::Point()
{{
x_
x_ == 0.0;
0.0;
y_
=
0.0;
y_ = 0.0;
}}
class
class Point
Point {{
public:
public:
Point();
Point();
~Point();
~Point();
private:
private:
float
float x_;
x_;
float
float y_;
y_;
};
};
Point::~Point()
Point::~Point()
{{
}}
Point::getX()
Point::getX()
{{
return
return x_;
x_;
}}
#endif
#endif //
// POINT_H
POINT_H
253
Exercices
}
254
Rsum
}
}
}
}
255