La base de la programmation est procédurale, c’est-à-dire que nos blocs de codes sont organisés sous forme de fonction et les informations sont stockées dans des variables. Au début, les langages utilisés étaient de bas niveau, c’est-à- dire , ce sont des langages qui se rapprochent plus du langage machine au détriment des humains.
Au fur et à mesure que la technologie avance, les programmes devenaient de plus en plus complexes, il fallait alors penser à écrire du code compréhensible par l’humain et par l’ordinateur. C’est à ce moment que l’idée est venue d’écrire des langages de programmations orientés vers la vie réelle en créant des objets. Il fallait écrire des langages en s’inspirant de la vie réelle.
Comment créer des objets ?
Pour créer un objet, il faut définir une classe. Cette dernière représente le regroupement, la forme, la structure d’un objet. C’est-à-dire ceux à quoi un objet va ressembler.
Si nous prenons l’exemple des personnes, chacun est un objet qui provient de la classe Personne que Dieu a défini.
Une personne a des mains, des pieds, des yeux, des oreilles… tout cela constitue les propriétés d’une personne.
Une personne peut manger, sauter, boire… cela représente des comportements, autrement dit les méthodes de la classe.
La programmation orientée objet regroupe plusieurs concepts: abstraction, encapsulation, héritage, polymorphisme…
Le sujet qui nous intéresse aujourd’hui est l’abstraction et l’encapsulation et l’héritage.
On va d’abord comprendre ce qu’est l’abstraction, comment faire l’abstraction et pourquoi l’abstraction, de même pour l’encapsulation.
L’abstraction est tout simplement le fait de cacher certaines informations et de montrer à l’utilisateur que ce qui est nécessaire.
Il faut noter que quand on programme, ce n’est pas toutes données qu’on va montrer aux utilisateurs, l’abstraction est un bon moyen pour abstraire certaines données.
Elle peut être faite grâce aux classes abstraites ou grâce aux interfaces.
Une classe abstraite contient au moins une méthode abstraite. Cette dernière ne contient qu’une déclaration de signature, c’est-à-dire qu’elle n’a pas de corps.
L’avantage des méthodes abstraites est que chaque développeur est libre d’implémenter le contenu ou la logique de la méthode comme il le souhaite.
Exemple:
Dans cet exemple ci-dessus, on constate qu’il ya une méthode abstraite eat(), cette dernière eat() peut être implémenté de plusieurs façon car la façon dont un mouton mange est différente de la manière dont un une personne mange.
L’encapsulation désigne le fait de limiter l’accès des attributs ou propriétés à un certain bloc.
Elle désigne le fait de mettre les attributs en “private”.
Lorsqu’on veut créer des objets à partir d’une classe, il ne faut pas que ses propriétés soient directement modifiables en dehors de la classe. Sinon les objets seront différentes
Si on essaie de modifier $first_name en dehors de la classe, on aura une erreur. Pour résoudre cela, on doit passer par un setter
On constate que pour modifier le $first_name, on doit passer par le setter set_fisrt_name(), mais on ne peut pas directement modifier le $first_name car il est a private.
Il y a aussi le fait de mettre une propriété a protected, il est comme private mais la différence en est que quand une propriete est a protected, les classe filles auront aussi accès à cette propriété.
C’est quoi une classe fille?
Voici une transition bien trouvée pour aborder la notion d’héritage.
L’héritage dans la programmation orientée objet est comme dans la vie réelle, un enfant qui hérite de son parent obtiendra tout ce que son parent avait. C’est la même chose dans la programmation orientée objet, une classe hérite d’une autre classe, cela veut dire que la classe qui hérite(classe fille) va avoir a toutes les propriétés et méthodes de la classe parente, sauf les attributs et méthodes qui sont a private