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(); } } }