Vous êtes sur la page 1sur 6

Chapitre 3 Classes et objets

Déclaration et définition des méthodes

Un objet est la matérialisation concrète d'une classe. C’est un type et donc il faut lui associer des
valeurs et des opérations (attributs - comportements). On rappelle que les éléments constitutifs de la
déclaration d'une classe sont:
• les champs : variables d'instance, i.e. qui seront propres à chaque objet de cette classe;
• les méthodes: les opérations à appliquer aux objets de la classe. En C++, la terminologie
officielle de méthode est "fonction membre". Les méthodes ou fonctions membres sont
définies de façon générique pour toutes les instances d'une classe. Ainsi, appeler une
méthode n'a pas de sens en soi. Mais à l'exécution, une méthode est reliée à une seule
instance de sa classe. Pour appeler la méthode sur une instance de la classe, on précisera
donc toujours l'objet sur lequel la méthode s'exécute.
En "C++", la déclaration d'une méthode consiste à écrire son prototype et sa définition peut être
fournie de façon annexe (dans un autre fichier source). Ainsi, on peut séparer les déclarations et le
code des méthodes. Le fichier.h dont l’extension est .h, contient la description des méthodes qu’on
appelle le prototype de la méthode. Il permet d'annoncer l'existence des fonctions à l'ensemble des
autres fichiers du programme. Le code de la méthode peut être fourni dans le fichier ".cpp". C'est
pourquoi, pour définir la méthode d'une classe, on a une syntaxe particulière permettant de préciser
la classe à laquelle est associée cette méthode. Pour cela, en plus du prototype de la méthode, on
utilise Nom_de_la_classe suivi de "l'opérateur de portée ::" (deux points deux points ou quatre
points). Ainsi sa signature est :

Type de retour Nom_de_la_classe :: Nom_de_la_méthode (liste des paramètres)


{
Code de la fonction ou de la méthode ;
}

On retrouve trois éléments auxquels s'ajoute le nom de la classe.


• Le premier élément est le type de retour. Il permet d'indiquer le type de variable renvoyée
par la méthode. Le résultat est renvoyé grâce à return. Si la fonction membre doit renvoyer
du texte, alors le type de retour sera string; si elle effectue un calcul, alors il sera int ou
double par exemple.
• Le deuxième élément est le nom de la fonction membre. L'important est de choisir un nom
de la méthode qui décrit bien ce qu'elle fait, comme pour les variables.

1
Chapitre 3 Classes et objets

• Entre les parenthèses, on trouve la liste des arguments de la méthode. Ce sont les données
avec lesquelles la méthode travaillera.
• Finalement, il y a des accolades qui délimitent le contenu de la fonction. Toutes les
opérations qui seront effectuées se trouvent entre ces deux accolades.

Remarque :
En C++ la définition d’une méthode est syntaxiquement similaire à celle d’une fonction
mais du point de vue sémantique elles sont très différentes

En résumé:

• L'interface rassemble sous le nom de la classe ses attributs et les prototypes de ses
méthodes. Donc pour définir une classe on a trois fichiers. On place en général cette
interface dans un fichier un header (Nom_classe.h).
• La définition de la classe c.à.d. le corps de la classe qui contient le code des méthodes
définies dans l'interface de la classe est placé dans un fichier source (Nom_classe.cpp). En
général le fichier.cpp porte le nom de la classe mais il n'y a aucune obligation. En C++ la
classe peut être dans un fichier qui ne porte pas le nom de la classe. Mais il vaut mieux lui
donner le même nom que la classe.
• Le troisième fichier nommé "main.cpp" contient la fonction "main". Le fichier main.cpp
ne fait qu'utiliser les objets. L'utilisation de la classe nécessite l'import du fichier de
déclaration par " #include fichier.h" pour pouvoir créer des objets de ce type.

Dans l’exemple de la classe "Etudiant", on sait qu'il y a un attribut "Matricule", une méthode
"getMatricule" et une méthode "setMatricule". La déclaration et la définition du concept
élémentaire de "Etudiant" peuvent être: Opérateur de portée pour
désigner la méthode

Déclaration de la classe Etudiant Définition de la classe Etudiant


class Etudiant
int Etudiant :: getMatricule ( )
{
{
public:
return matricule;
int getMatricule( );
}
void setMatricule (int Matri);
private: void Etudiant :: setMatricule (int matri)
int matricule; {
Matricule = matri ;
}; }

Etudiant.h Etudiant.cpp

2
Chapitre 3 Classes et objets

Une méthode (ou fonction membre) est la réalisation concrète d’une opération d’un objet. Il existe
quatre types de méthodes :

1er type : la méthode libre

C’est la méthode la plus simple. Son corps peut contenir n’importe quel traitement.
Sa signature est :

public type de retour Nom_de_la_méthode (liste des paramètres)


