next up previous
suivant: Programme Java 1.5 monter: Comparaison Java-Ocaml: les programmes précédent: Programme Ocaml

Programme Java 1.4

interface DomaineACle{
    Object getCle();
    void print();
}
class Sdd{
    DomaineACle[] tab = new DomaineACle[100];
    int nb = 0;
    void ajouter(DomaineACle o){
       tab[nb] = o;
       nb++;
    }
    DomaineACle retrouver(Object 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{
    String nom;
    Integer tatouage;
    String cri;
    Animal(String st, Integer tat){
       nom=st;
       tatouage = tat;
    }
    public Object 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));
       Sdd menagerie = new Sdd();
       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 = (Animal) menagerie.retrouver(new Integer(25));
       animal25.crie();
       System.out.println();
       Serin piupiu = new Serin("piupiu",new Integer(10));
       menagerie.ajouter(piupiu);
       Automate rossignol = new Automate("rossi", new Integer(20));
       // menagerie.ajouter(rossignol);
    }
}
class Automate{ // extends DomaineACle ?
    String nom;
    Integer tatouage;
    String cri;
    Automate(String st, Integer tat){
       nom=st;
       tatouage = tat;
    }
    public Object getCle(){
       return tatouage;
    }
    public void print(){
       System.out.println(nom + " " + tatouage);
    }
    boolean repond(String n){
       return n == nom;
    }
    void crie(){
       System.out.print(cri);
    }
    boolean court_t_y(){
       return false;
    }
    boolean vole_t_y(){
       return false;
    }
    boolean nage_t_y(){
       return false;
    }
    void chante(){
       for (int i = 0; i<15; i++){
           this.crie();
       }
    }
}



Barthelemy Francois 2004-06-01