Skip to content

Interface : Mise en pratique 1

Table des matières

Dans cette mise en pratique, nous allons voir comment déclarer et utiliser des Interfaces PHP. Les interfaces sont un élément important de la programmation objet, pour rappel les Interfaces ressemblent à des classes abstraites (instanciation impossible), elles vont :

  • Décrire un comportement.
  • Définir les signatures des méthodes.
  • Garantir au code qui fait l'appel que la méthode existera.

C'est donc un contrat que la classe doit respecter : si celle-ci implémente une Interface, elle devra forcément avoir l'ensemble des méthodes « décrites » dans l'interface.

Ressources disponibles :

Définition

Une interface ressemble à une classe abstraite dans laquelle aucune méthode ne serait implémentée.

  • Ne contient que des méthodes publiques.
  • Ne contient aucun code.
  • N'est pas instanciable.
  • C'est « un contrat » que les classes devront implémenter.

Mise en situation

UML

php
// Déclaration de l'interface « Compte »
interface Compte
{
    public function deposer($montant);
    public function retirer($montant);
    public function getBalance();
}

Questionnement

  • Une Interface est définie avec le mot clé :
  • Identifier les particularités de l'interface Compte
    • Particularité 1 :
    • Particularité 2 :
    • Particularité 3 :
  • Selon vous, pourquoi l'interface ne possède-t-elle pas de constructeur ?

Utiliser l'interface

php
class CompteEnLigne implements Compte
{
}

Questionnement

  • Quel nouveau mot clé avons-nous dans l'exemple ci-dessus ?
  • Écrire le reste du code en suivant l'UML proposé.

Utiliser la classe Compte en ligne

Je souhaite créer 1 compte, et effectuer les opérations suivantes :

  • $operations = [100, 2000, 5000, -100, -1000, 0, -300]
  • Utiliser le tableau $operations via une boucle pour manipuler le compte.
  • Afficher à la fin le solde du compte.

Questionnement

  • Indiquez pourquoi je vous propose de passer par un tableau d'opérations ?

Une Interface = Un Contrat

UML

En utilisant à nouveau l'Interface, écrire l'implémentation de la classe Epargne, celle-ci doit :

  • N'autoriser que les dépôts > 200€.
  • Avoir un constructeur avec une valeur de base du compte.
  • Ne pas autoriser un retrait si le compte ne possède pas plus de 1000€.

Questionnement

  • Pourquoi, dans ce cas-ci, une Interface est-elle utile ?
  • Les langages de programmation proposent une instruction instanceof¹, en quoi cette instruction peut-elle être utile ici ?

¹ instanceof est utilisé pour déterminer si une variable PHP est un objet instancié d'une certaine classe.

L'implémentation multiple

UML

✋ Une classe peut implémenter plusieurs Interfaces.

La définition de la classe comporte alors le mot clé implements suivi d'une liste de noms d'interfaces (les noms des interfaces implémentées y sont séparés par une virgule).

Questionnement

  • Quel sera l'impact sur la classe CompteEnLigne ?
  • Quel est l'intérêt d'implémenter plusieurs interfaces ?
×

Reformulation

La reformulation (IA) peut faire des erreurs. Envisagez de vérifier les informations.