Les interfaces
293
méthode affiche
{ écrire "Je suis un réel de valeur ", valeur
}
réel valeur
}
entier i
tableau Affichable [3] tab
tab [1] := Création Entier (25)
tab [2] := Création Réel (1.25)
tab [3] := Création Entier (42)
répéter pour i := 1 à 3
tab[i].affiche
Je suis un entier de valeur 25
Je suis un flottant de valeur 1.25
Je suis un entier de valeur 42
Utilisation d’une classe abstraite (Affichable)
Remarque
Nous avons vu qu’une classe abstraite pouvait comporter, en plus de méthodes retardées, des
attributs ou des implémentations effectives de méthodes, ce qui n’est pas le cas de notre précédent exemple (où de surcroît, il n’y a qu’une seule méthode). Nous verrons dans le prochain
paragraphe que lorsqu’une classe abstraite ne contient que des méthodes retardées, une
« interface » peut jouer un rôle voisin (mais non identique) et nous montrerons comment
transformer dans ce sens l’exemple précédent.
2 Les interfaces
Nous avons déjà vu que, dans la réalisation d’une classe, on pouvait distinguer théoriquement
son « interface » de son « implémentation ». Rappelons que l’interface correspond à
l’ensemble des signatures des méthodes et leur éventuel résultat. Bon nombre de langages
vont permettre de « formaliser » cette notion d’interface en offrant :
• un mécanisme de définition d’interfaces,
• un mécanisme obligeant une classe à implémenter une interface donnée.
C’est ce que nous allons étudier ici et nous allons voir que, dans ce cas, il s’agit plus que
d’une simple aide à la programmation car :
• une même classe pourra implémenter plusieurs interfaces,
• les interfaces pourront jouer un rôle voisin de celui des classes abstraites et participer au polymorphimse (on parlera de « polymorphisme d’interfaces »).
293
méthode affiche
{ écrire "Je suis un réel de valeur ", valeur
}
réel valeur
}
entier i
tableau Affichable [3] tab
tab [1] := Création Entier (25)
tab [2] := Création Réel (1.25)
tab [3] := Création Entier (42)
répéter pour i := 1 à 3
tab[i].affiche
Je suis un entier de valeur 25
Je suis un flottant de valeur 1.25
Je suis un entier de valeur 42
Utilisation d’une classe abstraite (Affichable)
Remarque
Nous avons vu qu’une classe abstraite pouvait comporter, en plus de méthodes retardées, des
attributs ou des implémentations effectives de méthodes, ce qui n’est pas le cas de notre précédent exemple (où de surcroît, il n’y a qu’une seule méthode). Nous verrons dans le prochain
paragraphe que lorsqu’une classe abstraite ne contient que des méthodes retardées, une
« interface » peut jouer un rôle voisin (mais non identique) et nous montrerons comment
transformer dans ce sens l’exemple précédent.
2 Les interfaces
Nous avons déjà vu que, dans la réalisation d’une classe, on pouvait distinguer théoriquement
son « interface » de son « implémentation ». Rappelons que l’interface correspond à
l’ensemble des signatures des méthodes et leur éventuel résultat. Bon nombre de langages
vont permettre de « formaliser » cette notion d’interface en offrant :
• un mécanisme de définition d’interfaces,
• un mécanisme obligeant une classe à implémenter une interface donnée.
C’est ce que nous allons étudier ici et nous allons voir que, dans ce cas, il s’agit plus que
d’une simple aide à la programmation car :
• une même classe pourra implémenter plusieurs interfaces,
• les interfaces pourront jouer un rôle voisin de celui des classes abstraites et participer au polymorphimse (on parlera de « polymorphisme d’interfaces »).
