L'une des parties les plus difficiles de la rédaction d'une série pour débutants sur la programmation orientée objet est de savoir où s'arrêter.
Il y a tellement de sujets à couvrir que nous pouvons commencer lentement à nous orienter vers les techniques de programmation avancées, en renonçant exactement à la mission que nous visions: armer les débutants avec un ensemble d'outils, de stratégies et de compréhension des concepts de départ..
Tout d’abord, notons que dans le dernier article de la série, nous avons terminé notre premier plugin complet en utilisant des techniques orientées objet. Pour l'essentiel, il résume tout ce que nous avons couvert à travers ce point de la série (sauf, évidemment, l'héritage).
À cette fin, assurez-vous de vous familiariser avec les articles suivants:
C’est beaucoup, je sais, mais souvenez-vous: le but de la série est de préparer le débutant absolu à tout ce qui est nécessaire pour travailler avec PHP et écrire des plugins WordPress en utilisant des techniques orientées objet..
À cette fin, j'ai décidé de terminer cette série par un article en deux parties (une troisième, dernière partie, servant de résumé) qui propose une transition dans le prochain sujet de développement pour les futurs programmeurs PHP: Héritage.
Encore une fois, pour ceux qui sont des programmeurs plus expérimentés, l'héritage n'est pas un sujet cible pour vous; Cependant, si vous êtes débutant, l’héritage est l’un des concepts faciles à comprendre, un peu plus difficile à mettre en œuvre (croyez-le ou non), et cela peut créer encore plus de confusion quand il s’agit de polymorphisme ( dont nous parlerons plus tard)
Au cours des deux prochains articles, mon objectif est de couvrir tout ce qui précède avec un exemple de code pour le sauvegarder. Mais avant d'examiner un code, je pense qu'il est important de comprendre les concepts d'importance, de regarder quelques-unes des étapes nécessaires pour préparer un code orienté objet pour l'héritage..
Dans cet article, nous allons définir l'héritage, essayer de former un modèle conceptuel de ce qui se passe réellement, en examinant les nuances de ce que l'on appelle les classes de base et les sous-classes, ainsi que certains des mots-clés réservés dans la langue. doit être ajusté afin de supporter l'héritage à travers les classes.
Donc, avec cela mis de côté comme notre feuille de route pour l'article, allons-y et commençons.
Contrairement à un certain nombre de termes de programmation, héritage est un mot qui décrit assez bien son concept. Directement de Wikipedia:
Dans la programmation orientée objet (OOP), l'héritage est lorsqu'un objet ou une classe est basé sur un autre objet ou une autre classe, utilisant la même implémentation. C'est un mécanisme de réutilisation du code. Les relations d'objets ou de classes par héritage donnent lieu à une hiérarchie.
Relativement clair, n'est-ce pas? Mais je pense que nous pouvons faire mieux.
Plus tôt dans cette série, nous avons parlé du nombre de langages de programmation les plus courants qui utilisent des exemples tels que Animaux
et Véhicules
comme moyen de démontrer le concept de programmation orientée objet.
Après tout, l’idée derrière la programmation orientée objet est que nous devrions modéliser des objets du monde réel? Eh bien, en quelque sorte. Mais combien de fois avez-vous vu un physique Blog_Post
?
Exactement.
En tant que tel, j'aime toujours essayer de mettre les choses dans la perspective de quelque chose de beaucoup plus concret, de plus pratique, et qui est plus étroitement lié au contenu que nous allons créer..
Cela dit, comment décrire de manière adéquate l'héritage dans le contexte de la programmation orientée objet qui ne détruit pas le concept en utilisant des exemples triviaux?
Essayons ça:
L'héritage survient lorsqu'une classe sert de classe parent pour une classe enfant qui fournit un certain nombre d'attributs et de méthodes communs au parent et à l'enfant. cependant, l'enfant en tant que capacité d'introduire ses propres attributs.
Dans la citation ci-dessus, nous utilisons quelques termes tels que "classe parent" et "classe enfant", que nous clarifierons un peu plus tôt, mais le fait est que nous pouvons créer littéralement une hiérarchie de classes. lequel hériter informations de leurs classes parentes.
Peut-être même plus pratique, chaque fois que vous travaillez avec une classe enfant et que vous souhaitez tirer parti des attributs et des fonctions définis dans la classe parent ou la classe de base, vous pouvez facilement le faire sans code supplémentaire..
Mais nous devançons nous-mêmes. Avant de faire cela, assurons-nous de pouvoir obtenir un modèle conceptuel de ce à quoi ressemble un héritage. Après tout, même si nous écrivons du code, nous essayons de fournir un modèle qui non seulement représente un objet réel, mais crée également une relation entre les objets..
Avant d'aller plus loin, jetons un coup d'œil à un diagramme de classes très simple pour savoir comment fonctionne l'héritage..
Notez que nous utilisons trois classes:Contenu
qui servira de classe de base et qui représente un type générique d'informations qui contient des données pour d'autres types de contenu plus spécifiques.Commentaire
qui représente un commentaire sur un article de blog. Cette classe contient des informations dont elle hérite Contenu
et qu'il se définit en lui-même.Poster
hérite aussi de Contenu
qui représente un seul post de blog. Il contient général Contenu
informations, mais contient également ses propres informations spécifiques à cette classe.Maintenant, c’est clairement un exemple simplifié d’héritage, mais à la base ceci est comment fonctionne l'héritage. Dans un prochain article, nous examinerons le fonctionnement de l'instanciation, de l'accès aux données et d'autres fonctionnalités..
Mais d’abord, nous devons encore clarifier quelques termes et nous assurer de disposer de toutes les informations appropriées..
Comme nous en avons déjà parlé dans cette série, nous avons utilisé un certain nombre de termes qui sont essentiels pour comprendre comment les différents éléments de l'héritage fonctionnent ensemble..
À cette fin, il est important de définir des définitions communes pour les mots que nous utilisons non seulement à cause de la façon dont nous les utilisons tout au long de cet article, car vous allez non seulement les voir utilisés ici, mais également de les voir utilisés ailleurs et vous allez les voir utilisés de manière interchangeable dans d'autres articles du Web:
Ce devrait éclaircir beaucoup de la terminologie autour de cela; Cependant, si ce n’est pas le cas, imaginez un arbre généalogique où vous avez des parents et des enfants. Les enfants héritent des traits de leurs parents, mais les parents n'héritent pas des traits de leurs enfants.
Notez également que, en programmation, certains développeurs souhaitent introduire ce que l'on appelle "l'héritage multiple", ce qui signifie qu'une seule classe peut hériter des propriétés et des méthodes de plusieurs classes..
Non seulement cela est limité en PHP, mais cela sort également du cadre de cette série particulière..
Pour ceux qui sont un peu plus familiers avec le concept d'héritage, alors vous êtes probablement aussi familier avec le concept de classes abstraites..
Encore une fois, si vous connaissez le concept de classes abstraites, je dirais que vous n'êtes pas un débutant et que vous n'êtes pas vraiment le public cible du contenu que nous atteignons avec cet article..
Donc, en fonction des retours sur cet article, cette série, et si d’autres personnes sont intéressées, nous pourrions peut-être faire un article de suivi ou quelques articles couvrant ce sujet précis..
Dans le prochain article, nous allons poursuivre notre discussion sur l'héritage en examinant comment l'implémenter dans PHP. Nous allons également examiner comment les sous-classes peuvent accéder aux données de leurs parents et comment les classes de parents peuvent sécuriser les informations en leur sein.
En attendant, veillez à laisser des commentaires, des questions et / ou des commentaires sur l'héritage dans le fil de commentaires et je chercherai à les aborder ici ou dans le prochain message..
Jusque là!