next up previous
suivant: À propos de ce monter: Comparaison Java-Ocaml: les programmes précédent: Programme Java 1.4

Programme Java 1.5

interface DomaineACle<T>{
    T getCle();
    void print();
}
class SddGen<Y,X extends DomaineACle<Y>>{
    X[] tab;
    int nb = 0;
    SddGen(X[] t){
       tab = t;
    }
    void ajouter(X o){
       tab[nb] = o;
       nb++;
    }
    X retrouver(Y cle){
       for (int i = 0; i<nb; i++){
           if (tab[i].getCle().equals(cle))
              return tab[i];
       }
       return null;
    }
    int nombreElem(){
       return nb;
    }
    void voir(){
       for (int i = 0; i<nb; i++){
           tab[i].print();
       }
       System.out.println();
    }
}
abstract class Animal implements DomaineACle<Integer>{
    String nom;
    Integer tatouage;
    String cri;
    Animal(String st, Integer tat){
       nom=st;
       tatouage = tat;
    }
    public Integer getCle(){
       return tatouage;
    }
    public void print(){
       System.out.println(nom + " " + tatouage);
    }
    boolean repond(String n){
       return n == nom;
    }
    void crie(){
       System.out.print(cri);
    }
    abstract boolean court_t_y();
    abstract boolean vole_t_y();
    abstract boolean nage_t_y();
}
class Chien extends Animal{
    Chien(String nom, Integer tatouage){
       super(nom, tatouage);
       cri = "ouah";
    }
    boolean court_t_y(){
       return true;
    }
    boolean vole_t_y(){
       return false;
    }
    boolean nage_t_y(){
       return true;
    }
    boolean mord_t_y(){
       return true;
    }
}    
class Serin extends Animal{
    Serin(String nom, Integer tatouage){
       super(nom, tatouage);
       cri = "cuicui";
    }
    boolean court_t_y(){
       return true;
    }
    boolean vole_t_y(){
       return true;
    }
    boolean nage_t_y(){
       return false;
    }
    void chante(){
       for (int i = 0; i<15; i++){
           this.crie();
       }
    }
}    
class Main{
    public static void main(String[] argv){
       Chien medor = new Chien("medor",new Integer(17));
       SddGen<Integer,Animal> menagerie = 
           new SddGen<Integer,Animal>(new Animal[50]);
       menagerie.ajouter(medor);
       for (int i=0; i<10; i++){
           Serin oiseau = new Serin("serin"+i,new Integer(20+i));
           menagerie.ajouter(oiseau);
       }
       menagerie.voir();
       Animal animal25 = menagerie.retrouver(new Integer(25));
       animal25.crie();
       System.out.println();
    }
}


Barthelemy Francois 2004-06-01