L’héritage en programmation orientée objet avec PHP

L’héritage simple

Il est possible que des classes partagent des attributs et des méthodes. Ce principe est défini par la notion d’héritage qui fait que les classes peuvent être vues comme un ensemble de catégories et de sous catégories.

Pour définir un héritage entre deux classes il faut utiliser le mot-clé extends après le nom de la classe dans sa déclaration.

Exemple:

Le code ci-dessus définit une classe MountainBike qui hérite de la classe BiCycle. La classe MountainBike peut ainsi utiliser tous les attributs et toutes les méthodes de la classe BiCycle.

Il est aussi possible pour la classe MountainBike de redéfinir des attributs ou des méthodes portant les mêmes noms que la classe BiCycles.

Les traits

Les traits sont un mécanisme permettant de réutiliser du code.

Un trait peut être vu comme un ensemble de méthodes qui peuvent être incluses dans d’autres classes. Le contenu du trait est copié dans la classe qui veut l’utiliser. Il n’y a pas besoin d’instancier un trait.

L’avantage des traits est de réduire la duplication de code et de permettre l’utilisation de méthodes de classe sans avoir à passer par la notion d’héritage.

Un trait se définit en utilisant le mot-clé trait.

Pour inclure un trait dans une classe, il faut utiliser le mot-clé use.

La méthode maFonction() est maintenant disponible dans chaque instance de la classe maClasse.

Ce code va afficher :

I Love Opentuto.com!

Les classes abstraites

Une classe abstraite est une classe utilisée pour définir un type d’objet très générique, inutilisable directement, qui force les sous-types à avoir certaines particularités.

Une classe abstraite définit des méthodes et des attributs qui seront disponibles dans les classes qui l’étendent.

Pour indiquer qu’une classe est abstraite, il faut la préfixer du mot abstract.

Pour définir une classe abstraite voiture il faut écrire :

Il est aussi possible de définir des méthodes abstraites dans une classe. Cela permet d’obliger les classes dérivées à implémenter ces méthodes. Pour déclarer une méthode comme abstraite, il faut la préfixer du mot abstract.

Une classe contenant au moins une méthode abstraite doit obligatoirement être définie comme abstraite.

Par exemple, en définissant une classe abstraite comme suit :

Il est possible de définir une classe fille comme suit :

Ce qui permet d’écrire :

Les interfaces

Les interfaces sont utilisées pour vérifier que les objets correspondent à certaines spécifications, c’est-à-dire que chaque objet est conforme à certains comportements, qu’il peut gérer certains types d’évènements ou qu’il possède certaines fonctionnalités.

Pour déclarer une interface, il faut utiliser le mot-clé interface. Les méthodes définies dans une interface sont forcément publiques.

Pour indiquer qu’une classe implémente une interface précise, il faut utiliser le mot-clé implements. Une classe peut implémenter plusieurs interfaces. Dans ce cas, les noms des différentes interfaces sont séparés par des virgules.

  • Les interfaces peuvent hériter d’autres interfaces.
  • Les classes abstraites peuvent implémenter des interfaces.

 

Déclarer une classe et instancier un objet

Déclarer une classe et instancier un objet en PHP

Il est recommandé de lire cet article avant d’entamer ce post : Qu’est-ce que une classe, un objet et une instance

Déclarer une classe

Pour définir une nouvelle classe, il faut utiliser le mot-clé class. Ce mot est suivi du nom de la classe puis d’un bloc d’accolades contenant les propriétés et les méthodes définies.

La déclaration d’un attribut se fait en utilisant la syntaxe de déclaration des variables précédée d’un des mots-clés suivants :

  • private : l’attribut n’est accessible qu’à l’intérieur de la classe.
  • protected : l’attribut est accessible à l’intérieur de la classe et des classes dérivées.
  • public : l’attribut est accessible depuis toutes les classes de l’application.

La déclaration d’une méthode se fait en utilisant la syntaxe de déclaration des fonctions précédée d’un mot-clé identique à ceux utilisés pour déclarer un attribut.

Exemple :

Ce code définit une classe Bicycle contenant un attribut $cadence accessible uniquement dans cette classe, un attribut $speed accessible par des classes dérivées de cette classe ainsi qu’un attribut $gear et une méthode changeCadence accessibles par toute l’application.

Instancier un objet

Pour pouvoir utiliser un objet, il faut le créer à partir d’une classe.

L’instanciation d’un objet se fait en utilisant la syntaxe d’affectation précédée du mot-clé new.

Exemple :

Ce code va instancier un objet de la classe Bicycle.

Maintenant qu’une instance est disponible, il est possible d’avoir accès à ses attributs et ses méthodes.

Exemple :

Qu'est-ce que une classe, un objet et une instance

Qu’est-ce que une classe, un objet et une instance

Pour comprendre la programmation orientée objet, il est primordial de bien connaitre son vocabulaire.

Qu’est-ce qu’un objet ?

Pour faire simple, un objet est une chose.

Il est possible de définir par exemple un objet télévision, voiture, bureau, musique… Un objet peut donc être vu comme une donnée à manipuler.

Chaque objet est défini par des attributs et des méthodes qui lui sont propres.

Un attribut est une caractéristique de l’objet. Par exemple, un objet voiture peut avoir un attribut couleur.

Une méthode est une action qui peut être appliquée à un objet. Par exemple, un objet voiture peut avoir une méthode accélérer.

Qu’est-ce qu’une classe ?

Une classe correspond à un modèle de données. En effet, tous les objets d’une classe partagent les mêmes attributs et méthodes.

Une classe peut être vue comme une famille d’objets.

Par exemple, tous les objets de la classe voiture ont un attribut couleur et une méthode accélérer.

Qu’est-ce qu’une instance ?

Une instance représente une entité particulière d’une classe.

Par exemple, une voiture rouge peut être une instance de la classe voiture.

En résumé, un objet est une instance de classe.

Pourquoi utiliser la programmation orientée objet

Pourquoi utiliser la programmation orientée objet

Pourquoi utiliser la programmation orientée objet ?

La programmation orientée objet amène certains avantages par rapport à la programmation procédurale.

Tout d’abord elle permet d’obtenir un code plus réutilisable. En effet, les types d’objets créés peuvent servir de base pour d’autres objets en ne développant que les évolutions nécessaires.

Ensuite cette programmation offre un code plus compréhensible. En effet, chaque objet va contenir ses propriétés et ses méthodes. Il est donc aisé de voir ce qu’une fonction manipule et à quoi correspondent les variables disponibles.

Enfin la programmation orientée objet amène un code modulaire. En effet, chaque type d’objet ne communique avec les autres types que par des interfaces connues et définies. Cet isolement permet donc de développer facilement d’autres modules pour interagir avec les interfaces déjà utilisées.