Copy of interrogation 1 module poo avec corrigé type univ bejaia promo 2014 2015 (tchi drive)
1. 1
Nom : Date : Avril 2015
Prénom : Durée : 45 min
Section /groupe :
Interrogation 1 POO
Partie I (3 points): Cochez les bonnes réponses.
Bonne réponse=0,25pt ; mauvaise réponse ou réponse incomplète = -0,25pt ; pas de réponse=0pt.
(Toutes les questions ont au moins une bonne réponse)
1. La compilation d’un programme java :
(a) se fait par la commande grep
(b) génère un code directement exécutable sur la machine cible
(c) crée un fichier de suffixe .class
(d) vérifie la syntaxe d’un programme
2. Un fichier de suffixe .class :
(a) peut être interprété par la JVM.
(b) contient un source java.
(c) contient un code exécutable directement sur la machine cible.
(d) dépend de la machine cible.
3. La JVM « Java Virtual Machine »
(a) permet aux programmeurs d’éditer des programmes Java.
(b) permet aux programmes Java de s’exécuter sur n’importe quelle plateforme.
(c) permet des contrôles lors de l'exécution des programmes java.
(d) sert de passerelle entre le bytecode et le langage machine.
4. Une méthode déclarée static:
(a) est toujours une méthode de classe
(b) est toujours une méthode d’instance
(c) peut être redéfinie dans une classe dérivée
(d) ne peut être appelée qu’à partir de méthodes de la classe où elle a été définie
5. Qu'est-ce qu'une classe par rapport à un objet ?
(a) une classe est une instance d'un objet.
(b) un objet est une instance d'une classe.
(c) il n'y a aucun lien entre classe et objet.
(d) une classe est un modèle à partir duquel on peut créer des objets.
6. Une méthode déclarée public :
(a) est toujours une méthode de classe
(b) est toujours une méthode d’instance
(c) peut être appelée uniquement à partir d’objets de la classe où elle a été définie
(d) peut être appelée directement à partir d’objets de la classe où elle a été définie
7. En java, la signature d’une méthode :
(a) n’est pas concernée par le type de retour de la méthode.
(b) dépend du type et du nombre de paramètres.
(c) dépend du type de retour de la méthode.
(d) n’est concernée que par le nom de la méthode.
2. 2
8. En java le passage des paramètres des méthodes se fait :
(a) par nom
(b) par valeur
(c) par partage de variable
(d) par référence
9. Un attribut déclaré private static dans une classe A :
(a) ne peut être modifié qu’à l’intérieur d’une méthode statique de A.
(b) peut être modifié à l’intérieur d’une méthode non statique de A.
(c) ne peut pas être initialisée
(d) est indépendante des instances de la classe A.
10. Un attribut déclaré final dans une classe :
(a) ne peut être modifié.
(b) doit être initialisée au plus tard dans le constructeur de la classe.
(c) ne peut pas être initialisée.
(d) peut être modifie par un setteur.
11. En java, quand deux méthodes ont la même signature :
(a) il peut s’agir d’une surcharge
(b) il peut s’agir d’une redéfinition
(c) c’est impossible.
(d) il peut s’agir d’une surdéfinition
12. Une donnée d’un type primitif:
(a) peut être un objet
(b) peut être crée par un new
(c) n’est pas une référence
(d) peut être un identifiant
Partie 2 (7 points):
1. Qu’affiche le programme suivant : (1 pts)
class A {
void f(){System.out.print(”A.f() ”) ;g() ;}
void g(){System.out.print(”A.g() ”) ;}
}
class B extends A{
void f(){System.out.print(”B.f() ”) ;g() ;}
void g(){System.out.print(”B.g() ”) ;}
class Test{
public static void main(String[] args){A a1=new B() ; a1.f() ; ((A)a1).f() ; ((B)a1).f() ; }
}
B.f() B.g() B.f() B.g() B.f() B.g()
3. 3
2. Un Robot se caractérise par son type, son code (qui l’identifie de façon unique), son état (marche ou
repos) et son orientation (1 = Nord, 2 =Est, 3 = Sud, 4 = West).
Question 1 : Ecrivez en java la classe Robot avec les informations utiles et les méthodes suivantes :
- Un constructeur qui permet d’initialiser les attributs du Robot.
- Les setters et les getters nécessaires pour un Robot.
- La méthode affiche() qui permet d’afficher l’état et l’orientation d’un Robot.
- La méthode on_off () qui permet d’allumer ou éteindre le Rebot.
- La méthode tourner () qui permet de changer l’orientation du Robot.
Question 2 : Redéfinir la méthode equals pour tester si un rebot a les mêmes caractéristiques qu’un autre
rebot.
Question 3 : En utilisant cette classe Robot ? écrire la classe TestRobot qui permet, dans sa fonction
main, de créer un tableau de quatre robots, d’initialiser chacun de ses robots, de les afficher, de les mettre
en marche (état=true) et de les orienter vers des orientations différentes chacun de l’autre ainsi que les
comparés deux à deux.
public class Robot {
final private String type;(0,25pt)
final private int code; (0,25pt)
static private int n=0; (0,25pt)
private boolean etat=false; (0,25pt)
private int orientation; (0,25pt)
//constructeur
public Robot (String type){ (0,5pt)
this.type=type;
code=++n;
}
//getteurs (0,25pt)
public int getcode(){
return code;
}
public String gettype(){
return type;
}
public int getorientation(){(0,25pt)
return orientation;
}
public boolean getetat(){(0,25pt)
return etat;
}
//affiche
public void affiche(){(0,5pt)
System.out.println(code+" "+" "+gettype()+" "+ etat+" "+ orientation);
}
//on_off
public void on_off(){ (0,25pt)
etat=!etat;
}
public void tourner(int s){ (0,25pt)
orientation=s;
}
public boolean equals(Robot r){ (01 pt)
return
((this.etat==r.etat)&&(this.orientation==r.orientation)&&(this.type==r.type));
}
}
4. 4
public class TestRobot { (0,25pt)
public static void main(String[] args) {
Robot tab[]=new Robot[4]; (0,25pt)
for(int i=0; i<tab.length;i++)(0,25pt)
{
tab[i]= new Robot("T"+i); (0,25pt)
tab[i].tourner(i+1); (0,25pt)
tab[i].affiche();(0,25pt)
}
System.out.println(tab[0].equals(tab[1])); (0,25pt)
System.out.println(tab[2].equals(tab[3])); (0,25pt)
}
}