Table des matières[Cacher][Montrer]
Parmi les développeurs, la programmation orientée objet a attiré un large public. Le langage informatique populaire Python adhère également au paradigme orienté objet.
Il traite de la définition d'objets et de classes en Python, qui constitue la base des principes de la POO. Dans ce didacticiel sur la "programmation orientée objet en Python", vous apprendrez à déclarer des classes Python, à créer des objets à partir de celles-ci et à utiliser les quatre techniques OOP.
Donc, première chose d'abord.
Qu'est-ce que la programmation orientée objet?
L'objectif principal de la programmation orientée objet (POO) est la création d'"objets". Un ensemble de variables et de fonctions interconnectées constitue un objet.
Ces variables sont fréquemment appelées les attributs de l'objet et ses comportements sont fréquemment appelés ses fonctions. Ces éléments fournissent à l'application une structure plus efficace et compréhensible. Une automobile est un exemple d'article.
Si l'automobile était un objet, ses attributs incluraient des éléments tels que sa couleur, son modèle, son prix, sa marque, etc. De plus, elle accélérerait, ralentirait et changerait de vitesse.
Autre illustration : si nous considérons un chien comme un objet, certaines de ses caractéristiques pourraient être la couleur, la race, le nom, le poids, etc. Et il se déplacerait, aboierait, jouerait, etc.
Parce qu'elle intègre des concepts du monde réel comme les objets, le masquage, l'héritage, etc. dans la programmation, la programmation orientée objet est bien connue. Parce qu'elle est si similaire aux circonstances du monde réel, la visualisation est simplifiée.
Concepts de programmation orientée objet
Classes et objets en Python
Comme tous les autres langages orientés objet, Python vous permet de concevoir des classes pour générer des objets. Les types de données les plus populaires en Python, notamment les chaînes, les listes, les dictionnaires et d'autres objets, sont des classes intégrées.
Une classe est un groupe de méthodes liées et de variables d'instance qui définissent un certain type d'objet. Une classe peut être considérée comme le modèle ou le modèle d'un objet. Les variables qui composent une classe sont appelées attributs.
Un objet est un membre d'une classe qui a un ensemble défini d'attributs. Pour cette raison, n'importe quel nombre d'objets peut être créé en utilisant la même classe.
Les classes Python sont définies à l'aide du mot classe, qui est ensuite suivi du nom de la classe et de deux-points. Une illustration d'une classe de perroquet pourrait être :
Ici, nous déclarons la classe Parrot vide en utilisant le mot clé class. Nous créons des instances à partir de classes. Une instance est un objet particulier créé à partir d'une certaine classe. 'pass' est fréquemment utilisé pour remplacer le code dont nous pouvons renoncer à l'implémentation pour le moment. Nous pouvons exécuter le code Python sans générer d'erreur en utilisant le mot-clé "pass".
Une instanciation d'une classe aboutit à un objet (instance). Seule la description de l'objet est définie lors de la création d'une classe. Par conséquent, aucun stockage ou RAM n'est alloué.
Un exemple d'objet de classe perroquet est :
Obj est un objet de classe Parrot dans cette instance.
Disons que nous connaissons des détails sur les perroquets. Nous allons maintenant montrer comment créer la classe perroquet et ses objets.
Méthode spéciale ( __init__ )
Une méthode appelée init définit les attributs que chaque objet Parrot doit avoir (). Lorsqu'un nouvel objet Parrot est formé, la fonction __init__ crée l'état initial de l'objet en affectant les valeurs que nous fournissons dans les propriétés de l'objet.
Ainsi, chaque nouvelle instance de la classe est initialisée en utilisant __init__(). Bien que __init__() puisse accepter n'importe quel nombre de paramètres, self est toujours le premier paramètre.
Une référence à l'instance de classe active est incluse dans l'auto-argument. Le paramètre self, qui renvoie à l'adresse de l'objet courant d'une classe et nous donne accès aux données de ses variables (celles de l'objet), signifie cela.
Exemple 1
Nous avons créé une classe appelée Parrot dans le code ci-dessus. Ensuite, les propriétés sont définies. Les caractéristiques d'une chose sont ses propriétés. La fonction __init__ de la classe est l'endroit où ces caractéristiques sont spécifiées.
Lorsqu'un objet est formé, la méthode d'initialisation est celle qui est appelée initialement. Ensuite, des instances de la classe Parrot sont créées. Blaze et Wonda dans ce cas sont des références (valeurs) à nos nouveaux objets. __class .species nous permet d'accéder à l'attribut class.
Chaque instance d'une classe a les mêmes caractéristiques. Les caractéristiques de l'instance sont également accessibles via blaze.name et blaze.age. Cependant, toutes les instances d'une classe ont des attributs d'instance uniques.
Exemple 2
Méthodologie
Les fonctions définies dans le corps d'une classe sont appelées méthodes. Ils sont utilisés pour spécifier le comportement d'un élément.
Deux méthodes, sing() et dance, sont définies dans l'application précitée(). Comme elles sont appelées sur un objet d'instance, tel que flame, elles sont appelées méthodes d'instance.
Fondements du concept OOPS
Les quatre idées fondamentales de la programmation orientée objet sont :
- Droit des successions
- Encapsulation
- Polymorphisme
- Abstraction
Droit des successions
Les gens disent souvent aux nouveau-nés qu'ils ont des caractéristiques faciales qui ressemblent à celles de leurs parents ou qu'ils ont hérité de traits particuliers de leurs parents.
Il est possible que vous ayez également observé que vous partagez certaines caractéristiques avec vos parents. La situation réelle est également assez similaire à celle de l'héritage.
Cependant, dans ce cas, les caractéristiques des "classes mères" sont transmises aux "classes filles". Ces aspects sont appelés « propriétés » et « méthodes » dans ce contexte.
Une classe peut dériver ses méthodes et ses attributs d'une autre classe en utilisant la technique connue sous le nom d'héritage. L'héritage est le processus par lequel une classe enfant reçoit les propriétés d'une classe parent.
Exemple:
La classe parent Human est héritée par la classe enfant Boy dans l'exemple ci-dessus. Parce que Boy hérite de Human, nous pouvons accéder à toutes ses méthodes et attributs lorsque nous créons une instance de la classe Boy.
Dans la classe Boy, une méthode appelée schoolName a également été définie. L'objet de classe parent ne peut pas accéder à la méthode schoolName. La méthode schoolName peut cependant être appelée en créant un objet de classe enfant (Boy).
Encapsulation
Donner à chaque variable du programme un accès global n'est pas une sage décision lorsque l'on travaille avec des classes et que l'on manipule des données sensibles.
Sans donner au programme un accès complet à aucune de ces variables, l'encapsulation nous fournit un mécanisme pour obtenir les variables nécessaires.
Les méthodes définies explicitement à cet effet peuvent être utilisées pour mettre à jour, modifier ou supprimer des données de variables. Cette méthode de programmation présente les avantages d'une sécurité et d'un contrôle accrus sur l'entrée des données.
Voyez à quelle vitesse les variables peuvent être accessibles dans la démonstration ci-dessous :
Polymorphisme
Supposons que vous utilisez votre téléphone pour parcourir le Flux Instagram. Lorsque vous avez eu envie d'écouter de la musique, vous avez accédé à Spotify et commencé à jouer votre chanson préférée.
Après un certain temps, vous avez reçu un appel, vous avez donc interrompu ce que vous faisiez en arrière-plan pour y répondre. Votre ami a appelé et vous a demandé de lui envoyer par SMS le numéro de téléphone d'une certaine personne.
Vous lui avez donc envoyé le numéro de téléphone par SMS et poursuivi vos tâches. Avez-vous retenu quelque chose ? Avec un seul appareil, votre téléphone portable, vous pouvez surfer sur les flux, écouter de la musique, prendre et passer des appels téléphoniques et envoyer des messages.
Par conséquent, le polymorphisme est comparable à cela. Poly signifie nombreux et morph désigne différentes formes. Par conséquent, le polymorphisme dans son ensemble fait référence à quelque chose avec différentes formes.
Ou "quelque chose" qui, selon les circonstances, peut présenter une variété de comportements. En OOPS, le polymorphisme décrit des fonctions avec les mêmes noms mais des comportements distincts. Alternativement, une signature de fonction différente avec le même nom de fonction (paramètres passés à la fonction).
Exemple:
Ici, nous pouvons utiliser la variable animal pour parcourir les objets du zèbre et du lapin, en utilisant leurs méthodes d'instance respectives. En conséquence, le comportement (couleur() & mange()) du Zèbre et du Lapin est représenté ici par une seule variable appelée animal. Il respecte donc les règles du polymorphisme.
Abstraction
Vous utilisez très probablement un ordinateur portable, un téléphone ou une tablette pour lire ce contenu. En le lisant, vous prenez probablement des notes, soulignez des passages clés et stockez peut-être des informations dans vos fichiers personnels.
Tout ce que vous pouvez voir lorsque vous lisez ceci est un "écran" avec les données qui vous sont affichées. Vous ne voyez que les touches du clavier au fur et à mesure que vous tapez, vous n'avez donc pas à vous soucier des subtilités internes telles que la façon dont le fait d'appuyer sur une touche peut faire apparaître ce mot à l'écran.
Alternativement, comment appuyer sur un bouton sur votre écran peut lancer un nouvel onglet.
Par conséquent, tout ce que nous pouvons observer dans cette situation est abstrait. Nous ne pouvons voir que le résultat qu'il crée et non les subtilités internes (qui nous importent réellement).
Semblable à cela, l'abstraction ne révèle que les fonctions que tout possède tout en cachant les implémentations ou les détails internes.
L'objectif principal de l'abstraction est de dissimuler les informations de fond et toute implémentation de données superflues afin que les gens ne voient que ce qu'ils ont besoin de voir. Il aide à gérer la complexité du code.
Exemple:
Une classe abstraite liée au véhicule est présente ici. Parce qu'elle hérite de la classe abstraite ABC, elle est abstraite. Parce que les méthodes abstraites ne sont pas définies ou restent vides, la classe Vehicle a une méthode abstraite appelée no of wheels qui n'a pas de définition.
Ils anticipent les classes qui héritent des classes abstraites pour donner l'implémentation de la méthode.
Avantages des concepts OOPS
- En encapsulant, une sécurité élevée et la confidentialité des données sont atteintes.
- Flexibilité d'avoir de nombreuses versions polymorphes de la même classe.
- Le niveau élevé de complexité du code a été réduit par l'abstraction.
- Au lieu de passer au crible des centaines de lignes de code pour localiser un seul problème, la modularité de la programmation simplifie le débogage.
- La réutilisation du code est causée par l'héritage d'une classe enfant des propriétés de la classe parent.
- Une résolution efficace des problèmes est possible car nous créons des classes qui effectuent les actions nécessaires pour chaque mini-problème. Le problème suivant peut être résolu encore plus rapidement puisque nous pouvons réutiliser ces classes.
Conclusion
En conclusion, nous avons découvert les idées OOPS en Python, le paradigme de programmation le plus en vogue à l'heure actuelle.
Après avoir lu ceci, vous devez avoir réalisé que le paradigme OOPS traite entièrement de l'idée de classes et d'objets. et les concepts OOPS tels que l'encapsulation, le polymorphisme, l'héritage et l'abstraction.
Soyez sympa! Laissez un commentaire