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.
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
Exemple
class Voiture
{
public string Marque;
public string Couleur;
public void Demarrer()
{
Console.WriteLine("La voiture démarre");
}
}
Ici :
MarqueetCouleursont des donnéesDemarrer()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 :
Voitureest la classev1est 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.
public, private, protected
Pour faire cela, on utilise souvent des mots comme :
publicprivateprotected
Très simplement :
public: accessible depuis l'extérieurprivate: accessible seulement dans la classe elle-mêmeprotected: 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
Exemple simple
class Compte
{
private int solde;
public void Deposer(int montant)
{
solde = solde + montant;
}
public int LireSolde()
{
return solde;
}
}
Ici :
soldeest enprivateDeposer()etLireSolde()sont enpublic- on évite ainsi de modifier directement
soldedepuis une autre partie du programme
En version très simple :
- on met
soldeenprivateparce 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 + 1000sans 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éthodespublic
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 :
Etudiantest une classee1est un objetNometAgesont des donnéesAfficher()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.