Академический Документы
Профессиональный Документы
Культура Документы
Fabio Hernandez
Fabio.Hernandez@in2p3.fr
Vue d'Ensemble
} Notions de base
} Types, variables, opérateurs
} Contrôle d'exécution
} Fonctions
} Mémoire dynamique
} Qualité du logiciel
} Evolution du modèle objet
} Objets et classes
} Fonctions membres
} Classes génériques
} Héritage
} Polymorphisme
} Héritage multiple
} Entrée/sortie
} Comportement
façon d'agir et de réagir d'un objet comme conséquence des
changements d'état et des opérations effectuées sur lui
représente l'activité de l'objet vue de l'extérieur
si on regarde un objet comme un serveur, son comportement est
l'ensemble des services offerts par lui à ses clients
exemple: un point peut être déplacé, tourné autour d'un autre point, etc.
le comportement dépend de l'état de l'objet et de l'opération
effectuée sur lui
l'état d'un objet représente le résultat cumulé de son comportement
} Identité
propriété d'un objet qui permet de le distinguer des autres objets de la
même classe
} Implémentation
vue interne d'une classe
comprend les secrets (détails internes) de son comportement
l'implémentation d'une classe est constituée de l'implémentation de
chacune des opérations définies dans son interface
réponse à la question comment
contenue dans un fichier d'implémentation (.cpp)
O x
// Let's translate p
p.translate(10.0, 20.0);
public:
float getX();
// returns the x coordinate
float getY();
// returns the y coordinate
float rho();
// returns the distance to the origin
float theta();
// returns the angle to the
// horizontal axis
void translate(float horizontal, float vertical);
void rotate(float angle);
Point Nom
Nomde
delalaclasse
classe
x_: float
y_: float Attributs
Attributs
getX: float
getY: float
rho: float
theta: float Opérations
Opérations
translate: void
rotate: void
} En temps d'exécution
// Create a point object
Point p1;
p1: Point
x_ = 0.0
y_ = 0.0
// Now translate p2
p2.translate(-10.0, 20.0);
p1 p2
:Point
x_ = 34.5
y_ = 18.8
#include "Point.h"
#include <math.h> // we need sin(), cos(), sqrt()
float Point::getX()
{
return x_;
}
float Point::getY()
{
return y_;
}
float Point::theta()
{
return atan2(y_, x_);
}
} Accès public
Mot clé public
Les fonctions/données membres sont accessibles par tous les objets
} Accès protégé
Mot clé protected
Etroitement lié avec les mécanismes d'héritage
L'accès est limité aux classes de la hiérarchie
Plus de détails quand nous étudierons l'héritage
} Accès privé
Mot clé private
Les fonctions/données membres sont accessibles uniquement par les
fonctions qui implémentent les services offerts par la classe, et pas de
l'extérieur
tr
te an
t a sla
ro t e Encapsulation
Encapsulation::pourpour
x_ accéder
accéderauxauxdonnées
données
membres
membresde delalaclasse,
classe,ilil
y_ faut
faututiliser
utiliserles
lesservices
services
get
o
fournis
fournispar
parlalaclasse
rh
classe
X
get ta
Y h e
t
Classe Point
POO en C++: Objets et Classes 231 © 1997-2003 Fabio HERNANDEZ
Fonctions Membres
// Modifiers
void translate(float horizontal, float vertical);
void rotate(float angle);
// Selectors
float getX() const; // x coordinate
float getY() const; // y coordinate
private:
// Data members
float x_; // Cartesian coordinates
float y_;
};
///////////////////////////////////////////////////////
// File: Point.cpp
// Description: implementation of the Point class
///////////////////////////////////////////////////////
#include "Point.h"
#include <math.h> // we need sin(), cos(), sqrt()
x_ = currentRho * cos(newTheta);
y_ = currentRho * sin(newTheta);
}
// Modifiers
...
// Selectors
...
private:
// Data members
...
};
POO en C++: Objets et Classes 243 © 1997-2003 Fabio HERNANDEZ
Fonctions Membres d'Initialisation (suite)
///////////////////////////////////////////////////////
// Constructor
Point::Point()
{
x_ = 0.0;
y_ = 0.0;
}
// Translate it
p.translate(45.0, 80.0);
// Modifiers
...
// Selectors
...
private:
// Data members
...
};
POO en C++: Objets et Classes 246 © 1997-2003 Fabio HERNANDEZ
Fonctions Membres d'Initialisation (suite)
///////////////////////////////////////////////////////
// Constructors
Point::Point() // Default constructor
{
x_ = 0.0;
y_ = 0.0;
}
// Modifiers
...
// Selectors
...
private:
// Data members
...
};
POO en C++: Objets et Classes 251 © 1997-2003 Fabio HERNANDEZ
Fonction Membre de Destruction (suite)
///////////////////////////////////////////////////////
// Destructor
Point::~Point()
{
// Nothing to be done
}
Point.h Point.cpp
#include
#include <math.h>
<math.h>
#if
#if !defined(POINT_H)
!defined(POINT_H) #include "Point.h"
#include "Point.h"
#define
#define POINT_H
POINT_H
Point::Point()
Point::Point()
{{
class
class Point
Point {{ x_
x_ == 0.0;
0.0;
public:
public: y_ = 0.0;
y_ = 0.0;
Point(); }}
Point();
~Point();
~Point();
…… Point::~Point()
Point::~Point()
…… {{
private:
private: }}
float
float x_;
x_;
float
float y_;
y_; Point::getX()
Point::getX()
}; {{
}; return
return x_;
x_;
}}
#endif
#endif //
// POINT_H
POINT_H ……
……