Vous êtes sur la page 1sur 3

C++ - Accesseurs (getters) et mutateurs (setters)

Septembre 2015
1. La protection des donnes membres
2. La notion d'accesseur
3. La notion de mutateur

La protection des donnes membres


L'un des aspects les plus essentiels du concept orient objet est l'encapsulation, qui consiste dfinir
des tiquettes pour les donnes membres et les fonctions membres afin de prciser si celles-ci sont
accessibles partir d'autres classes ou non...
De cette manire, des donnes membres portant l'tiquette private ne peuvent pas tre manipules
directement par les fonctions membres des autres classes. Ainsi, pour pouvoir manipuler ces donnes
membres, le crateur de la classe (vous en l'occurrence) doit prvoir des fonctions membres spciales
portant l'tiquette public, permettant de manipuler ces donnes.
Les fonctions membres permettant d'accder aux donnes membres sont appeles accesseurs,
parfois getter (appellation d'origine anglophone)
Les fonctions membres permettant de modifier les donnes membres sont appeles mutateurs, parfois
setter (appellation d'origine anglophone)

La notion d'accesseur
Un accesseur est une fonction membre permettant de rcuprer le contenu d'une donne membre
protge. Un accesseur, pour accomplir sa fonction :
doit avoir comme type de retour le type de la variable renvoyer
ne doit pas ncessairement possder d'arguments
Une convention de nommage veut que l'on fasse commencer de faon prferrentielle le nom de
l'accesseur par le prfixe Get, afin de faire ressortir sa fonction premire.
La syntaxe d'un accesseur rduit sa plus simple expression ressemble donc ceci :

class MaClasse{
private : TypeDeMaVariable MaVariable; public : TypeDeMaVariable GetMaVariable();};TypeDeMaVariable
MaClasse::GetMaVariable(){ return MaVariable;}

Sur l'exemple prcdent, l'accesseur minimal de la donne membre age pourrait tre le suivant :

class Toto{
private : int age; public : int GetAge();};int Toto::GetAge(){ return age;}

La notion de mutateur
Un mutateur est une fonction membre permettant de modifier le contenu d'une donne membre protge.
Un mutateur, pour accomplir sa fonction :
doit avoir comme paramtre la valeur assigner la donne membre. Le paramtre doit donc tre du
type de la donne membre
ne doit pas ncessairement renvoyer de valeur (il possde dans sa plus simple expression le type void)
Une convention de nommage veut que l'on fasse commencer de faon prfrentielle le nom du mutateur
par le prfixe Set. La syntaxe d'un mutateur rduit sa plus simple expression ressemble donc ceci :

class MaClasse{
private : TypeDeMaVariable MaVariable; public : void
SetMaVariable(TypeDeMaVariable);};MaClasse::SetMaVariable(TypeDeMaVariable MaValeur){ MaVariable = MaValeur;}

Sur l'exemple prcdent, le mutateur minimal de la donne membre age pourrait tre le suivant :
class Toto{
private : int _age; public : void SetAge(int);};void Toto::SetAge(int age){ _age = age;}

L'intrt principal d'un tel mcanisme est le contrle de la validit des donnes membres qu'il procure. En
effet, il est possible (et mme conseill) de tester la valeur que l'on assigne une donne membre, c'est-dire que l'on effectue un test de validit de la valeur de l'argument avant de l'affecter la donne membre.
Le mutateur ci-dessus peut par exemple vrifier si l'ge de Toto est correct (on considrera pour cela que
Toto ne peut pas vivre plus de 200 ans... c'est avec des hypothses telles que celle-ci que peuvent
apparatre des bogues... ah les progrs de la gntique !).
class Toto{
private : int _age; public : int SetAge(int);};int Toto::SetAge(int age){ if (age < 200) { _age = age; return 1; } else return 0;}

Prcdent
56
57
58
59
60
61

Ralis sous la direction de Jean-Franois PILLOU,


fondateur de CommentCaMarche.net.
Ce document intitul C++ - Accesseurs (getters) et mutateurs (setters) issu de CommentCaMarche
(www.commentcamarche.net) est mis disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des
copies de cette page, dans les conditions fixes par la licence, tant que cette note apparat clairement.