Outils pour utilisateurs

Outils du site


bloc2:prog:poo:interfaces

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
bloc2:prog:poo:interfaces [2024/03/14 16:31] – [Règles de construction] adminbloc2: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 IMovable qui décrit les comportements d'un objet déplaçable 
-public interface Movable +public interface IMovable 
- public void moveTo (Point position); +   public void moveTo (Point position); 
- public void moveTo (int x_position, int y_position);+   public void moveTo (int x_position, int y_position);
 } }
 </code> </code>
Ligne 18: Ligne 18:
  
 <code java> <code java>
-// En implémentant l’interface Movable, la classe Rectangle doit nécessairement  +// En implémentant l’interface IMovable, la classe Rectangle doit nécessairement  
-// implémenter et définir le contenu des méthodes inscrites dans l’interface Movable +// implémenter et définir le contenu des méthodes inscrites dans l’interface IMovable 
-public class Rectangle implements Movable +public class Rectangle implements IMovable 
- public void moveTo (Point position) { +   public void moveTo (Point position) { 
- ... +     ... 
- } +   
- public void moveTo (int x_position, int y_position) { +   public void moveTo (int x_position, int y_position) { 
- ... +     ... 
- }+   }
 } }
 </code> </code>
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 et conventions de nommage ===== 
-  * 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’une classe ne peut pas hériter plus d’une fois** (héritage simple) ; +  * Par convention, on nomme les interfaces en **préfixant leur nom par un i en majuscule (I)** ; 
-  * **Implémentation d’interface et extension par héritage peuvent se combiner** ;+  * En anglais, il est très naturel de **terminer le nom des interfaces par le phonème "able"** (=capable) ; 
 +  * Implémentation d’**interface et** extension par **héritage peuvent se combiner** ;
   * Par définition, **les méthodes d’une interface sont abstraites** ;   * Par définition, **les méthodes d’une interface sont abstraites** ;
-  * 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 **comme un type** à part entière. Il est donc possible de déclarer une variable d’un type d’interface ; 
 +  * 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, il est possible d’implémenter une même interface dans des classes distinctes qui ne partagent rien (pas de filiation, pas d’ADN commun), mais ont pourtant des comportements similaires.+__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. </WRAP> 
 +  Comme le mécanisme d’interface est absolument indépendant de l’héritage, il est possible d’implémenter une même interface dans des classes distinctes qui ne partagent rien (pas de filiation, pas d’ADN commun), mais ont pourtant des comportements similaires.
 ===== 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, par exemple).
 {{:bloc2:prog:poo:jtextfieldlink.png?600|}} {{:bloc2:prog:poo:jtextfieldlink.png?600|}}
 {{:bloc2:prog:poo:arraylistlink.png?600|}} {{:bloc2:prog:poo:arraylistlink.png?600|}}
  
-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, par exemple). 
bloc2/prog/poo/interfaces.1710430266.txt.gz · Dernière modification : 2024/03/14 16:31 de admin