C CHAP11
Une fois introduite la notion de structures, on s'aperçoit qu'il est totalement naturel de créer des fonctions permettants de manipuler ces structures. La notion de classe est donc une notion plus puissante que la notion de structures. Une classe va permettre de regrouper en une seule entité des données membres et des fonctions membres appelées méthodes.
[modifier] Notion de classe
Une classe regroupera donc : des données membres. des méthodes membres qui seront des fonctions.
[modifier] Un premier exemple de classe
On veut manipuler des points définis par une abscisse et une ordonnée (des réels).
Sur un point, on peut calculer la distance entre 2 points et le milieu de 2 points.
Nous allons donc définir une classe Point définie par un fichier .h et un fichier .cpp.
[modifier] Exemple 1 : la classe Point
Le fichier Point.h
#ifndef POINT_H
#define POINT_H
class Point
{
public: double x,y; double distance(const Point &P);
Point milieu(const Point &P);
};
#endif
Explications
On définit dans ce fichier la classe Point : elle contient 2 données de type double x et y et 2 méthodes membres distance qui calcule la distance entre ce point et un autre Point et milieu qui calcule le milieu du segment composé de ce point et d'un autre Point.
On remarque l'utilisation des directives de compilation #ifndef, #define et #endif pour gérer les inclusions multiple du fichier header.
Le fichier Point.cpp
#include "Point.h"
#include<cmath>
double Point::distance(const Point &P)
{
double dx,dy; dx=x-P.x; dy=y-P.y; return sqrt(dx*dx+dy*dy);
}
Point Point::milieu(const Point &P)
{
Point M;
M.x=(P.x+x)/2;
M.y=(P.y+y)/2; return M;
}
Explications
Il contient l'implémentation de chaque méthode de la classe Point.
On fait précéder chaque méthode de Point::<
On a inclut le fichier cmath afin de pouvoir utiliser la fonction sqrt de cmath (racine carrée).
A l'intérieur de la classe Point, on peut accéder directement à l'abscisse du point en utilisant la