Concepts et exemples de POO que tout programmeur devrait connaître
Publié: 2021-02-26Dans cet article, nous couvrirons les concepts de base autour de la programmation orientée objet et discuterons des termes couramment utilisés : abstraction, encapsulation, héritage et polymorphisme.
Pour commencer, la POO est une méthodologie de programmation qui oblige les programmeurs à créer des objets et à les utiliser tout au long du programme dans les fonctions qui nécessitent de tels objets pour leur fonctionnement. La raison pour laquelle le concept OOPs est largement utilisé en Java est qu'il permet la réutilisation du code tout en maintenant la sécurité.
Avant de parler des quatre piliers de la programmation orientée objet, familiarisons-nous avec les termes génériques que nous entendons très souvent lors de l'utilisation de l'un des langages orientés objet : Java, python, c++.
Table des matières
Classer
Une classe est une collection d'objets qui définit un ensemble de propriétés communes à tous les objets d'un type particulier. Il peut également être appelé un plan de création d'objets. Une classe comprend les composants suivants :
Nom de classe : Le nom donné à une classe commençant par un alphabet majuscule.
Modificateurs : en fonction de la fonctionnalité des modificateurs de classe, ils peuvent être publics, privés ou par défaut.
Corps : Le corps de la classe contient tous les codes sur les objets présents dans la classe. Cela peut aller de la déclaration de variables à la création de constructeurs ou de méthodes contenant le fonctionnement d'un objet.
Objet
Un objet est défini comme une instance d'une classe et contient des entités réelles. Par exemple, pour une classe appelée Animaux, Ses objets seront un chat, un chien, un éléphant et al. Chaque objet a sa propre identité, ses propres attributs et son propre comportement. Le code ci-dessous décrit l'utilisation de la classe, de l'objet et de la méthode lors de la programmation en langage Java.
Méthodes
Les méthodes sont définies dans une classe et sont utilisées pour exécuter une fonction spécifique. La méthode peut contenir ou non un paramètre d'entrée. Le code ci-dessous décrit l'utilisation de la classe, de l'objet et de la méthode lors de la programmation en langage Java.
Dans le code ci-dessus, Player est le nom donné à notre classe, alors que runs est un paramètre passé dans la méthode Batsman qui renvoie les runs marqués par lui lorsqu'il est appelé via un objet appelé myobj.
Modificateurs d'accès
Les modificateurs d'accès en Java définissent l'accessibilité ou l'étendue d'une méthode ou d'un constructeur ou de la classe. Les quatre types de modificateurs d'accès sont :
- Public : Le code écrit dans une classe est accessible aux autres classes.
- Privé : Le code écrit n'est accessible qu'au sein de cette classe spécifique.
- Par défaut : Le code écrit est accessible dans le même package.
- Protégé : Le code est accessible au sein d'un package et également via une sous-classe. En l'absence de classe enfant, le code n'est pas accessible.
Continuons maintenant et parlons du nœud de la programmation orientée objet.
Héritage
Le terme héritage fait référence à l'héritage des propriétés d'une classe à une autre. Les propriétés font référence aux attributs et aux méthodes de la classe parent. La classe parent est la classe dont les propriétés doivent être héritées par d'autres classes. Les classes qui héritent des propriétés de la classe parent sont appelées classe ou sous-classe enfant. Pour hériter des propriétés de la classe parent dans la classe enfant, un mot-clé appelé extend est utilisé.
Dans l'exemple ci-dessus, le Sponsor est la classe parent avec le propriétaire étant son attribut. Nous avons créé une sous-classe appelée Team qui hérite de la classe parent Sponsor. Nous avons créé un objet de Team qui peut accéder aux propriétés de la classe parent. La sortie du code ci-dessus est :
Polymorphisme
Comme son nom l'indique, le polymorphisme est la capacité d'une variable ou d'une fonction à exister sous plusieurs formes. Le polymorphisme permet au programmeur d'effectuer différentes tâches en utilisant la même variable ou fonction. Un exemple réel de polymorphisme serait- considérez un terrain ouvert, maintenant ce terrain peut être utilisé pour faire du sport.
En outre, il pourrait également être utilisé pour organiser des mariages et des concerts. Enfin, le même terrain peut être utilisé pour le stationnement des véhicules. De cela, nous pouvons déduire qu'une seule variable peut avoir plusieurs implémentations en fonction de son utilisation.
Le polymorphisme, nous rencontrons généralement deux termes, à savoir la surcharge de méthode et le dépassement de méthode .
Dans Method Overloading , une seule méthode peut être utilisée de plusieurs façons et remplir différentes fonctions. Les méthodes auront le même nom mais des paramètres différents peuvent être utilisés en entrée.
Dans Method Overriding , la méthode de la classe parent peut être remplacée par la classe enfant. Avec cela, la même méthode peut fonctionner différemment lorsqu'elle est invoquée par la classe parent et par la classe enfant.
Un exemple de polymorphisme est présenté ci-dessous :
Dans cet exemple, en utilisant la même méthode, nous pouvons effectuer plusieurs tâches. La même méthode Voice lorsqu'elle est utilisée dans Bird produirait "Turr Turr" et lorsqu'elle est utilisée avec Duck produira "Quack Quack". L'instantané de la sortie est montré ci-dessous-
Abstraction
L'abstraction est le processus consistant à cacher certaines données aux utilisateurs et à ne leur montrer que les informations requises. Par exemple, lorsque nous conduisons une voiture, nous ne nous préoccupons pas des fonctions ou mécanismes internes. Ce qui nous est indiqué, ce sont la vitesse à laquelle roule la voiture et les litres d'essence disponibles. Toutes les autres données marginalisées ne sont pas affichées au conducteur.
Le mot clé abstract est utilisé pour les méthodes et les classes lors de l'abstraction. Pour une classe abstraite, nous ne pouvons pas créer d'objet alors que la méthode abstraite ne doit pas inclure de corps. Si l'une des deux règles n'est pas respectée, la sortie générera une erreur.
Ici, nous avons créé un objet de la sous-classe - Duck qui est héritée de la classe principale - Bird. La sortie est illustrée ci-dessous :
Encapsulation
L'encapsulation est le processus de liaison du code et des données en une seule unité. Ici, les variables d'une classe sont masquées des autres classes (en utilisant le mot-clé private ) mais ne sont accessibles que via une fonction membre. Les fonctions setter et getter sont utilisées pour accéder aux variables privées d'une classe abstraite.
Jusqu'à présent, nous avons couvert tout ce qui est lié à la programmation orientée objet en utilisant Java. Avant de conclure, examinons quelques-uns des avantages du concept OOP.
- Le code peut facilement être réutilisé et permet donc d'économiser beaucoup de temps et d'argent pour le développement de codes.
- Cela aide à concevoir le code de manière bien structurée afin que tout nouveau programmeur n'ait pas à passer de longues heures pour comprendre le code.
- En plus d'aider les utilisateurs à écrire du code efficacement, il garantit que la sécurité n'est pas compromise.
Checkout : Questions et réponses de l'entretien OOPs
Apprenez des cours de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.
Conclusion
Pour conclure, dans ce blog, nous avons couvert les concepts de base des POO. Ces concepts sont largement utilisés dans l'industrie et d'autres applications. Afin de devenir un programmeur compétent, il faut avoir une solide compréhension de ces concepts. Dans les prochains blogs, nous découvrirons plusieurs autres concepts de programmation essentiels qui vous aideront à développer une expertise dans ce domaine.
Si vous souhaitez en savoir plus sur le développement de logiciels à pile complète, consultez le programme exécutif PG de upGrad & IIIT-B en développement de logiciels à pile complète, conçu pour les professionnels en activité et offrant plus de 500 heures de formation rigoureuse, plus de 9 projets et affectations, statut IIIT-B Alumni, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.] Une factorielle est une opération mathématique qui compte le produit d'un nombre donné et de tous les nombres en dessous. Un factoriel est un produit qui indique combien de fois un nombre est multiplié par un. Par exemple, le factoriel de 5 est 5x4x3x2x1, qui est égal à 120. Le factoriel de 1 est 1 et le factoriel de 0 est également 1. Le programme pour trouver un factoriel d'un nombre est la question d'entretien la plus fréquemment posée et est quelque chose cela devrait être sur le bout de votre main. La factorielle d'un nombre n est définie comme n! = 1 × 2 × 3 × 4 × … × n. La factorielle de 5 est 120. La fonction factorielle est définie comme factorielle(5) = 120. Une fonction récursive est une fonction qui s'appelle elle-même. Ceci est un exemple de fonction factorielle dans le style récursif factorial(n) = n * factorial(n - 1). L'écriture d'un programme de récurrence factorielle est très simple et le code est très similaire à la version itérative. Pour écrire la version itérative, nous utilisons une variable appelée n et l'incrémentons de un et la multiplions avec la variable appelée prod, qui garde la trace des valeurs successives de n. La valeur de sortie est également stockée dans la variable appelée prod. Dans la version récursive, vous utilisez toujours une variable appelée n. Cependant, vous n'avez pas besoin d'une variable pour stocker la valeur de prod et vous pouvez renvoyer directement prod à partir de la fonction. Le mot récursivité est dérivé du mot latin recurrere, qui signifie revenir. Dans la plupart des langages de programmation, une fonction qui s'appelle elle-même est appelée récursivité. Ce processus de bouclage se poursuit jusqu'à ce que le cas de base soit atteint, qui n'est défini dans aucune fonction récursive. La récursivité est une technique efficace pour résoudre un problème de manière structurée et organisée. C'est une bonne stratégie de programmation. Par exemple, le problème des séries de Fibonacci, le problème factoriel, etc. peuvent être résolus de manière itérative et récursive. Qu'est-ce qu'une factorielle ?
Comment écrire un programme factoriel de récurrence ?
Qu'est-ce que la récursivité en programmation ?