Polymorphisme

On souhaite définir un ensemble de classes pour "modéliser" des oiseaux. On veut munir chaque oiseau d'une méthode nommée decrire. On veut pouvoir mettre un mélange d'"oiseaux"dans un même tableau puis, dans une boucle, pouvoir appliquer sucessivement la méthode decrire à tous les "oiseaux" du tableau. On peut avoir par exemple les deux classes suivantes (dont l'en-tête peut être complétée).
class Merle
{
    void decrire()
    {
	System.out.println("this + "je suis un merle");
    }
}

class Pie
{
    void decrire()
    {
	System.out.println("this + "je suis une pie");
    }
}
Il s'agit de faire en sorte qu'une méthode main construise un tableau d'oiseaux variés (par exemple des merles et des pies), et que, grâce à une boucle appropriée, la sortie du programme soit (par exemple):
Famille des oiseaux : je suis un merle
Famille des oiseaux : je suis une pie
Famille des oiseaux : je suis une pie
Famille des oiseaux : je suis un merle
Famille des oiseaux : je suis une pie

On peut reprendre les deux classes ci-dessus et compléter le fichier avec ce qui est nécessaire.

Un corrigé

Une méthode main plus savante

Dans une version un peu différente, on peut permettre des oiseaux "quelconques", et avoir une sortie du genre :

Famille des oiseaux : je suis un merle
Famille des oiseaux : je suis une pie
Famille des oiseaux : je suis un oiseau "quelconque"
Famille des oiseaux : je suis une pie
Reprendre la première partie de l'exercice pour obtenir cela.

Un corrigé


© Irène Charon, Télécom ParisTech - Paris 2011