| [Précédent] |
| 9.8 |
Analyse de programme - Enoncé | Niveau 1 |
||
But: |
Analyser et corriger un programme orienté-objet | |||
Thème: |
polymorphisme, clone | |||
Fichiers: |
Polymorph.java | |||
Un programmeur amateur produit le code suivant pour tester ses connaissances en POO :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
class Polymorph
{ public static void main(String[] args)
{
Forme[] tabFormes =
{
new Cercle("rouge"),
new Triangle("jaune")
};
Collect formes = new Collect(10);
// Une collection de formes
// contenant une copie des objets definis
// dans le tableau tabFormes
for (int i = 0; i < tabFormes.length; ++i)
formes.add(new Forme(tabFormes[i]));
formes.dessine();
}
}
class Forme
{
private String couleur;
public Forme(String uneCouleur)
{
couleur = uneCouleur;
}
public Forme(Forme other)
{
this.couleur = other.couleur;
}
public void dessine(){
System.out.println("Une forme " + couleur);
}
}
class Triangle extends Forme
{
public Triangle(String uneCouleur)
{
super(uneCouleur);
}
public Triangle(Triangle autreTriangle)
{
super(autreTriangle);
}
public void dessine()
{
super.dessine();
System.out.println("toute pointue");
}
}
class Cercle extends Forme
{
public Cercle(String uneCouleur)
{
super(uneCouleur);
}
public Cercle(Cercle autreCercle)
{
super(autreCercle);
}
public void dessine()
{
super.dessine();
System.out.println("toute ronde");
}
}
class Collect
{
private Forme collect[];
private int index;
public Collect(int indexMax)
{
collect = new Forme[indexMax];
index = -1;
}
public void add(Forme a)
{
if (index < collect.length - 1)
{
++ index;
collect[index] = a;
}
}
public void dessine()
{
for (int i = 0; i <= index; ++i)
collect[i].dessine();
}
} |
Il s’attend à ce que son programme produise l’affichage suivant :
Une forme rouge toute rondeQuestions:
Une forme jaune
toute pointue
Les contraintes à respecter sont les suivantes :
| [Précédent] |