Programmation Orientée Objet en bref

Le but de cet article est d’enseigner les concepts de la programmation orientée objet (POO) à un programmeur débutant aussi rapidement et facilement que possible.

De plus, ces informations vous aideront à actualiser vos connaissances et éventuellement à vous préparer à un entretien d'embauche.

Remarque: Les exemples de code sont réalisés à l'aide du langage de programmation C #.

Il y a longtemps, dans l'Antiquité, il y avait une programmation procédurale.

Ce phénomène même était tout à fait approprié pour résoudre des problèmes simples du vieux monde, tels que les calculs mathématiques les plus simples. Pour un exemple visuel, nous donnons le code d'un petit programme qui nous permet de calculer la note moyenne d'une classe.

Dans notre programme, nous avons utilisé un tableau pour saisir des notes et quelques variables les plus simples.

Mais que se passe-t-il si nous souhaitons développer notre application en incluant la possibilité d’afficher les données de tout le monde, ou d’un étudiant en particulier?

Comme vous le savez, chaque élève possède certaines données, telles que le prénom, le nom de famille et le numéro d’étudiant. Ajoutons à cela que tout le monde a étudié l'une ou l'autre des matières et a reçu des notes aux examens.

Comment stocker et gérer une telle masse d'informations?

POO vient à la rescousse

La programmation orientée objet permet, en plus des types primitifs de variables, d'utiliser des objets.

Pour comprendre la différence, imaginez une situation dans laquelle on vous demande de décrire une image en vous donnant une boîte avec des pièces individuelles d'un puzzle. Il vous faudra beaucoup de temps pour obtenir une image complète à partir de pièces de puzzle individuelles. Alors seulement, vous pourrez donner des informations sur ce que vous avez vu dessus. Et si vous aviez une image complète tout de suite? Alors tout est beaucoup plus simple.

Les pièces d'un casse-tête sont nos variables primitives, et l'image dans son ensemble est notre objet.

Par conséquent, ayant atteint un nouveau niveau de développement, les langages de programmation ont acquis la possibilité d’avoir un nouveau type de variables, le type OBJECT.

Un objet est par nature une classe séparée.

Qu'est-ce qu'une classe?

Une classe est un plan ou un modèle, sur la base duquel un ou plusieurs objets sont créés.

Ainsi, ayant des informations complètes sur une voiture, y compris la description des pièces, des dessins et les qualités souhaitées, nous pouvons réellement construire une voiture.

oop_car

La classe habituelle est constituée de propriétés, constructeurs et méthodes.

Propriétés

Dans l'exemple ci-dessus, nous avons créé la classe Car.

Par souci de simplicité, nous nous sommes limités à: modèle, couleur, nombre de roues et vitesse maximale. Ces caractéristiques sont des propriétés de notre classe.

À volonté, nous pouvons en apprendre davantage sur la propriété d’une voiture donnée construite selon ce dessin, grâce à la méthode GET intégrée.

Nous pouvons également modifier une propriété spécifique à tout moment à l'aide de la méthode SET intégrée.

Si nous souhaitons interdire l’appel ou la modification d’une propriété donnée, nous devrons respectivement supprimer GET ou SET en les effaçant simplement entre accolades.

Constructeurs

Une classe peut avoir un ou plusieurs constructeurs. Les constructeurs sont utilisés pour créer des objets à partir d'une classe.

Ils sont une sorte de méthode capable de prendre des paramètres. Par défaut, dans une classe normale, il y a au moins un constructeur vide, sans paramètres.

oop_code_3

Dans l'exemple ci-dessus, nous avons créé deux voitures différentes, en utilisant deux constructeurs différents que nous avons.

Les variables myCar1 et myCar2 sont du type de notre classe Car.

Il ne suffit pas de simplement les déclarer comme dans le cas de types primitifs, mais vous devez les créer en appelant le constructeur à l'aide du mot-clé new.

Méthodes

La méthode ToString (), que nous avons vissée à notre classe, nous permet d'afficher les propriétés d'un objet créé à partir d'une classe.

Affichez les propriétés de nos deux voitures.

oop_code_4

oop_car_console

La première voiture n'a pas de caractéristiques, alors que la seconde n'a que celles spécifiées dans le constructeur.

Comme mentionné ci-dessus, les propriétés des objets peuvent être modifiées à tout moment, s'il existe une méthode SET intégrée inhérente à cette propriété.

Voyons à quoi cela ressemblera dans l'exemple.

           oop_code_5

oop_car_console2

Dans cet exemple, nous avons changé la couleur d'origine de la deuxième voiture et avons fourni aux deux voitures toutes les propriétés manquantes.

Trois piliers qui soutiennent la POO

L'encapsulation, le polymorphisme et l'héritage sont les bases de la programmation orientée objet.

Nous allons tout expliquer dans l'ordre.

Encapsulation

Imaginez la même voiture et vous-même en tant que conducteur.

