Une classe est une structure particulière qui permet d'englober plusieurs
variables différentes sous un même nom.
Par exemple, si vous manipulez un
certain nombre de tableaux de double
et que vous n'avez pas envie de
devoir créer pour chaque tableau une variable qui représente sa taille,
vous pouvez créer une classe nommée Tableau
, qui aura deux
champs: un nommé tab
, pour le tableau (un
double*
) et un autre nommé n
, pour sa taille (un int
):
struct Tableau { double* tab; int n; };
Attention à ne pas oublier le point-virgule à la fin de la classe !
De même que les fonctions, la classe Tableau
doit avoir été déclarée
avant d'être utilisée, séparément du reste du code (comme une fonction). De
même que pour les fonctions, on peut distinguer la déclaration de la
classe de sa définition (qui elle était donnée ci-dessus). La syntaxe de la
déclaration, comme
pour les fonctions, consiste à troquer le bloc d'instruction pour un
point-virgule:
struct Tableau;
Dans le programme vous pourrez utiliser simplement cette classe de la façon
suivante:
Tableau A; A.n = 4; A.tab = new double[4]; for (int i=0; i<A.n; i++) A.tab[i] = 0.; Tableau B; B.n = A.n + 1; B.tab = new double[B.n];
Le nom de la classe est un type comme les autres, de même que int
,
double
et les autres types de base. Ici on a déclaré une variable
A
(objet) de type Tableau
(classe de l'objet). L'ordinateur lui associe automatiquement
deux variables propres (champs) n
et tab
, de type respectif int
et double*
. L'accès à ces champs se fait en ajoutant derrière
l'objet un point
suivi du nom du champ.
L'exemple précédent est équivalent, d'une certaine façon, à:
int An; double* Atab; An = 4; Atab = new double[4]; for (int i=0; i<An; i++) Atab[i] = 0.; int Bn; double* Btab; Bn = An + 1; Btab = new double[Bn];
On peut donc déjà voir l'intérêt des classes comme raccourci pour la déclaration des variables ainsi que comme généralisateur qui permet d'avoir plusieurs objets qui suivent un même schéma (chacun ayant ses propes champs, de même nom).
Nous verrons que l'intérêt des classes est bien plus vaste.