Examen 1ére session

Exercice 2 : .... 2) Ecrire une fonction min3 qui retourne le minimum de trois entiers .... 2) Corriger les tests pour que tous les cas soient couvert de manière ...


un extrait du document



Examen 1ére session juin 2006
Licence Informatique 3éme année
Module Complément JAVA



Durée 2 heures
Documents autorisés : les polycopiés et notes personnelles de cours, TDs et TPs du module



Ne recopiez pas tout le code ! Indiquez quelles lignes sont à modifier, ainsi que les modifications, ou indiquez à quelle ligne s’insère du code en plus.





Problème 1 (environ 7 points)

En vous appuyant sur la javadoc donnée page suivante, compléter le programme principal suivant pour permettre la mise à jour des notes des étudiants :

001 public static void main(String[] args){
002 ExamResultModel erm = new ExamResultModel();
003 erm.addResult("Toto",5.0f);
004 erm.addResult("Titi",7.0f);
005 erm.addResult("Tutu",12.0f);
006 erm.addResult("Tata",15.0f);
007 erm.addResult("Tete",8.0f);
008 erm.addResult("Tyty",17.0f);
009 erm.addResult("Toutou",2.0f);
010 NamedResultList list1 = new NamedResultList(erm);
011 NoteResultList list2 = new NoteResultList(erm);
012 ResultControler rc = new ResultControler();
013 JFrame frame = new JFrame("Test");
014 Box b1 = new Box(BoxLayout.Y_AXIS);
015 Box b2 = new Box(BoxLayout.X_AXIS);
016 b2.add(list1); b2.add(list2); b1.add(b2); b1.add(rc);
017 frame.getContentPane().add(b1);
018 frame.pack();
019 frame.setVisible(true);
020 }
















public class ExamResultModel
extends java.util.Observable
implements java.util.Observer
Cette classe encapsule les résultats d'un examen sous forme d'une liste d'objets ExamResult qui eux-mêmes encapsulent le nom de l'étudiant et sa note.
Constructor Summary

 HYPERLINK "../examen/ExamResultModel.html" \l "ExamResultModel()" ExamResultModel()            


Method Summary

 void
 HYPERLINK "../examen/ExamResultModel.html" \l "addResult(java.lang.String, float)" addResult(java.lang.String name, float note)           Cette méthode ajoute un étudiant et sa note dans la liste et provoque la notification du changement aux observateurs attachés à cet objet.

 java.util.Iterator
 HYPERLINK "../examen/ExamResultModel.html" \l "iterator()" iterator()           Cette méthode retourne un itérateur sur la liste de résultats (liste de ExamResult).

 void
 HYPERLINK "../examen/ExamResultModel.html" \l "removeResult(java.lang.String)" removeResult(java.lang.String name)           Cette méthode retire un étudiant et sa note dans la liste et provoque la notification du changement aux observateurs attachés à cet objet.

 void
 HYPERLINK "../examen/ExamResultModel.html" \l "setNote(java.lang.String, float)" setNote(java.lang.String name, float note)           Cette méthode modifie la note d'un étudiant et provoque la notification du changement aux observateurs attachés à cet objet.

 void
 HYPERLINK "../examen/ExamResultModel.html" \l "sortByName()" sortByName()            

 void
 HYPERLINK "../examen/ExamResultModel.html" \l "sortByNote()" sortByNote()            

 java.lang.String
 HYPERLINK "../examen/ExamResultModel.html" \l "toString()" toString()            

 void
 HYPERLINK "../examen/ExamResultModel.html" \l "update(java.util.Observable, java.lang.Object)" update(java.util.Observable ovable, java.lang.Object o)           Cette méthode permet de mettre à jour une note.

  Methods inherited from class java.util.Observable

addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged

  Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait





public class NoteResultList
extends javax.swing.JList
implements java.util.Observer
Cette classe représente une liste de résultats d'examen. Elle affiche les résultats triés par note.
Constructor Summary

 HYPERLINK "../examen/NoteResultList.html" \l "NoteResultList()" NoteResultList()            


  Method Summary

 void
 HYPERLINK "../examen/NoteResultList.html" \l "update(java.util.Observable, java.lang.Object)" update(java.util.Observable oable, java.lang.Object o)           Si l'objet passé en paramètre est un ExamResultModel, la NamedResultList affiche les résultats encapsulés dans cet ExamResultModel, triés par note.


public class NamedResultList
extends javax.swing.JList
implements java.util.Observer
Cette classe représente une liste de résultats d'examen. Elle affiche les résultats triés par nom.
Constructor Summary

 HYPERLINK "../examen/NamedResultList.html" \l "NamedResultList()" NamedResultList()            


  Method Summary

 void
 HYPERLINK "../examen/NamedResultList.html" \l "update(java.util.Observable, java.lang.Object)" update(java.util.Observable oable, java.lang.Object o)           Si l'objet passé en paramètre est un ExamResultModel, la NamedResultList affiche les résultats encapsulés dans cet ExamResultModel, triés par nom.

 HYPERLINK "" \l "skip-navbar_top" \o "Skip navigation links" 
public class ResultControler
extends javax.swing.JPanel
implements java.awt.event.ActionListener
Ce composant graphique permet de modifier la note d'un étudiant. Il contient deux JTextField éditables pour le nom et la note et un bouton. L'appui sur le bouton entraine la notification aux observateurs attachés au ResultControler de la modification de la note (l'objet passé en paramètre de la méthode notify est un ExamResult encapsulant le nom et la nouvelle note.
Constructor Summary

 HYPERLINK "../examen/ResultControler.html" \l "ResultControler()" ResultControler()            


  Method Summary

 void
 HYPERLINK "../examen/ResultControler.html" \l "actionPerformed(java.awt.event.ActionEvent)" actionPerformed(java.awt.event.ActionEvent e)            

 void
 HYPERLINK "../examen/ResultControler.html" \l "addObserver(java.util.Observer)" addObserver(java.util.Observer o)            

 void
 HYPERLINK "../examen/ResultControler.html" \l "removeObserver(java.util.Observer)" removeObserver(java.util.Observer o)            

 



Problème 2 (environ 6 pts)

001 import java.awt.*;
002 import java.awt.event.*;
003 import javax.swing.*;
004
005 public class MachineASous extends JPanel
006 {
007 private DisqueAChiffre disques[];
008 private String resultat;
009 private volatile boolean enJeu;
010
011 public MachineASous() {
012 super(new GridLayout(1,3,5,5));
013 disques = new DisqueAChiffre[3];
014 for (int i=0; i