[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] |