class Point
{
private:
int
x;
int
y;
public:
void
initialiser(int,
int);
void
afficher();
};
L'analyse de cette partie de code nous montre que la classe se déclare avec le mot clef "class" suivi du nom que nous voulons donner à notre classe (ici Point). Vient ensuite une paire d'accolades entre lesquelles, nous indiquons ce que contient la classe. Notez, après la dernière accolade, la présence non habituelle d'un point virgule qu'il ne faut surtout pas oublier. C'est lui qui met fin à la déclaration. Voyons maintenant le contenu de notre classe. Nous avons ici :
2 variables membres x, et y. L'attribut "private:" indique que ces variables sont "privées", c'est à dire qu'elles sont inaccessibles de l'extérieur de la classe. Notez que c'est un moyen de les protéger. Si l'attribut avait été "public:", ces variables seraient devenues totalement accessibles.
2 fonctions membres (initialiser, et afficher).
Ce sont ces fonctions qui vont nous permettre d'atteindre les variables privées de
notre classe. Pourquoi donc se compliquer la vie ?
L'avantage de cette méthode est de pouvoir garder un certain contrôle sur
les variables.
Exemple : Rejeter une valeur négative pour la saisie de l'age d'une personne.
Notez que nous devons rendre ces fonctions publiques pour qu'elles soient utilisable
de l'extérieur.
C'est dans cette partie que nous allons détailler le contenu de nos deux fonctions (initialiser, et afficher).
void
Point::initialiser(int abscisse,
int ordonnee)
{
x = abscisse;
y = ordonnee;
}
void
Point::afficher()
{
cout
<<
"Les coordonnees du point sont ("
<< x
<<
", "
<< y
<<
")"
<<
endl;
}
Nous allons utiliser la classe que nous venons de définir précédemment. Souvenez vous que, pour déclarer une variable, on la fait précéder de son type (int, double, etc.). Sur le même modèle pour créer un objet de type Point (on dit aussi une instance de la classe Point), nous écrivons :
Point a;
Voilà notre ordinateur vient de nous créer un objet "a" qui contient deux variables entières "x" et "y". Toutefois il manque encore quelque chose. Aucune valeur n'est attribuée à nos deux variables. Nous devons donc les initialiser en utilisant la fonction que nous avons spécialement écrite plus haut :
a.initialiser(5, -3);
Notez l'écriture particulière : On indique le nom de l'objet
(de type Point), suivi d'un point, puis on écrit le nom de la fonction membre,
et on termine en donnant les valeurs que la fonction réclame.
Voyons maintenant une exemple de programme complet :
#include <iostream>
#include <cstdlib>
using namespace std;
// Déclaration de la classe Point
class Point
{
private:
int
x;
int
y;
public:
void
initialiser(int,
int);
void
afficher();
};
int main()
{
Point a;
a.initialiser(5,
-3);
a.afficher();
system("PAUSE");
return 0;
}
// Définitions des fonctions de la classe Point
void
Point::initialiser(int abscisse,
int ordonnee)
{
x = abscisse;
y = ordonnee;
}
void
Point::afficher()
{
cout
<<
"Les coordonnees du point sont ("
<< x
<<
", "
<< y
<<
")"
<<
endl;
}
Attention : La déclaration de la classe doit être lue avant la partie
principale du programme "main()".
Les définitions des fonctions membres s'écrivent toujours après leur déclarations.
Par contre elles peuvent se placer avant ou après la partie principale du programme.
Si on lance ce programme, voici ce qu'on obtient :
Les coordonnees du point sont (5, -3)
Appuyez sur une touche pour continuer ...
On supposera dans cette partie réutiliser la classe précédente. Dans le cas ou la variable membre est déclarée comme public, la modification se fait simplement comme ceci :
Point a;
a.x
=
2;
// Acces direct (variable publique uniquement)
Toutefois cette pratique est peu utilisée car n'oublions pas que les classes on été crée pour protéger leurs variables membres. L'accès à ces variables ne pourra donc se faire qu'au travers une fonction membre publique, dont la définition pourrait par exemple ressembler à ceci :
void
Point::deplacer(int
dx, int dy)
{
x += dx;
y += dy;
}
Dans la fonction main() nous pourrions alors écrire :
Point a;
a.initialiser(2,
4);
a.afficher();
a.deplacer(3,
-1);
a.afficher();
Observez la clarté qu'apporte l'utilisation d'une classe dans notre programme. Si nous le lançons, voici ce qu'on obtient :
Les coordonnees du point sont (2, 4)
Les coordonnees du point sont (5, 3)
Appuyez sur une touche pour continuer ...