Exercices de Révision pour DLSIADBD
Exercice 1
L'exercice consiste seulement à deviner la sortie du programme ci-dessous (la
méthode main de la classe EssaiConstructeurs)
class A {
A() {
System.out.println("bonjour de A");
}
}
class B extends A {
boolean verite;
int valeur;
B() {
System.out.println("constructeur B()");
}
B(int valeur) {
this();
this.valeur = valeur;
System.out.println("constructeur B(int)");
}
B(boolean verite) {
this.verite = verite;
System.out.println("constructeur B(boolean)");
}
B(boolean verite, int valeur) {
this(valeur);
this.verite = verite;
System.out.println("constructeur B(boolean, int)");
}
public String toString() {
return "B : (" + verite + ", " + valeur +")\n";
}
}
class EssaiConstructeurs {
public static void main(String[] argv) {
B b = new B(true);
System.out.println(b);
b = new B(false, 5);
System.out.println(b);
}
}
Exercice 2
1) Est-ce que les classes suivantes compilent ? justifier
1. class Animal1 {
2. void makeNoise() {System.out.println("generic noise"); }
3. }
4. class Dog extends Animal1 {
1
5. void makeNoise() {System.out.println("bark"); }
6. void playDead() { System.out.println(" roll over"); }
7. }
8. class CastTest2 {
9. public static void main(String [] args) {
10. Animal1 [] a = {new Animal1(), new Dog(), new Animal1() };
11. for(Animal1 animal : a) {
12. animal.makeNoise();
13. if(animal instanceof Dog) {
14. animal.playDead();
15. }
16. }
17. }
18. }
……………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………
2) Si on modifie les instructions 13 et 14 par les instructions suivantes :
13. if(animal instanceof Dog) {
14. Dog d = (Dog) animal; // casting
15. d.playDead();
16. }
Est-ce que la classe castTest2 compile?
……………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………
3) Si on efface la ligne 13, est ce que le code compile ?
……………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………
Problème
Ecrire une classe Exercice qui a une variable enonce de type string et une variable n
de type entier qui sera incrémenté de 1 à chaque création d’un instance. Cette classe
a un constructeur qui initialise la variable enonce et l’additionne à « exercice » + n
et une méthode toString qui retourne enonce.
Ecrire une classe Revision qui hérite de Exercice et :
- A deux variables d’instance : Theme, String et niveau, entier.
- déclare deux constructeurs :
o un sans paramètres donnant les valeurs : on commence pour enonce et 0 pour
n. initialise thème à « tous » et niveau à 0.
2
o un avec paramètres pour initialiser les variables d’instance. Le constructeur
propage une exception du type ExceptionRevision signalant une erreur avec
le message " incorrect! thème doit être « polymorphisme », « operateurs » ou
« exception » " si la chaîne est différente de « polymorphisme »,
« opérateurs » et « exception » et une exception avec le message " incorrect!
niveau doit être 1 ou 2 " si le niveau est différent de 1 et 2.
- A une méthode initialiser qui doit créer et retourner une instance Revision. elle
accepte au clavier une chaîne pour theme, une chaîne pour enonce et un nombre
pour niveau. Cette méthode ne traite aucune exception.
- A une méthode equals qui permet de retourner true si deux instances revision ont
le même thème et le même niveau
- Une méthode toString
- Une méthode main qui crée deux instances de type Revision à l’aide de la méthode
initialiser, les affichent, les comparent et affichent le résultat de comparaison. La
méthode main doit traiter les exceptions s’il y’en a, en cas ou une exception est
capturée, un message expliquant l’exception doit être affichée et le programme
doit s’arrêter.