bloc2:prog:poo:interfaces
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| bloc2:prog:poo:interfaces [2024/03/14 16:31] – [Règles de construction] admin | bloc2:prog:poo:interfaces [2024/03/14 16:51] (Version actuelle) – [Règles de construction et conventions de nommage] admin | ||
|---|---|---|---|
| Ligne 8: | Ligne 8: | ||
| <code java> | <code java> | ||
| - | // une interface qui décrit les comportements d'un objet déplaçable | + | // une interface |
| - | public interface | + | public interface |
| - | | + | |
| - | | + | |
| } | } | ||
| </ | </ | ||
| Ligne 18: | Ligne 18: | ||
| <code java> | <code java> | ||
| - | // En implémentant l’interface | + | // En implémentant l’interface |
| - | // implémenter et définir le contenu des méthodes inscrites dans l’interface | + | // implémenter et définir le contenu des méthodes inscrites dans l’interface |
| - | public class Rectangle implements | + | public class Rectangle implements |
| - | | + | |
| - | ... | + | |
| - | } | + | |
| - | | + | |
| - | ... | + | |
| - | } | + | |
| } | } | ||
| </ | </ | ||
| Ligne 35: | Ligne 35: | ||
| Pourtant, ce n’est ni vraiment l’un, ni vraiment l’autre. | Pourtant, ce n’est ni vraiment l’un, ni vraiment l’autre. | ||
| - | ===== Règles de construction ===== | + | ===== Règles de construction |
| - | * Le mécanisme sous-jacent se distingue de l’héritage | + | * Par convention, on nomme les interfaces |
| - | | + | * En anglais, il est très naturel de **terminer le nom des interfaces |
| + | * Implémentation d’**interface et** extension par **héritage peuvent se combiner** ; | ||
| * Par définition, | * Par définition, | ||
| - | * Une interface est perçue par l’environnement comme un type à part entière. Il est donc possible de déclarer une variable d’un type d’interface ; | + | * Une **interface est perçue** par l’environnement |
| + | * Le mécanisme sous-jacent se distingue de l’héritage en le rendant plus riche : une classe peut **implémenter plusieurs interfaces** alors qu’elle ne peut **hériter qu’une fois** (héritage simple) ; | ||
| ===== Bénéfices ===== | ===== Bénéfices ===== | ||
| - | Une interface permet de définir un ensemble de services « contractuels » dont on veut être certain qu’une classe les fournira. La classe est libre de l’implémentation (comment est réalisé le service) mais pas du contrat (la surface d’échange : paramètres et retour). | + | * Une interface permet de définir un ensemble de services « contractuels » dont on veut être certain qu’une classe les fournira. La classe est libre de l’implémentation (comment est réalisé le service) mais pas du contrat (la surface d’échange : paramètres et retour).\\ |
| - | En Java, typer une donnée **List** (qui est une Interface disponible dans le JDK) permet d’accepter différentes sortes de collections (celles qui implémentent **List**) et de les traiter indistinctement par le fait que les fonctionnalités de base de ces collections sont les mêmes. | + | <WRAP center round info 90%> |
| - | Comme le mécanisme d’interface est absolument indépendant de l’héritage, | + | __Exemple__ : en Java, typer une donnée **List** (qui est une Interface disponible dans le JDK) permet d’accepter différentes sortes de collections (celles qui implémentent **List**) et de les traiter indistinctement par le fait que les fonctionnalités de base de ces collections sont les mêmes. |
| + | | ||
| ===== Illustrations : API Java ===== | ===== Illustrations : API Java ===== | ||
| + | Les Classes abstraites et interfaces sont largement employées dans la conception des bibliothèques graphiques (les composants graphiques SWING, par exemple) et des | ||
| + | bibliothèques de classes techniques (les collections, | ||
| {{: | {{: | ||
| {{: | {{: | ||
| - | Les Classes abstraites et interfaces sont largement employées dans la conception des bibliothèques graphiques (les composants graphiques SWING, par exemple) et des | ||
| - | bibliothèques de classes techniques (les collections, | ||
bloc2/prog/poo/interfaces.1710430266.txt.gz · Dernière modification : 2024/03/14 16:31 de admin
