Devoir 4 - Examen

Récupérez le code source

Ce devoir est à rendre (en utilisant comme d'habitude la classe RendreProjet ) avant le 24 juin au soir.

Contrairement aux devoirs précédents, nous ne vous fournissons pas de retour immédiat par des tests. Nous vous suggérons évidemment d'écrire vos propres tests JUnit pour vérifier que tout fonctionne bien.

Exercice 1 - collections

Question 1

On considère la classe adresse. On voudrait : Modifiez la classe adresse en conséquence.

Question 2

Une application pour aider les usagers du métro a l'interface décrite par la classe Metro .

On vous demande de proposer une implémentation de cette interface. Vous pouvez créer des classes auxiliaires si vous pensez que c'est utile (mais il faut conserver l'interface actuelle).

Remarque: les fonctionnalités de la classe Metro sont volontairement limitées. Pour une classe vraiment utile, il faudrait calculer des trajets, etc. mais vous avez déjà assez à faire par ailleurs !

Exercice 2 - I/O

Remarque : pour cet exercice, je suggère fortement d'écrire des jeux de tests en utilisant les classes StringReader et StringWriter.

Par exemple, pour la question 1, vous pouvez écrire le test suivant (entre autres) :

	
	@Test
	public void testSimpleQuestion1() throws IOException {
		String entree = "Un document#avec un commentaire\nseconde ligne\n";
		String sortieAttendue = "Un document\nseconde ligne\n";
		StringReader r = new StringReader(entree);
		StringWriter w = new StringWriter();
		QuestionEntreeSorties.supprimerCommentaires(r, w);
		r.close();
		w.close();
		assertEquals(sortieAttendue, w.toString());		
	}
	

Question 1

Dans le package devoir4.question2, écrire la méthode supprimerCommentaires .

Elle prendra un texte en entrée (sur le reader,) et le recopiera sur sa sortie, en supprimant les commentaires.

Un commentaire, ici, est un texte compris entre le caractère "#" et la fin de la ligne. Donc, si le texte en entrée est :

Un exemple
de Texte# avec un commentaire
pour cet
exercice# et voilà !
La sortie devra être :
Un exemple
de Texte
pour cet
exercice
Pour vous simplifier la vie, vous pouvez considérer que :

Question 2

On définit un mot comme étant une suite de lettres au sens de Character.isLetter() .

Écrire la méthode motsAvecMajuscule qui lit un texte avec un Reader et qui renvoie l'ensemble des mots (au sens donné ci-dessus) du texte qui commencent par une lettre en majuscule (voir Character.isUpperCase ).

Par exemple, si le texte lu est :

Gastibelza, l'homme à la carabine,
Chantait ainsi:
"Quelqu'un a-t-il connu doña Sabine?
 Quelqu'un d'ici?
 (Victor Hugo)	
 
L'ensemble retourné devra être
 	[Gastibelza, Chantait, Quelqu, Sabine, Victor, Hugo]
 

Exercice 3 - Swing

On désire pouvoir mettre une notes de 0 à 5 (par exemple à un produit ou à un film).

Cette note sera affichée et visualisée par un composant graphique créé à cet effet, dont le modèle sera un simple entier (entre 0 et 5). L'interface graphique finale aura l'aspect suivant :

Exemple d'interface graphique
Votre tâche:
  1. Complétez le composant Swing JNotation, dont la tâche est d'afficher la note, sous forme d'une suite de carrés jaunes. Remarque: il n'y a pas un composant par carré : le composant JNotation affiche à lui tout seul les carrés.
  2. Complétez la classe Application pour que quand on presse le bouton "valider," la note soit mise à jour et correctement affichée par le composant JNotation.

Remarques