objets - séance 7 -
ENSA Khouribga
Décembre 2021
Programmation Orientée Objets - Classes
Tableaux d’objets
En théorie, un tableau peut posséder des éléments de
n’importe quel type. Ainsi nous pouvons déclarer un tableau de
N objets d’une classe MaClasse par :
MaClasse tab[N] ;
Or, du fait qu’on ne peu déclarer un objet sans l’initialiser,
cette déclaration ne sera possible que si la classe MaClasse
admet un constructeur sans arguments (ou un constructeur
dont tous les arguments ont des valeurs par défaut).
Ces mêmes remarques s’appliquent pour les tableaux
dynamiques d’objets. Une déclaration de type :
MaClasse * adr = new MaClasse[N] ;
nécessite aussi un constructeur sans arguments.
On peut créer un objet dynamique, en appelant explicitement
le constructeur, par exemple :
Matrice * M = new Matrice(4,5) ;
Méthodes constantes
Les objets, comme les autres types de C++, peuvent être
déclarées constants avec le mot clé const.
Dans ce cas, seules les fonctions membres déclarées et définies
avec le mot clé const peuvent être appelées par des objets
constants.
En effet, les méthodes déclarée comme constantes
permettent à l’utilisateur de cette méthode de savoir que cette
fonction ne modifiera pas les attributs de l’objet.
Ce sont aussi les seuls fonctions que l’on peut appeler sur des
objets constants.
Remarque :
Une méthode constante peut être appelée sur un objet variable ou
constant.
// Declarations
MaClasse u ; // instance non constante
const MaClasse C ; // instance constante
// Appels
u . F (...); // OK
C . F (...) ; // Erreur : instance constante
u . G (...) ; // OK
C . G (...); // OK
MaClasse w ;
u . K ( C ); // OK
u . K ( w ); // OK
C . K ( w ); /* Erreur : instance constante
et fct non constante */
Remarque :
Les relations d’agrégation et de composition s’expriment en
insérant des variables membres dans une définition de classe.
class Roue {
public : // les methodes ...
private : int diametre ;
...};
class Voiture {
private : string marque ;
Roue roueAvantGauche ;
Roue roueAvantDroite ;
Roue roueArriereGauche ;
Roue roueArriereDroite ;
...};
Prof. Karim Rhofir C++ & POO
Objet d’objets - Composition et Agrégation
Composition (suite)
Si un objet A est un attribut d’un objet B, le constructeur de
l’objet A sera appelé avant celui de l’objet B.
Ceci est logique :pour construire une voiture, il faut
d’abord construire ses composantes, comme le moteur
et les roues.
On dit que A et B sont reliés par une relation de composition,
c’est-à-dire que B est composé de A
Il s’agit d’une relation forte : si B est détruit, A disparaît aussi
C’est normal :Si on détruit une voiture les roues sont
détruites aussi.
Agrégation vs Composition
Agrégation OU Composition ?
Agrégation OU Composition ?
Agrégation OU Composition ?
Agrégation OU Composition ?
Agrégation OU Composition ?