Programmation orientée objet en C#
La programmation orientée objet (POO) est le composant principal du framework .NET. La programmation orientée objet est tellement importante avant de se lancer dans .NET, vous devez comprendre les principes de base et la terminologie pour pouvoir écrire un programme simple. L’idée derrière la programmation orientée objet est de combiner en une seule unité les données et les méthodes; ces unités sont appelées « objets ». Tous les langages POO fournissent des mécanismes qui vous aident à implémenter le modèle orienté objet. Ce sont l’encapsulation, l’héritage, le polymorphisme et l’abstraction.
- L’encapsulation masque les détails d’implémentation d’une classe à d’autres objets.
- L’héritage est un moyen de former de nouvelles classes en utilisant des classes déjà définies.
- Le polymorphisme est le processus d’utilisation d’un opérateur ou d’une fonction de différentes manières pour différentes entrées de données.
- L’abstraction simplifie la réalité complexe en modélisant des classes appropriées au problème.
Nous allons voir chacun de ces concepts plus en détail dans ce tutoriel.
Qu’est-ce que une classe, un objet et une instance?
Les objets sont des instances de classes. En d’autres termes, une instance d’une classe est un objet défini par cette classe particulière. La création d’une nouvelle instance ou d’un objet s’appelle instanciation. Voici comment vous définissez une classe en C#:
public class Voiture { }
Voici un exemple d’objet:
Voiture audi = new Voiture();
Vous pouvez créer un objet en utilisant le mot-clé « new ». En C#, les types de valeur font référence à des variables, tandis que les objets sont des types de référence. D’ailleurs, les variables sont stockés dans la pile, tandis que les objets sont stockés dans le tas.
Une classe est un plan ou un prototype défini par l’utilisateur à partir duquel des objets sont créés. Il représente l’ensemble des propriétés ou méthodes communes à tous les objets d’un type.
Abstraction:
L’abstraction est l’une des fonctionnalités de Programmation Orientée Objet, dans laquelle vous affichez uniquement les détails pertinents à l’utilisateur et masquez les détails non pertinents. Par exemple, lorsque vous envoyez un email à une personne, vous cliquez simplement sur le bouton envoyer et vous obtenez le message de réussite indiquant ce qui se passe réellement lorsque vous cliquez sur envoyer, la manière dont les données sont transmises au destinataire par le réseau est masquée (car elle ne vous concerne pas).
Encapsulation:
Le processus de combinaison de données et de fonctions dans une seule unité est appelée encapsulation. Cela permet également l’abstraction. Dans la POO, l’encapsulation peut être réalisée par la création de classes. Ces classes affichent ensuite des méthodes et des propriétés publiques. Le nom encapsulation provient du fait que cette classe encapsule l’ensemble des méthodes, propriétés et attributs pour d’autres classes.
Héritage:
L’héritage est le processus par lequel un objet peut acquérir les propriétés d’un autre objet. L’héritage implique une classe mère et une classe fille. La classe fille hérite de la classe mère et peut également redéfinir les membres hérités et ajouter de nouveaux membres pour étendre la classe mère. Exemple :
Implémentation de l’héritage en C#
// La classe mére public class Vehicule { public string marque; public int vitesse; public void accelerer() { //code pour accélérer } public void freiner() { //code pour freiner } } // La classe Voiture hérite de la classe Vehicule public class Voiture : Vehicule { public int nbPortes; } // La classe Camion hérite de la classe Vehicule public class Camion : Vehicule { public string moteur; }
Polymorphisme:
Le polymorphisme est la capacité de traiter les différents objets de la même manière. C’est l’un des avantages importants de l’héritage. Nous pouvons décider quelle fonction sera appelée au moment de l’exécution en fonction du type dérivé de la référence de base.
Dans la POO, le polymorphisme peut être obtenu à l’aide de nombreuses techniques, notamment:
- Surcharge de méthode (définition de plusieurs méthodes à la fois)
- Redéfinition de méthode (permet à une sous-classe de redéfinir une implémentation spécifique d’une méthode déjà émise par l’une de ses classes mères)
- Surcharge des opérateurs (donne la possibilité d’utiliser le même opérateur pour effectuer diverses opérations.)