Question 1
01 pour décrire un type abstrait de données en java on
utilise une classe abstraite
02 List
est une classe java contenue dans le framework Collections
03 ArrayList est un type concret de données
implantant le type abstrait List
04 "type générique" est un autre nom pour
"type abstrait"
Question 2
import java.util.*;
public class TestCollection {
public static void main(String argv[]) {
List <String>list = new ArrayList <String>();
list.add("Bonjour");
list.add("Salut");
list.add(0);
StringBuffer sb = new StringBuffer("");
for(String item : list) sb = sb.append(item.toUpperCase());
System.out.println(sb.toString());
}
}
public class TestCollection {
public static void main(String argv[]) {
List <String>list = new ArrayList <String>();
list.add("Bonjour");
list.add("Salut");
list.add(0);
StringBuffer sb = new StringBuffer("");
for(String item : list) sb = sb.append(item.toUpperCase());
System.out.println(sb.toString());
}
}
05 le code ci-dessus provoque une erreur d’exécution
06 le code ci-dessus s’exécute correctement et affiche
sur une ligne : BONJOURSALUT0
07 le code ci-dessus s’exécute correctement et affiche
sur trois lignes : Bonjour Salut 0
08 le code ci-dessus provoque une
erreur de compilation
Question 3
09
pour tester une classe avec JUnit, il faut nécessairement modifier le code de
la classe testée
10 le nom d’une méthode de test doit nécessairement être préfixé par le mot "test"
10 le nom d’une méthode de test doit nécessairement être préfixé par le mot "test"
11 une méthode de test ne doit appeler qu’une fois au
plus la méthode assertEquals
12 une classe de test ne peut tester que les méthodes d’une seule classe
12 une classe de test ne peut tester que les méthodes d’une seule classe
Question 4
import junit.framework.*;
public TestToto extends
TestCase{
public TestToto(String s) { super(s)}
public test0(){
Toto t = new Toto();
assertEquals(100, t.Calcul(10000));
}
public test1{
Toto t = new Toto();
assertEquals(10, t.Calcul(20));
}
public test2{
Toto t = new Toto();
assertEquals(0, t.Calcul(50));
}
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(new TestToto("test1"));
suite.addTest(new TestToto("test2"));
return suite; }}
13 le moteur de test JUnit appelle la méthode suite qui appelle les méthodes test1 et test2
14 le code ci-dessus provoque une erreur de compilation car il y a trop de méthodes de test
15 le moteur de test JUnit appelle séquentiellement les méthodes test0, test1 et test2
14 le code ci-dessus provoque une erreur de compilation car il y a trop de méthodes de test
15 le moteur de test JUnit appelle séquentiellement les méthodes test0, test1 et test2
16
le moteur de test JUnit appelle
uniquement la méthode test0
Question
5
void Boucle(String s){
int acc = 0;
for(int i = 0; i< 1000; i++){
if(s.equals("pair"))if(i%2==0)
acc += Math.sqrt(Math.PI);
if(s.equals("impair")) if(i%2==1)
acc += Math.sqrt(Math.PI);
}
}
17
le code de cette méthode ne peut pas être optimisé
18 le code de cette méthode peut être optimisé en déplaçant un test et en déplaçant un calcul
19 le code de cette méthode peut être optimisé uniquement en déplaçant un test
18 le code de cette méthode peut être optimisé en déplaçant un test et en déplaçant un calcul
19 le code de cette méthode peut être optimisé uniquement en déplaçant un test
20
le code de cette méthode peut être optimisé en prenant un compteur de boucle de
type float
Question 6
21
le code tuning doit se faire au moment où on écrit le code pour la première
fois
22 le moyen le plus efficace d’optimiser un programme est de faire du code tuning
22 le moyen le plus efficace d’optimiser un programme est de faire du code tuning
23
pour accélérer un programme orienté objet, il faut utiliser le plus possible le
mécanisme des exceptions
24 pour accélérer un programme orienté objet, il faut éviter le plus possible le polymorphisme
24 pour accélérer un programme orienté objet, il faut éviter le plus possible le polymorphisme
Question 7

25 la flèche entre
le Chef et le Représentant signifie que le Chef est un Représentant particulier
26 le diagramme ci-dessus est un diagramme d’activité UML
27 dans le diagramme ci-dessus, les flèches en pointillé indiquent une relation temporelle
28 la flèche entre le Chef et le Représentant signifie que le Représentant est un Chef particulier
26 le diagramme ci-dessus est un diagramme d’activité UML
27 dans le diagramme ci-dessus, les flèches en pointillé indiquent une relation temporelle
28 la flèche entre le Chef et le Représentant signifie que le Représentant est un Chef particulier
Question 8

