Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
3- Quelle est la différence entre un programme correcte et un programme robuste? Quel est le moyen
le plus efficace pour rendre un programme java plus robuste?
- Un programme est correct s’il accomplit bien la tâche pour laquelle il a été conçu. 0.5 pt
- Un programme est robuste s’il est capable de fonctionner même en présence d’erreurs.
0.5 pt
- On peut rendre un programme java plus robuste d'une manière claire et propre grâce au
mécanisme de gestion des exceptions. 0.5 pt
1
public class B extends A{ System.out.println("Objet de type C");}
public void affiche() { }
super.affiche(); public class D extends B{
System.out.println("Objet de type B");} public void affiche() {
} super.affiche();
public class C extends A{ System.out.println("Objet de type D");}
public void affiche() { }
super.affiche();
1- Qu’affiche le programme suivant ?
public class Main{ }} Reponses: 6*0.25
2- On effectue les affectations suivantes (ces affectations sont indépendantes les unes des autres, elles ne
sont pas exécutées en séquence!). Pour chaque affectation, dites si elle fonctionne sans erreur, si elle
provoque une erreur à la compilation ou si elle provoque une erreur à l'exécution. S' il y a une erreur
expliquez (rapidement) pourquoi.
Réponses:
N° Instruction fonctionnement
1 O1 = O2; OK 0.25
2 O1 = O3; OK 0.25
3 O3 = O2; erreur à la compilation on ne peut pas convertir de A vers B 0.5
4 O4 = O5; erreur à la compilation on ne peut pas convertir de C vers D 0.5
5 O2 = O6; erreur à la compilation on ne peut pas convertir de Object vers A 0.5
6 O4 = (D)O1; erreur à l'exécution B ne peut pas être casté en D 0.5
2
b) Que produit l'exécution du bloc suivant:
for(int i=0;i<T.length;i++) T[i].affiche(); 0.25*4
Objet de type A
Objet de type B
Objet de type A
Objet de type B
Objet de type A
Objet de type B
Objet de type A
Objet de type B
Objet de type D
Exercice 3 : (3.25 points)
Ecrire, en langage Java, deux classes A, B et une interface I telles que :
• L'interface I possède une constante de type entier N initialisé à 100 et la méthode int f(int x);
• La classe B hérite de la classe A ;
• La classe A est abstraite et implémente l'interface I;
• La classe A possède :
- Un attribut entier x visible seulement par ses classes dérivées ;
- Un attribut entier y visible par ses classes filles et les classes du même package ;
- Un constructeur affectant une valeur à l’attribut x ;
- Une méthode abstraite void f(double x);
• La classe B possède :
- un attribut entier z visible uniquement dans la classe B ;
- un constructeur affectant une valeur aux attributs x et z ;
- L'implémentation de la méthode int f(int x) qui retourne le produit de l'argument x et l'attribut
z;
- L'implémentation de la méthode void f(double x) qui affiche la somme de l'argument x et
l'attribut z ;
Réponses: ((0.25*2)+(0.25*5)+1.5=3.25 points)
public interface I {
final int N=100;
int f(int x);
}
public abstract class A implements I{
protected int x;
int y;
public A(int x){
this.x=x;
}
public abstract void f(double x);
}
public class B extends A{
private int z;
public B(int x, int z){
super(x);
this.z=z;
}
public void f(double x){
System.out.println("la somme = "+x+z);
}
public int f(int x){
return x*z;
}
3
}
Arrays.sort(T);