Rappel de Java - les classes

par Tom
le 15/12/2019

Sommaire


Temps de lecture estimé : 20min


Les classes

Avant de parler Java, on va parler français.

Une classe est un concept abstrait décrivant le "type" d'un objet. Pour comprendre ça en détail, je vais faire une petite étude de cas.

On a déjà vu quelques types : entier, flottant, booléen, chaîne, etc. Ça couvre la plupart de nos besoins.

Maintenant, supposons qu'on veuille faire de la géométrie. On veut donc stocker l'élément de base de la géométrie : un point.

On pourrait utiliser deux nombres :

double x = 2.5;
double y = 4.1;

C'est bien, mais si maintenant on veut faire une fonction qui manipule un point, on aura besoin de mettre 2 paramètres à chaque fois :

void maFonction(int pointX, int pointY) ...

C'est un peu long. Ce qu'il faudrait ici, c'est pouvoir faire ceci :

Point monPoint;

De la même manière qu'on peut déclarer un nombre ou une chaîne, il faudrait qu'on puisse "déclarer un point". Par chance, Java nous offre un outil permettant de faire ça : les classes.

Une classe décrit le type d'un objet, elle décrit ce que c'est et les données que l'objet contient. Elle décrit également les opérations qu'on peut effectuer dessus.

Justement, quelles données contient un point ? Ça c'est facile, un point contient une coordonnée X et une coordonnée Y.

Voici une classe Point la plus basique possible :

class Point
{
    double coordonneeX;
    double coordonneeY;
}

On a ici une classe Point contenant deux attributs : coordonneeX et coordonneeY. C'est un peu long. On va mettre des noms plus courts :

class Point
{
    double x;
    double y;
}

Déjà, c'est plus clair. Encore une fois, tout ce que fait ce code c'est dire à l'ordinateur:

À partir de maintenant, quand je dirais "Point", je parlerai d'un couple de deux valeurs x et y.

Maintenant que j'ai cette classe, j'aimerais bien pouvoir m'en servir. Déjà, comment est-ce que je peux "créer" un point ?

En Java, pour pouvoir créer une classe, il faut doter celle-ci de ce qu'on appelle un constructeur. Un constructeur, c'est une fonction qui va créer une instance de la classe.

Ça se déclare comme une fonction normale, à la différence qu'il n'y a pas de type de retour et que ça porte toujours le même nom que la classe :

class Point
{
    double x;
    double y;

    Point(double x, double y)
    {
        this.x = x;
        this.y = y;
    }
}

Ici, le constructeur prend deux paramètres (x et y) et stocke les valeurs de ces derniers dans les attributs de l'instance (appelée ici this).

Important : dans une fonction de classe (appelée méthode), on utilise this pour se référer à l'instance actuelle (ici, le Point qu'on est en train de créer).

Avec ce constructeur en place, je peux maintenant créer un point, avec l'opérateur new ("nouveau") :

Point p = new Point(1.5, 2);

todo