La notion |
||
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. 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)) ;
}
}
|