Aller au contenu principal

Apprendre les algo – Jour 6


Introduction

Au jour 5, nous avons appris à découper un programme avec des fonctions et des procédures.

La suite logique est la suivante :

  • parfois, on ne veut pas seulement séparer des actions
  • on veut aussi ranger proprement ce qui parle de la même chose

C'est là qu'intervient la classe.

Nous allons rester très simples et voir seulement le strict nécessaire pour affronter le jour 7. Le but ici n'est pas encore de faire un grand cours sur un concept qu'on appelle la programmation orientée objet. Le but est juste d'être prêt à lire et traiter des exercices simples.


1. Pourquoi une classe ?

Définition

Une classe sert à mettre ensemble ce qui va ensemble.

Principe

Au lieu d'avoir des variables d'un côté et des fonctions séparées de l'autre, on peut les ranger dans une même structure quand elles parlent du même sujet.

Illustration : pourquoi une classe ?

Par exemple :

  • une voiture a une marque et une couleur
  • une voiture peut démarrer

À retenir

Comme les procédures et les fonctions, une classe sert elle aussi à organiser le programme.


2. La classe

Définition

Une classe est un modèle.

Je peux comprendre que cela puisse paraître un peu déroutant la première fois qu'on entend cela, mais en réalité c'est très simple.

Laissez-moi vous l'expliquer avec une image très concrète.

On peut voir une classe comme un plan ou un dessin de fabrication.

Par exemple, si vous voulez construire une voiture, vous commencez d'abord par faire un dessin précis sur papier :

  • la forme générale
  • les éléments qu'elle doit avoir
  • ce qu'elle doit pouvoir faire

Ensuite, ce dessin peut être envoyé dans plusieurs usines. Chaque usine se base sur ce même dessin pour fabriquer de vraies voitures.

Dans cette image :

  • le dessin correspond à la classe
  • les vraies voitures fabriquées correspondent aux objets

Une classe décrit alors :

  • ce qu'un objet possède
  • ce qu'un objet peut faire

En langage simple :

  • les données sont souvent appelées attributs
  • les actions, qui ressemblent à des procédures ou à des fonctions, sont souvent appelées méthodes dans une classe

Illustration

Illustration d'une classe et de ses objets

Exemple

class Voiture
{
public string Marque;
public string Couleur;

public void Demarrer()
{
Console.WriteLine("La voiture démarre");
}
}

Ici :

  • Marque et Couleur sont des données
  • Demarrer() est une action

3. L'objet ou l'instance

Définition

Un objet est une chose concrète créée à partir d'une classe.

On dit aussi : une instance de classe.

Principe

La classe est le modèle. L'objet est ce qu'on obtient quand on crée quelque chose à partir de ce modèle.

Exemple

Voiture v1 = new Voiture();
v1.Marque = "Peugeot";
v1.Couleur = "Rouge";

Ici :

  • Voiture est la classe
  • v1 est un objet

À retenir

  • classe = modèle
  • objet / instance = élément créé à partir du modèle

4. L'encapsulation

Définition

L'encapsulation consiste à regrouper les données et les actions dans une même classe.

L'idée est aussi d'éviter de modifier n'importe comment certaines données depuis l'extérieur.

Ici, depuis l'extérieur veut simplement dire :

  • depuis une autre partie du programme
  • depuis un autre objet
  • ou depuis le programme principal

Autrement dit, on veut éviter qu'une autre partie du programme fasse directement quelque chose comme :

compte.solde ← -1000000

sans aucune règle.

Dans beaucoup de cas, on préfère passer par une action prévue pour cela, par exemple :

  • Deposer(100)
  • Retirer(50)

Ainsi, la classe garde un meilleur contrôle sur ses propres données.

Principe

Au lieu de laisser tout ouvert partout, on essaie de faire passer les modifications par des méthodes prévues pour cela.

Illustration du principe d'encapsulation

public, private, protected

Pour faire cela, on utilise souvent des mots comme :

  • public
  • private
  • protected

Très simplement :

  • public : accessible depuis l'extérieur
  • private : accessible seulement dans la classe elle-même
  • protected : accessible dans la classe et dans ses classes dérivées

Pour un début, retenez surtout ceci :

  • mettez les attributs en private
  • mettez les méthodes en public

Cela vous donne un bon réflexe dès le départ.

Schéma simple

Schéma simple d'une classe

Exemple simple

class Compte
{
private int solde;

public void Deposer(int montant)
{
solde = solde + montant;
}

public int LireSolde()
{
return solde;
}
}

Ici :

  • solde est en private
  • Deposer() et LireSolde() sont en public
  • on évite ainsi de modifier directement solde depuis une autre partie du programme

En version très simple :

  • on met solde en private parce qu'on ne veut pas qu'une autre partie du programme change directement cette valeur
  • par exemple, on ne veut pas qu'on fasse directement solde = solde + 1000 sans passer par une règle claire
  • on préfère obliger le passage par Deposer()

Ici, l'extérieur veut dire par exemple :

  • le programme principal
  • une autre classe

Dans un vrai logiciel, il y a souvent plusieurs classes. Donc l'idée est simple : certaines données doivent être protégées, et on passe par les bonnes méthodes pour les modifier.

À retenir

L'idée simple de l'encapsulation est :

  • on regroupe
  • on organise
  • on contrôle mieux les modifications
  • et, pour commencer, on prend le réflexe : attributs private, méthodes public

5. Petit exemple complet en C#

using System;

class Etudiant
{
public string Nom;
public int Age;

public void Afficher()
{
Console.WriteLine(Nom + " - " + Age + " ans");
}
}

class Program
{
static void Main(string[] args)
{
Etudiant e1 = new Etudiant();
e1.Nom = "Awa";
e1.Age = 20;

e1.Afficher();
}
}

Ici :

  • Etudiant est une classe
  • e1 est un objet
  • Nom et Age sont des données
  • Afficher() est une méthode

6. Lien avec les autres langages

Le principe existe surtout dans les langages de plus haut niveau comme :

  • C#
  • Java
  • C++

En langage C, on ne parle pas de classe au même sens. On manipule souvent des struct.

La syntaxe change, mais l'idée de base reste proche :

  • regrouper des données
  • donner une structure claire au programme

7. Ce qu'il faut retenir pour les exercices

Pour des exercices simples, retenez surtout ceci :

  • une classe regroupe des données et des actions
  • un objet est une instance créée à partir de la classe
  • l'encapsulation aide à mieux organiser et contrôler

Nous reviendrons beaucoup plus tard et plus en profondeur sur la programmation orientée objet. Pour l'instant, cela suffit largement.


8. État des lieux au jour 6

À ce moment du parcours, vous savez déjà :

  • déclarer une variable
  • faire des boucles pour répéter des instructions
  • utiliser les tableaux pour stocker plusieurs valeurs et les parcourir
  • utiliser les procédures et les fonctions pour découper un programme
  • utiliser les classes pour regrouper des données et des actions

Autrement dit, vous avez déjà plusieurs bases très importantes.

Nous pouvons donc passer au jour 7 et commencer les exercices.

N'oubliez pas de relire les chapitres plusieurs fois. Quand on débute, cela aide beaucoup.