29 il y a dans la classe Garage un
attribut contenant une collection ou un tableau de clients
30
ce
diagramme de classes est de niveau Spécifications
31 la classe Garage est une sous-classe de la classe Voiture
31 la classe Garage est une sous-classe de la classe Voiture
32 la classe Annuaire dépend de la classe Garage
Question 9
33
UML est un
langage de programmation
34 UML est une méthode
34 UML est une méthode
35 UML ne nécessite pas une approche objet
36 UML est un langage de
modélisation
Question 10

37 dans le diagramme ci-dessus, le couloir de gauche
représente l'IHM et le couloir de droite le noyau de l'application
38 le diagramme ci-dessus est un diagramme de séquence
39 dans le diagramme ci-dessus, les boîtes représentent des objets
40 le diagramme ci-dessus décrit un scénario d'un cas d'utilisation
39 dans le diagramme ci-dessus, les boîtes représentent des objets
40 le diagramme ci-dessus décrit un scénario d'un cas d'utilisation
Question 11
41 les
spécifications détaillées du système se font pendant la phase d'élaboration de
SUP
42 la phase de début de SUP représente environ 20% de
l'effort total à fournir pour le projet
43 dans SUP, la programmation ne commence que dans la
phase de construction
44 l'objectif de la phase de transition de SUP est de transmettre le projet à une autre équipe de projet
44 l'objectif de la phase de transition de SUP est de transmettre le projet à une autre équipe de projet
Question 12
45 l'IHM définitive est réalisée pendant la phase de
construction de SUP
46
on doit
réaliser plusieurs prototypes pendant la phase d'élaboration de SUP
47 le diagramme de classes au niveau Conceptuel est réalisé pendant la phase de début de SUP
47 le diagramme de classes au niveau Conceptuel est réalisé pendant la phase de début de SUP
48 les diagrammes de séquences
permettent de découvrir les classes frontières du noyau
Question 13
49 le modèle de cycle de vie en
spirale allonge la durée des projets mais produit des résultats de meilleure
qualité
50
la
fiabilité d'un logiciel est sa capacité à résister aux intrusions
51 de nos jours, la plupart des projets informatiques sont des réussites
51 de nos jours, la plupart des projets informatiques sont des réussites
52 la méthode XP est spécialisée dans le
développement des projets sous Windows XP
Question
14
class A {
public static void main(String args []){
StringBuffer s = new StringBuffer("toto");
int x = 0;
procedure(s, x);
System.out.println(s.toString()+ x);
}
static void procedure(StringBuffer str, int t){ str.append("titi"); t = 1; }
}
public static void main(String args []){
StringBuffer s = new StringBuffer("toto");
int x = 0;
procedure(s, x);
System.out.println(s.toString()+ x);
}
static void procedure(StringBuffer str, int t){ str.append("titi"); t = 1; }
}
53 ce programme s'exécute correctement et affiche tototiti1
54 ce programme s'exécute correctement et affiche toto0
55 ce programme s'exécute correctement et affiche toto1
56 ce programme s'exécute
correctement et affiche tototiti0
Question 15
class Essai {public static void main(String[ ] args){A x = new B();x.afficheToi();}}
class A {
void afficheToi() { System.out.println("je suis un A");}}
class B extends A {
void afficheToi() { System.out.println("je suis un B");}}
57 ce programme se compile, s'exécute avec la commande java Essai et affiche "je suis un B"
58 ce source produit une erreur de compilation car aucune classe n'est publique
59 ce source produit une erreur de compilation car x est déclaré de type A, mais on lui affecte une valeur de type B sous-classe de A
60 ce programme se compile, s'exécute avec la commande java Essai et affiche "je suis un A"
Question 16
class A {
int x;
public A(int t) { x = t; }
public static void main(String args []){
A a = new A(); System.out.println(a.x);
}
}
int x;
public A(int t) { x = t; }
public static void main(String args []){
A a = new A(); System.out.println(a.x);
}
}
61 ce programme se compile, mais produit une erreur
d'exécution au moment de la création de l'objet a
62 ce programme se compile, mais produit une erreur d'exécution au moment de l'affichage car l'attribut x n'est pas initialisé
63 ce programme se compile, s'exécute correctement et affiche : 0
64 ce programme produit un erreur de compilation
62 ce programme se compile, mais produit une erreur d'exécution au moment de l'affichage car l'attribut x n'est pas initialisé
63 ce programme se compile, s'exécute correctement et affiche : 0
64 ce programme produit un erreur de compilation
Question 17
class A {
public static void main(String args []){ procedure();}
void procedure(){ System.out.println("Salut, monde"); }
}
public static void main(String args []){ procedure();}
void procedure(){ System.out.println("Salut, monde"); }
}
65 ce programme s'exécute correctement et affiche
"Salut, monde"
66 ce programme s'exécute correctement mais n'affiche rien
67 ce programme produit une erreur d'exécution au moment de l'appel de la méthode procedure dans la méthode main
68 ce programme produit une erreur de compilation
66 ce programme s'exécute correctement mais n'affiche rien
67 ce programme produit une erreur d'exécution au moment de l'appel de la méthode procedure dans la méthode main
68 ce programme produit une erreur de compilation
Question
18
class Essai {
public static void main(String args []){ A a = new A(1); System.out.println(a.x);}
}
class A {
int x;
A(int xx){ int x = xx;}
}
public static void main(String args []){ A a = new A(1); System.out.println(a.x);}
}
class A {
int x;
A(int xx){ int x = xx;}
}
69 ce source se compile et s'exécute
correctement. Il affiche la valeur 0
70 ce source produit une erreur de compilation à la ligne 4 car x est un attribut privé de la classe A
71 ce source se compile correctement mais produit une erreur d'exécution à la ligne 4 car l'attribut x n'a pas de valeur
72 ce source se compile et s'exécute correctement. Il affiche la valeur 1
70 ce source produit une erreur de compilation à la ligne 4 car x est un attribut privé de la classe A
71 ce source se compile correctement mais produit une erreur d'exécution à la ligne 4 car l'attribut x n'a pas de valeur
72 ce source se compile et s'exécute correctement. Il affiche la valeur 1
Question 19
class A {
byte x;
public
A(byte y) {
byte z = 0;
for(byte x = 1; x <= y; x++) z += x;
x=z;
}
public static void main(String[] args){
A a = new A((byte)5);
System.out.println(a.x);
}
}
73 ce source produit une
erreur de compilation
74 ce source se compile correctement mais produit une erreur d'exécution car le casting est incorrect
75 ce source se compile et s'exécute correctement. Il affiche la valeur 15
76 ce source se compile et s'exécute correctement. Il affiche la valeur 10
74 ce source se compile correctement mais produit une erreur d'exécution car le casting est incorrect
75 ce source se compile et s'exécute correctement. Il affiche la valeur 15
76 ce source se compile et s'exécute correctement. Il affiche la valeur 10
Question 20
class A {
public
static void main(String[] args){
StringBuffer sb = new StringBuffer("toto");
StringBuffer sb1 = sb;
sb=sb.append("**************************");
if(sb==sb1) System.out.println("même
objet");
}
}
77 ce source produit une
erreur de compilation
78 ce source se compile et s'exécute correctement. Il affiche "même objet"
79 ce source se compile correctement mais produit une erreur d'exécution
80 ce source se compile et s'exécute correctement. Il n’affiche rien
78 ce source se compile et s'exécute correctement. Il affiche "même objet"
79 ce source se compile correctement mais produit une erreur d'exécution
80 ce source se compile et s'exécute correctement. Il n’affiche rien
Question 21
class A {
public static void main(String[] toto){
int x = 5;
double y = 3;
System.out.println(x / 2);
System.out.println(x / 2.0);
System.out.println(y/x);
System.out.println((int)y / x);
}
}
81 ce source se compile et s'exécute correctement. Il
affiche sur quatre lignes :
2.5 2.5
0.6 0.6
82 ce source se compile et s'exécute correctement. Il affiche sur quatre lignes : 2 2.5 0.6 0.6
83 ce source se compile et s'exécute correctement. Il affiche sur quatre lignes : 2 2.5 0.6 0
84 ce source se compile et s'exécute correctement. Il affiche sur quatre lignes : 2.5 2.5 0 0
82 ce source se compile et s'exécute correctement. Il affiche sur quatre lignes : 2 2.5 0.6 0.6
83 ce source se compile et s'exécute correctement. Il affiche sur quatre lignes : 2 2.5 0.6 0
84 ce source se compile et s'exécute correctement. Il affiche sur quatre lignes : 2.5 2.5 0 0
Question 22
class
Humain { String nom; int âge;}
class Etudiant extends Humain { String diplôme = "bac";}
class EssaiHumainEtudiant {
public static void main(String args []){
Etudiant et = new Etudiant(); Humain h = et;
if(h==et) System.out.println("C’est le même objet") ;
if(h instanceof Etudiant)System.out.println("h est un étudiant") ;
if(h instanceof Humain)System.out.println("h est un humain") ;
System.out.println("et son diplôme est " + h.diplôme) ;
}
}
class Etudiant extends Humain { String diplôme = "bac";}
class EssaiHumainEtudiant {
public static void main(String args []){
Etudiant et = new Etudiant(); Humain h = et;
if(h==et) System.out.println("C’est le même objet") ;
if(h instanceof Etudiant)System.out.println("h est un étudiant") ;
if(h instanceof Humain)System.out.println("h est un humain") ;
System.out.println("et son diplôme est " + h.diplôme) ;
}
}
85 ce source
provoque une erreur de compilation
86 ce source se compile et s'exécute correctement. Il affiche "C’est le même objet" "h est un étudiant" "h est un humain" "et le diplôme de h est bac"
87 ce source se compile et s'exécute correctement. Il affiche "h est un étudiant" "h est un humain" " et son diplôme est bac "
88 ce source se compile et s'exécute correctement. Il affiche "h est un étudiant" "et son diplôme est bac"
86 ce source se compile et s'exécute correctement. Il affiche "C’est le même objet" "h est un étudiant" "h est un humain" "et le diplôme de h est bac"
87 ce source se compile et s'exécute correctement. Il affiche "h est un étudiant" "h est un humain" " et son diplôme est bac "
88 ce source se compile et s'exécute correctement. Il affiche "h est un étudiant" "et son diplôme est bac"
Question 23
class A {
public static void main(String[] toto){
try { System.out.print("A");
System.out.print(args[0]); System.out.print("B");}
catch(ArrayIndexOutOfBoundsException ex) {
System.out.print("Z");}
catch(Exception ex) {
System.out.print("X");}
finally { System.out.print("C");}
}
}
89 ce programme produit une
erreur de compilation car les deux clauses catch ne sont pas dans le bon
ordre
90 ce programme s'exécute correctement avec la commande java Test et affiche "AZC"
91 ce programme s'exécute correctement avec la commande java Test et affiche "AXB"
92 ce programme s'exécute correctement avec la commande java Test et affiche "AXBZ"
90 ce programme s'exécute correctement avec la commande java Test et affiche "AZC"
91 ce programme s'exécute correctement avec la commande java Test et affiche "AXB"
92 ce programme s'exécute correctement avec la commande java Test et affiche "AXBZ"
Question 24
import java.awt.*; import javax.swing.*; import
java.awt.event.*;
class Titi extends JFrame implements ActionListener
{
JButton b; JTextField jtx;
public Titi(){
b = new JButton("Clique-moi"); jtx = new JTextField("0");
setLayout(new GridLayout(1, 2));
add(jtx); add(b);
setSize(200,100); setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
}
public void actionPerformed(ActionEvent e){
Object o = e.getSource();
int nbClics = Integer.parseInt(jtx.getText());
nbClics++;
if(o==b) jtx.setText(""+nbClics);
JButton b; JTextField jtx;
public Titi(){
b = new JButton("Clique-moi"); jtx = new JTextField("0");
setLayout(new GridLayout(1, 2));
add(jtx); add(b);
setSize(200,100); setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
}
public void actionPerformed(ActionEvent e){
Object o = e.getSource();
int nbClics = Integer.parseInt(jtx.getText());
nbClics++;
if(o==b) jtx.setText(""+nbClics);
}
public static void main(String[] toto){ Titi t
= new Titi();}
}
Dans le source ci-dessus, il faut remplacer la ligne
contenant les "X" par l’instruction :
93 this.addActionListener(b) ;
94 jtx.addActionListener(b) ;
95. b.addActionListenet(jtx) ;
96 b.addActionListener(this) ;
94 jtx.addActionListener(b) ;
95. b.addActionListenet(jtx) ;
96 b.addActionListener(this) ;
Question 25
import java.awt.*; import javax.swing.*;
class Essai extends Frame {
MenuBar mb; Menu m; TextArea ta;
Essai() {
mb = new MenuBar(); m = new Menu("Toto"); ta = new TextArea(5, 30);
mb.add(m); setMenuBar(mb); add(ta);
MenuBar mb; Menu m; TextArea ta;
Essai() {
mb = new MenuBar(); m = new Menu("Toto"); ta = new TextArea(5, 30);
mb.add(m); setMenuBar(mb); add(ta);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(10, 100); setVisible(true);
}
setSize(10, 100); setVisible(true);
}
public static void main(String[] toto){ Essai
e = new Essai(); }
}
97 ce programme s'exécute correctement et affiche une fenêtre avec une
barre de menus contenant le menu unique "Toto"
98 ce programme provoque une erreur de compilation car on ne peut pas mélanger des composants AWT avec des composants SWING
99 ce programme provoque une erreur de compilation car aucun gestionnaire de disposition n'est défini pour la fenêtre principale
100 ce programme provoque une erreur de compilation car aucun gestionnaire d'événement n'est défini
98 ce programme provoque une erreur de compilation car on ne peut pas mélanger des composants AWT avec des composants SWING
99 ce programme provoque une erreur de compilation car aucun gestionnaire de disposition n'est défini pour la fenêtre principale
100 ce programme provoque une erreur de compilation car aucun gestionnaire d'événement n'est défini
Aucun commentaire:
Enregistrer un commentaire