Examen de Programmation Orientée Objet
IUP 2
Janvier 2002
Le diagramme UML de la figure 1 spécifie un modèle
d'arbres. Répondez aux questions suivantes :
- dessinez un arbre (pas trop gros) qui serait une instance possible de ce
modèle,
- que pensez-vous de la méthode valeur() ?
- dans la classe Arbre quelles sont les méthodes qui sont de classe
ou d'instance ?
- quelles sont les méthodes qui lèvent naturellement des exceptions ?
- donner le code Java correspondant à la classe Arbre,
- donner le code Java de la classe ArbreCompose,
- donner le code Java de la classe ArbreSimple,
- donner le code Java de la classe Entier
- on désire maintenant pouvoir savoir si un Entier est dans
l'arbre. Que faut-il rajouter ?
- donner un code Java qui construit l'abre que vous avez donné en exemple.
- on désire modéliser des arbres de syntaxe abstraite (pouvant représenter
des expressions arithmétiques comme 3+4*(1+5)). Modifiez le diagramme
en conséquence.
Figure 1:
Diagramme UML (Arbres).
|
Soit le programme suivant :
class Un {
private int a;
public Un(int a) { this.a = a; }
protected void f() { System.out.println("Un="+toString()); }
public String toString() { return ""+a; }
}
class Deux extends Un {
public int a;
public Deux(int i,int j) { super(i); a = j; }
public void f() { System.out.println("Deux="+toString()); }
public String toString() {
return "("+super.toString()+","+a+")";
}
}
public class Test {
public static void affiche(Un u) {
System.out.println(u);
u.f();
}
public static void main(String argv[]) {
Un un = new Un(3);
un.a = 1;
Deux deux = new Deux(4,5);
deux.a = 2;
un.f();
deux.f();
affiche(un);
affiche(deux);
deux = (Deux)un;
un = (Un)deux;
un.f();
affiche(un);
deux = new Un(10);
}
}
- quelles sont les instructions qui provoqueront une erreur de compilation
et pourquoi ?
- quelles sont les instructions qui provoqueront une erreur à l'exécution
et pourquoi ?
- on supposera que les erreurs auront été mises en commentaire. Quels
seront les messages affichés à l'exécution ?
Jean-Baptiste Yunès