You are on page 1of 3

EXAMEN G

enie Logiciel - Java


Master 1`ere annee : Janvier 2011
Auteur(s) du sujet : J. Velcin
Lexamen a une duree de 2h. Tous les documents papiers sont autorises.
Veillez `a ecrire lisiblement.

Exercice 1 : cherchez lerreur (6 pts)


Trouvez et corrigez les erreurs de syntaxes dans le programme Java ci-dessous (vous pouvez
repondre directement sur la feuille) :
public class Outil {
import javax.swing.JOptionPane;
import Train.*;
// Fonction permettant recuperer les villes/gares/trains a partir dun fichier
public String getInfos(url) {
Vector l = IO.readObjects(url);
String[] infos = null;
if (l.Empty()) {
JOptionPane jop = new JOptionPane();
jop.showMessageDialog(null, Aucun enregistrement dans le fichier!);
} else {
float n = l.size();
infos = new String[n];
for (int i == 0; i < n; i++) {
Object o = l.get(i);
if (o instanceof Ville) {
infos[i] = ((Ville) o).getLibelle();
}
if (o instanceof Gare) {
infos[i] = ((Gare) o).getNom_gare();
}
if (o instanceof Train) {
infos[i] = ((Train) o).getIdTrain();
}
}
if (n >= 2) {
for (int j = 0; j < n - 1; j++) {
for (int k = j + 1; k < n; k++) {
if (infos[j].compareTo(infos[k]) > 0) {
String tmp = infos[k];
infos[k] = infos[j];
infos[j] = tmp;
}
}
}
}
}
c 2011
Master 1`ere annee : Janvier 2011 Universite Lumi`ere (Lyon 2)
Responsable du cours : Julien Velcin

}
Fonction permettant recuperer les noms gares qui correspond ville donnee
public String[] getVilleGare(String ville, String url_gare) {
String[] res = null;
ArrayList tmp = new ArrayList;
ArrayList l_gares = IO.readObjects(url_gare);
Iterator it = l_gares.iterator();
while (it.hasNext()) {
Gare g_courant = (Gare) it.next();
if (g_courant.getLibelle_ville().equals(ville))
tmp.add(g_courant.getNom_gare());
}
res = new String[tmp.size()];
for (int i = 0; i <= size(); i++) {
res[i] = (String) tmp.get(i);
}
return res;
}
}

Exercice 2 : gestion dun r


eseau social (14 pts)
Cet exercice consiste `
a ecrire une application (du moins une partie) permettant de gerer un petit
reseau social sur le Web, `
a linstar de Facebook, Copainsdavant, etc.
Pour cela, vous devrez :
1. Construire 4 classes : Principal, ReseauSocial, Utilisateur, SuperUtilisateur.
2. Chaque classe doit avoir un constructeur :
Le constructeur de la classe ReseauSocial permet dinstancier un reseau social, cest-`a-dire
une collection dutilisateurs et de super utilisateurs.
Le constructeur de la classe Utilisateur permet dinstancier chaque objet de cette classe
avec un pseudo, un identifiant numerique, un centre dinteret principal (comme musique,
sport, cinema), une liste damis, et une date dinscription. Lidentifiant et la date sont
creees automatiquement `
a la creation de chaque objet (pour la date, vous pourrez utilisez une
methode fictive date courante()). Vous utiliserez un champ static pour conserver dans la
classe le nombre total dobjets crees jusqu`a present.
Le constructeur de la classe SuperUtilisateur permet dinstancier chaque objet de cette
classe qui herite de la classe Utilisateur, avec en plus la liste de ses droits, donnee en param`etres,
quil poss`ede en tant que super utilisateur. Un tableau de valeurs 0/1 sera utilise pour notifier
ces droits, comme par exemple : [0,1,1,0,0].
3. Mettez des accesseurs et des mutateurs pour pouvoir acceder aux differents attributs de chaque
classe.
4. Sachant quun utilisateur poss`ede une liste damis, vous utiliserez un objet de la classe TreeSet
afin de pouvoir trier ses amis. Noubliez pas de creer une methode qui permet dajouter des amis
pour un utilisateur donne.
5. Pour pouvoir ranger les objets amis dans le TreeSet, noubliez pas dimplementer linterface
Comparable et decrire le code de la methode compareTo. Les amis seront tries en fonction de
leur centre dinteret principal (principalement) et de leur pseudo (si leur centre dinteret est le
meme).
6. Dans la classe ReseauSocial, ecrivez une methode nommee filtre interet qui permet de
filtrer les membres du reseau en fonction de leur centre dinteret principal. La methode doit
retourner une collection qui contient uniquement les amis repondant `a la requete formulee en
param`etre. Si aucun ami ne repond `
a ce centre dinteret, votre methode doit jeter une exception
de type MonException avec le texte : aucune personne ne repond `a ce centre dinteret. Vous
considererez que la classe personnalisee qui contient le code de MonException a dej`a ete ecrite.

7. Testez votre programme en ecrivant la methode main au sein de la classe Principal. Dans cette
methode, creez un reseau social, inserez-y plusieurs utilisateurs et un seul super utilisateur. Pour
finir, appelez la methode filtre interet que vous venez de creer.
8. Question subsidiaire : ecrivez les methodes toString() des classes Utilisateur et ReseauSocial
afin de pouvoir afficher le resultat de vos tests.

You might also like