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:44] 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 IMovable { 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 21: Ligne 21:
 // implémenter et définir le contenu des méthodes inscrites dans l’interface IMovable // implémenter et définir le contenu des méthodes inscrites dans l’interface IMovable
 public class Rectangle implements IMovable { 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).\\ 
bloc2/prog/poo/interfaces.1710431042.txt.gz · Dernière modification : 2024/03/14 16:44 de admin