Académique Documents
Professionnel Documents
Culture Documents
Lisez attentivement chaque partie du sujet avant de vous lancer dans vos réponses.
Q2) Choisissez l’expression qui permet de convertir le contenu d’un String nommé text en une valeur de type float
Q4) Sélectionnez le bout de code que l’on utilisera pour une classe qui fait partie du package tools et qui utilise des
classes des packages java.lang et java.util.
Q6) Quels types de variable sont automatiquement initialisés à leur valeur par défaut? 1 des 2 réponses suivantes
JP Segado 8
Programmation Objet Java
Corrigé INGE3 2010-2011
Examen 1 Semestre 6
d) les attributs d'instance
Q7) Comment compléter le code ci-dessous pour qu'il affiche la chaîne de caractères "constructeur de base" ?
class Base {
Base (int i){ Sub()
System.out.println("constructeur de base"); {
} /*Deux*/
Base(){} }
} public void sub()
public class Sub extends Base { {
public static void main (String argv[]){ /*Trois*/
Sub s = new Sub(); }
/*Un*/ }
}
Q8) Identifiez les instructions qui déclarent et instancient correctement des tableaux de 4 entiers.
Q9) Choisissez la paire d'instructions permettant de créer un objet du type ArrayList (voir ANNEXE C en dernière
page) et d'y ajouter un élément :
Q10) Dans le code ci-dessous, choisissez la définition la plus vraisemblable de la méthode ioAppel :
import java.io.*;
public class Test {
public static void main (String args[]) {
Test t= new Test();
t.uneMethode();
}
void uneMethode () {
try {
ioAppel();
} catch (IOException e) {}
}
}
JP Segado 8
Programmation Objet Java
Corrigé INGE3 2010-2011
Examen 1 Semestre 6
d) public void ioAppel throws IOException () {...}
JP Segado 8
Programmation Objet Java
Corrigé INGE3 2010-2011
Examen 1 Semestre 6
On cherche à gérer une liste d'élèves avec leurs notes et les profs qui les évaluent.
Des extraits utiles du code de ces classes sont définies est en ANNEXE B. Il est inutile de recopier ces extraits et de
connaître les parties du code cachées pour faire les exercices demandés.
Le code à compléter est encadré en gris : lisez attentivement les commentaires pour vous aider. Votre code devra
être commenté pour plus de clarté.
1) Pour la classe Personne modélisée dans le diagramme de l’ANNEXE A et définie en ANNEXE B.1 :
a) Quel est l’intérêt qu’elle soit abstraite ? (0,5 POINT)
Cette classe non instanciable permet de factoriser les propriétés communes de ses classes filles Prof et Eleve
b) Quel est l’intérêt de mettre ses attributs en visibilité « protected » ? (0,5 POINT)
Pour les rendre visibles à ses classes filles uniquement
2) Dans la classe Note définie en ANNEXE B.2, Complétez le code de son constructeur qui initialise tous ses
attributs avec ses paramètres. (1 POINT)
b) Codez l’accesseur en lecture getIdentifiant permettant de consulter l’attribut privé identifiant de l’élève
référencé. (0,5 POINT)
c) Pourquoi ne faut-il pas mettre l’accesseur en écriture pour l’attribut privé identifiant ? (0,5 POINT)
Pour que ni l’élève ni le prof ne puisse le modifier
d) Complétez sa méthode moyenne qui calcule et retourne la moyenne des notes non vides de l’élève
référencé. Si toutes les notes sont vides, l’exception NotesVides est créée. (2 POINTS)
4) Dans la classe CollectionEleves définie en ANNEXE B.4, complétez le code de sa méthode statique
rechercher qui recherche un élève dans la collection des élèves liste à partir de son paramètre identifiant.
Si l’élève recherché existe, cette méthode retourne l’élève trouvé. Si élève n’existe pas, l’exception
EleveInexistant est créée. (2 POINTS)
b) Codez la méthode qui trie et affiche les élèves de la collection par ordre décroissant de moyenne (voir
question 3d). Pour chaque élève sans exception NotesVides déclenchée, cette méthode affichera son
nom, son prénom et sa moyenne. (3 POINTS)
JP Segado 8
Programmation Objet Java
Corrigé INGE3 2010-2011
Examen 1 Semestre 6
CollectionEleves
Personne
# String nom
# String prenom
+ Eleve rechercher(…)
*
Prof Note Eleve
+ float valeur - int identifiant
« correcteur » « corrige »
10
+ void setNote(…) + int getIdentifiant()
+ float moyenne()
ANNEXE B.1
La classe Personne est une classe abstraite définie comme suit :
ANNEXE B.2
Un extrait de la classe Note est défini ci-dessous :
// Constructeur à compléter qui initialise les attributs de la note référencée avec ses paramètres
public Note (Prof correcteur, Eleve corrige, float valeur) {
this.correcteur = correcteur ; this.corrige = corrige ; this.valeur = valeur ;
}
}
ANNEXE B.3
JP Segado 8
Programmation Objet Java
Corrigé INGE3 2010-2011
Examen 1 Semestre 6
Un extrait de la classe Eleve est défini ci-dessous :
// attributs
public Note notes[] = new Note[NB_NOTES] ; // tableau public instancié des notes de l’élève
private int identifiant ; // numéro d’identifiant privé de l’élève
// Constructeur à compléter qui initialise les attributs de l’élève référencé avec ses paramètres, dont le nom et le
// prénom (voir ANNEXE B.1)
public Eleve (String nom, String prenom, int identifiant) {
this.nom = nom ; this.prenom = prenom ; this.identifiant = identifiant ;
}
// Méthode à compléter qui calcule et retourne la moyenne des notes non vides de l’élève référencé. Si toutes les
// notes sont vides, l’exception NotesVides est créée
public float moyenne () throws NotesVides {
int i = 0 ; // nombre de notes
float somme = 0 ; // somme des notes
if (i==0)
throw new NotesVides() ; // toutes les notes sont vides : exception créée
else
return somme/i; // retourner la moyenne des notes non vides
}
}
ANNEXE B.4
Un extrait de la classe CollectionEleves est défini ci-dessous :
import java.util.ArrayList ;
// Méthode statique à compléter qui recherche un élève dans la collection des élèves liste à partir de son numéro
// d’identifiant en paramètre. Si l’élève recherché existe, cette méthode retourne l’élève trouvé. Si cet élève
// n’existe pas, l’exception EleveInexistant est créée.
public static Eleve rechercher (int identifiant) throws EleveInexistant {
Eleve e = null ; // élève à rechercher
boolean trouve = false ; // booléen indiquant si l’élève existe
int i = 0 ; // indice de la liste
JP Segado 8
Programmation Objet Java
Corrigé INGE3 2010-2011
Examen 1 Semestre 6
e = CollectionEleves.liste.get(i);
if (e.getIdentifiant() == identifiant)
trouve = true;
i++;
}
if (!trouve)
throw new EleveInexistant() ; // élève non trouvé : exception créée
else
return e; // retourner l’élève trouvé
}
}
ANNEXE B.5
Un extrait de la classe Prof est défini ci-dessous :
// A partir du numéro d’identifiant de l’élève en paramètre, cette méthode recherche cet élève et modifie si
// possible une note. Si l’élève recherché n’existe pas, l’exception EleveInexistant déclenchée affiche un message
// d’erreur.
public void setNote (int identifiant, float valeur, int i) {
Eleve corrige ; // déclarer l’élève corrigé à rechercher
try { // rechercher l’élève corrigé dans la collection des élèves
corrige = CollectionEleves.rechercher(identifiant) ;
}
catch (EleveInexistant e) { // exception déclenchée si l’élève corrigé n’existe pas
System.out.println(″Cet élève est inexistant″) ;
}
// A compléter. Si l’élève existe, modifier la note d’indice i en paramètre du tableau notes (voir ANNEXE B.3) de
// l’élève corrige : si cette note d’indice i est vide, instancier cette note (voir ANNEXE B.2) sinon modifier la valeur
// de la note avec la valeur en paramètre. Le prof correcteur à modifier est le prof référencé.
if (corrige.note[i] == null) // si la note d’indice i de l’élève est vide
corrige.note[i] = new Note(this, corrige, valeur);
else {
corrige.note[i].valeur = valeur;
corrige.note[i].correcteur = this;
}
}
// Méthode de tri par moyenne décroissante pour les élèves ayant au moins une note
public void trier () {
ArrayList<Eleve> listetriee = new ArrayList<Eleve>(); // liste à trier instanciée
int i, j; // indices de parcours de la liste d’élèves
Eleve eleve1, eleve2 ;
float moy1, moy2 ;
JP Segado 8
Programmation Objet Java
Corrigé INGE3 2010-2011
Examen 1 Semestre 6
for (j=i+1 ; j < listetriee.size() ; j++) {
// Récupérer chaque paire d’élèves pour comparer leur moyenne
eleve1 = listetriee.get(i);
moy1 = eleve1.moyenne();
eleve2 = listetriee.get(j);
moy2 = eleve2.moyenne();
JP Segado 8
Programmation Objet Java
Corrigé INGE3 2010-2011
Examen 1 Semestre 6
java.util
class ArrayList
Constructor Summary
ArrayList()
Constructs an empty list with an initial capacity of ten.
ArrayList(Collection<? extends E> c)
Constructs a list containing the elements (objects) of the specified collection, in the order they are
returned by the collection's iterator.
ArrayList(int initialCapacity)
Constructs an empty list with the specified initial capacity.
Method Summary
boolean add(E e)
Appends the specified element (object) to the end of this list.
void add(int index, E element)
Inserts the specified element (object) at the specified position in this list.
boolean contains(Object o)
Returns true if this list contains the specified element (object)
E get(int index)
Returns the element (object) at the specified position in this list.
int indexOf(Object o)
Returns the index of the first occurrence of the specified element (object) in this list, or -1
if this list does not contain the element.
boolean isEmpty()
Returns true if this list contains no elements (objects).
E remove(int index)
Removes the element (object) at the specified position in this list.
boolean remove(Object o)
Removes the first occurrence of the specified element (object) from this list, if it is present.
E set(int index, E element)
Replaces the element at the specified position in this list with the specified element
(object).
int size()
Returns the number of elements (objects) in this list.
JP Segado 8