{
code de la méthode ;
}

Exemple

Type de la valeur Nom de la Types et identificateurs des


renvoyée ou void méthode paramètres

public float calcul (int P1, int P2)


{
float X1 ; Notre méthode
retourne ici une
X1 = -P2/P1 ;
valeur de type float
Return (X1) ;
}

Il est à noter que return marque la fin de l’exécution de la fonction: les instructions qui se trouvent
après le return ne sont jamais exécutées. Une fonction peut ne contenir aucun return et donc elle ne
renvoie rien.

2èmr type : les méthodes accesseurs (getters)

Elles concernent la lecture des attributs, c'est-à-dire qu’elles permettent de récupérer la valeur d’un
attribut. La signature est :

public type_d’attribut Nom_méthode( )


{
Return Nom_Attribut ;
}

Ces méthodes commencent généralement par le préfixe "get" ("récupérer" en anglais).

3
Chapitre 3 Classes et objets

Dans le cas de la classe voiture, si on veut par exemple lire la couleur d’une voiture, la méthode
s’appellerait "get_couleur" et on peut l’écrire de la façon suivante:

public char get_couleur


{
Return couleur;
}

- Une méthode getter doit être public ;


- Une seule variable (attribut) à retourner. Chaque attribut a son propre getter.

3èmr type : les méthodes mutateurs (ou setters)

Les setters sont des méthodes qui affectent des paramètres à des attributs. Elles permettent la
modification et l'initialisation des attributs des objets créés par un constructeur. Ces setters sont
généralement précédés du préfixe "set" ("mettre", en anglais). Comme les attributs sont d’accès
private, les méthodes mutateurs permettent de modifier les attributs de façon sécurisée. La
signature est :

public type_d’attribut Nom_méthode (type param1)


{
Attribut = param1 ;
}

Exemple : attribuer la couleur "cl" à l’attribut couleur

public void set_couleur (char cl)


{
Couleur = cl;
}

Une méthode getter ne peut modifier qu’un seul attribut.


Les méthodes getters et setters sont presque automatiquement créées lors de la création d’une
nouvelle classe.

2èmr type : la méthode constructeur

Un constructeur est une fonction membre qui porte le même nom que la classe. Elle est appelée
lors de la déclaration d’un objet. Le rôle d'un constructeur est l'instanciation d’une classe (la
création d’un objet).

4
Chapitre 3 Classes et objets

Les constructeurs permettent de définir des comportements particuliers des attributs lors de
l'instanciation d'une classe. Donc le rôle des constructeurs n'est pas seulement de construire les
objets, mais c'est aussi d'initialiser les objets.
Le constructeur par défaut est sans paramètres. Il s’écrit de la façon suivante:

public Nom_Classe ( )
{
...
}
Le constructeur avec paramètres permet de créer et d'initialiser un nouvel objet.
Exemple d’un constructeur avec paramètre pour la classe voiture :

public voiture (char couleur, int an)


{
This -> couleur = couleur;
annee = an;
}

Ce constructeur initialise la couleur et l’année d’un objet de type voiture avec des valeurs passées
en paramètre lors de l’instanciation de la classe.

Le mot clé this

Le mot clé réservé "this." est un pointeur utilisé pour lever ambiguïté entre les attributs et les
champs d’instance. Il est utile lorsqu’on a besoin de se référer à l’instance de l’objet dans laquelle
on se trouve. "this." est absolument nécessaire lorsque le nom de l’attribut et celui du paramètre de
la méthode sont les mêmes. Comme dans l’exemple ci-dessus : couleur et couleur.
This->couleur fait référence à la variable couleur alors que couleur (après le =) fait référence à la
valeur de l’argument donné en appelant la méthode constructeur.

En résumé
- les constructeurs portent tous le nom de la classe;
- le constructeur n’a pas de type de retour (pas de void et pas de return) ;
- le constructeur est toujours public;
- La méthode constructeur est appelée lors de la déclaration d’un objet.
- la méthode constructeur est obligatoire. Chaque fois qu’on définit une classe d’objet, les
méthodes constructeur sont appelées automatiquement pour construire et initialiser ces

5
Chapitre 3 Classes et objets

objets. Donc le rôle des constructeurs n'est pas seulement de construire les objets, mais c'est
aussi d'initialiser les objets.
- le constructeur sans paramètres est appelé lors de l'instanciation d'un objet sans initialisation.
- Il est fréquent et ordinaire que plusieurs constructeurs soient définis pour une même classe.
C’est ce qu’on appelle la surcharge du constructeur. Ces constructeurs seront différenciés
par le nombre et le type des arguments nécessaires. Chacun d'eux correspond pour
l'utilisateur à la façon de commander/obtenir un objet. Cela permet de créer un objet de
différentes manières.

Vous aimerez peut-être aussi