Vos principaux outils seront la barre de navigation, le volant, les pédales et le changement de vitesse.

Les concepteurs ont conçu la voiture pour que vous puissiez la gérer aussi confortablement que possible. Lorsque vous appuyez sur les pédales, tournez le volant et changez de vitesse, vous ne voyez pas ce qui se passe dans les coulisses ni comment les différents mécanismes interagissent à ce moment-là. Et vous n'avez pas besoin de ramper sous le capot à chaque fois pour surveiller l'état de la voiture en conduisant, il vous suffit de regarder le panneau.

Ainsi, la barre de navigation et divers outils de gestion du véhicule sont des intermédiaires entre le mécanisme du véhicule et vous. Vous ne pouvez pas voir et ne savez pas comment la voiture est conçue de l'intérieur, mais vous pouvez interagir avec elle à l'aide des outils qui vous sont fournis.

C'est essentiellement une encapsulation.

Dans le cas de la POO, une voiture sera une certaine classe ou un objet, une interaction avec laquelle sera possible uniquement à l'aide des propriétés ou méthodes disponibles.

Polymorphisme et héritage

En général, toute application consiste en un ensemble de classes, qui peuvent à leur tour être divisées en catégories.

Imaginez que notre application doit gérer un certain parc de véhicules. Le parc lui-même comprend différents types de transport, qui sont divisés en: voitures, camions, autobus, véhicules tout terrain, etc. Chacun de ces types de transport a ses propres caractéristiques, propres à un type particulier, et communes à tous.

Tout véhicule présente des caractéristiques telles que la vitesse, l’espace, la couleur et le modèle. Cependant, le plus souvent, les engins flottants n’ont ni ailes ni roues, la voiture de tourisme n’a pas de fourgon, tout comme il n’ya pas d’hélicoptères avec des chenilles.

Lors du développement d'un système, nous devrons créer une classe pour chaque type de transport. Et tout irait bien si nous n'étions pas confrontés au problème de la répétition des mêmes propriétés et du passage d'une classe à une autre. Dans le cas d'un camion, d'un bus et d'une voiture de tourisme, il faudrait répéter le nombre de roues, le modèle, la couleur et la capacité. Mais que se passe-t-il si nous avons accidentellement oublié d’attribuer la propriété Number of Wheels à la classe Bus?

Voici comment l'héritage est né.

Le moyen le plus simple de faire une analogie avec le parent et l'enfant. L'enfant hérite du parent de certaines caractéristiques communes qui les rendent similaires.

Également dans le cas des classes, lorsqu'une certaine classe parente transfère ses propriétés à ses classes enfants.

Pour éviter les répétitions et les erreurs, et pour faciliter le travail, nous allons créer une classe parente pour l'inventaire de notre flotte et forcer chaque fille à hériter des propriétés communes.

oop_code_6

oop_code_7

oop_code_8

Ci-dessus, nous avons donné des exemples de trois classes: Transport, Voiture, Bus.

Le transport est la classe parente, et les voitures de tourisme et les autobus héritent de propriétés communes et possèdent leurs propres propriétés.

Eh bien, tout semble être clair avec l'héritage. Qu'est ce que le polymorphisme?

En bref, c'est la possibilité pour un objet d'avoir plusieurs formes à la fois. Qu'est-ce que ça veut dire? En effet, c'est très simple

Le polymorphisme étant directement lié à l'héritage, la voiture, le bus et le camion sont à la fois des objets distincts et des moyens de transport. Cela signifie que nous pouvons créer une liste de tous les véhicules du parc et y ajouter des voitures et des bus avec des camions.

Spécificateurs d'accès

Les classes sont de types différents et chacune a sa propre utilisation dans certains cas.

Nous allons maintenant examiner les principaux spécificateurs de classe dans le langage C #.

Static: ne permet pas de créer des objets. Toutes les méthodes sont appelées directement à partir de la classe elle-même.

En résumé, c'est une classe incomplète qui doit être complétée dans une classe qui en est le successeur.

Sealed: ne permet pas d'avoir les héritiers.

Partial: une classe pouvant être divisée en plusieurs fichiers distincts. En général, tous ces fichiers constituent une seule classe.

Elle est généralement utilisée dans le cas où plusieurs développeurs travaillent simultanément sur une même classe, chacun étant responsable de leur part.

Internal: Disponible uniquement dans son assemblage, sans dépasser ses limites.

Protected: disponible uniquement pour ses héritiers.

Spécificateurs de méthode

Virtual: une méthode virtuelle qui peut être réécrite par une classe descendante.

Override: réécrite par la classe dérivée de la méthode.

De plus

Reflections: utilisé pour examiner un objet, listant ses propriétés dans une boucle.

Les méthodes d'objet par défaut pouvant être réécrites sont les suivantes: toString (), Equals ().

 

 

 

 

 

 

Print Friendly, PDF & Email

Laisser un commentaire