Blog ENI : Toute la veille numérique !
Offre estivale️ ☀️ : de -20% à -30% sur les livres en ligne et vidéos, avec le code PLAGE Cliquez ici !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Programmation orientée objet

Principes de la programmation orientée objet

La programmation orientée objet (POO) est un paradigme très répandu en développement logiciel. Il vient compléter un panorama déjà riche du paradigme procédural ainsi que du paradigme fonctionnel.

La POO est une forme de conception de code visant à représenter les données et les actions comme faisant partie de classes, elles-mêmes devenant des objets lors de leur création en mémoire. Cette notion a été rapidement présentée dans le chapitre précédent, il est maintenant temps de comprendre son fonctionnement plus en détail.

1. Qu’est-ce qu’une classe ?

Une classe est un élément du système que forme votre application. Une classe contient deux types d’élément de code : des données ainsi que des méthodes, représentant des actions. Il faut voir la classe comme étant une boîte dans laquelle il est possible de ranger ces deux types d’éléments. Pour faire un parallèle avec la vie réelle, nous pouvons facilement comprendre que la définition d’une classe s’applique à un objet comme un ordinateur, par exemple. Ce dernier dispose de méthodes (allumer, éteindre...) ainsi que des propriétés (nombre d’écrans, quantité de RAM...).

Conceptuellement, une classe n’est qu’une définition. Une fois que vous avez statué sur ce qu’elle doit contenir ainsi que ses méthodes, il convient de la créer. Cette action s’appelle l’instanciation. À la suite de cette opération, nous obtenons une instance en mémoire d’un objet.

Pour tenter une comparaison, prenons l’exemple d’une usine de fabrication d’objets en bois. Afin de pouvoir créer un objet, il faut un plan (la classe). Grâce à ce dernier, la machine peut découper et assembler les divers éléments (les données et méthodes) afin de créer une nouvelle instance (instanciation).

En C#, la déclaration d’une classe se fait grâce au mot-clé class. Il y a quelques spécificités possibles, notamment la portée, que nous étudierons...

Concepts avancés

Après avoir vu les concepts de base de la POO, il est temps de découvrir quelques concepts avancés.

1. L’héritage avancé

Lorsque nous avons abordé la question de l’héritage, nous l’avons fait par le prisme d’une classe Y qui hérite d’une autre classe X, ces deux classes pouvant être créées.

a. Méthodes virtuelles

Lorsqu’une classe hérite d’une autre, elle profite naturellement des méthodes et des données auxquelles elle a accès présentes dans la classe mère. Néanmoins, il peut arriver, pour certains besoins, que la classe fille doive redéfinir certaines méthodes. Afin de rendre cela possible, la classe mère doit déclarer les méthodes concernées comme étant virtuelles, ce qui signifie qu’elles définissent un fonctionnement concret mais qu’il reste possible de redéfinir ce fonctionnement dans la classe fille. Cette redéfinition s’appelle la surcharge de méthode. Deux mots-clés entrent en jeu dans ce fonctionnement :

  • Au niveau de la classe mère, il est nécessaire d’ajouter le mot-clé virtual avant le nom de la méthode.

  • Au niveau de la classe fille, il est nécessaire d’ajouter le mot-clé override avant le nom de la méthode que nous souhaitons remplacer.

Concrètement, imaginons que notre classe Ordinateur dispose d’une méthode Allumer, qui affiche « Allumage en cours... », mais que nous souhaitons afficher « Votre Mac démarre... » dans le cas de la classe Mac. Il y a plusieurs façons de répondre à ce besoin, mais une solution possible est de surcharger le contenu de la méthode Allumer :

public class Ordinateur 
{ 
    public virtual void Allumer() 
    { 
        Console.WriteLine("Allumage en cours..."); 
    } 
} 
 
public class Mac : Ordinateur 
{ 
    public override void Allumer() 
    { 
        Console.WriteLine("Votre...

Exercice

Maintenant que vous avez acquis les notions du développement orienté objet, il est temps de passer à la pratique sous forme d’exercice.

1. Énoncé

Le but de celui-ci est de pouvoir gérer un garage. Le garage réalise plusieurs opérations sur des voitures :

  • Repeindre une voiture pour changer sa couleur.

  • Réparer la voiture.

  • Faire l’entretien de la voiture et mettre à jour la date du dernier entretien.

Le garage s’occupe également des camions, mais uniquement pour les réparer. Il est nécessaire de fournir la couleur et la marque lorsqu’une instance de la classe Voiture est créée. La date d’entretien, quant à elle, n’est pas obligatoire. 

Exception faite d’affecter ou de lire d’éventuelles propriétés, les actions ne feront rien d’autre qu’afficher sur la console, grâce à la méthode WriteLine, l’action en question.

Une voiture possède une marque, une couleur, une date de révision et un indicateur de bon fonctionnement.

Le petit scénario à implémenter est le suivant :

  • Créer un garage.

  • Créer deux voitures (une Peugeot bleue et une Ferrari rouge) et un camion.

  • Réparer la Peugeot et le camion et entretenir la Ferrari.

  • Repeindre la Peugeot en vert.

2. Corrigé

À la simple lecture de l’énoncé...