La notion
d'Interface en Java
pour les R.M.I.

 

WB01624_.gif (281 octets) RETOUR

Java autorise la séparation entre le code de définition du comportement d'un objet et le code réalisant son implantation.

L'écriture d'une interface, puis d'une classe implantant cette interface réalise cette opération.

Dans un programme, on pourra spécifier des objets interface sur lesquels il sera possible de caster n'importe quel objet implantant cette interface. Sur ces objets interface, ne seront utilisables que les méthodes décrites dans l'interface.

Cette possibilité est utilisée avec les R.M.I. pour lesquelles les programmes clients ne sont concernés que par la définition des services proposés par les objets distants tandis que les serveurs doivent implanter ces services. L'interface décrit alors les méthodes distantes, i.e. pouvant être appelées à distance.

Ecriture d'une interface et utilisation

Un exemple d'interface: ExempleInterface.java

public interface ExempleInterface {
  public int minimum() ;
  public int maximum() ;
  }     

Une première implantation: ImplantationInterface1.java

public class ImplantationInterface1
       implements ExempleInterface {
  public int v1 ;
  public int v2 ;

  public int minimum() {
    return(Math.min(v1,v2)) ;
    }

  public int maximum() {
    return(Math.max(v1,v2)) ;
    }
  }     

Une seconde implantation: ImplantationInterface2.java

public class ImplantationInterface2
       implements ExempleInterface {
  public int v1 ;
  public int v2 ;
  public int v3 ;

  public int minimum() {
    return(Math.min(Math.min(v1,v2),v3)) ;
    }

  public int maximum() {
    return(Math.max(Math.max(v1,v2),v3)) ;
    }
  }     

Une classe utilisant directement l'interface comme paramètre de fonction membre: UtilisationImplantation.java.
-> Un objet instanciant n'importe laquelle des deux classes implantations peut être utilisé en paramètre.
-> Les seules fonctions membres utilisables sont celles de l'interface.

public class UtilisationImplantation {

  public int mediane(ExempleInterface ei) {
    return((ei.minimum()+ei.maximum())/2) ;
    }
  }     

Application exemple: Application.java

public class Application {
  static ImplantationInterface1 ii1 ;
  static ImplantationInterface2 ii2 ;
  static UtilisationImplantation ui ;

  public static void main(String args []) {
    ii1 = new ImplantationInterface1() ;
    ii1.v1 = 5 ;
    ii1.v2 = 15 ;
    ii2 = new ImplantationInterface2() ;
    ii2.v1 = 5 ;
    ii2.v2 = 15 ;
    ii2.v3 = 25 ;
    ui = new UtilisationImplantation() ;
    System.out.println(ui.mediane(ii1)) ;
    System.out.println(ui.mediane(ii2)) ;
    }
  }