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:39] – [Bénéfices] 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’elle ne peut **hériter qu’une fois** (héritage simple) ;+  * Par convention, on nomme les interfaces en **préfixant leur nom par un i en majuscule (I)** 
 +  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** ;   * 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).\\ 
Ligne 46: Ligne 49:
   * 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.   * 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.1710430742.txt.gz · Dernière modification : 2024/03/14 16:39 de admin