suivant: À propos de ce
monter: Comparaison Java-Ocaml: les programmes
précédent: Programme Java 1.4
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