• Aucun résultat trouvé

Visualisez le sujet dans un navigateur en ouvrant

N/A
N/A
Protected

Academic year: 2022

Partager "Visualisez le sujet dans un navigateur en ouvrant "

Copied!
7
0
0

Texte intégral

(1)

Lectures préalables : Les notes de cours

Ce tutorial sur les collectionset/ou celui_là et/ou le chapitre2

Revoir également les classes internes

Thèmes du TP :

classes abstraites, interface, héritage package java.util

java.util.AbstractCollection java.util.AbstractSet

java.util.Set java.util.TreeSet java.util.Vector java.util.HashMap Iterator , Comparator classes internes

Visualisez le sujet dans un navigateur en ouvrant

index.html

du répertoire qui a été créé à l'ouverture de

tp3.jar

par BlueJ; vous aurez ainsi accès aux applettes et pourrez expérimenter les comportements qui sont attendus.

Soumettez chaque question à l'outil d'évaluation junit3.

(L'énoncé de la question 1 est inspiré du tutorial de Sun sur les collections.)

Applette de Test

(essayez les 4 opérations avec, par exemple, 1 2 3 et 2 3 4 )

.1) Compléter la classe "Ensemble", nommée

Ensemble<T>

L'implémentation préconisée utilise une instance de la classe java.util.Vector<T>. Seule une méthode est à développer ici :

public boolean add(T t).

Cette méthode doit garantir la sémantique de l'ajout d'un élément dans un ensemble (au sens

(2)

.2) Complétez la classe de tests unitaires de la classe Ensemble<T> (pour la

méthode add() )

.3) Enrichissez la classe Ensemble<T> avec ces 4 opérations :

1) union ° 2) intersection ° 3) différence ° 4) différence symétrique °°

° voir les méthodes xxxAll spécifiées dans l'interface java.util.Collection (aucune boucle n'est nécessaire !)

Dans la javadoc, "... adds each object ..." signifie "... calls add() for each object ..."

°° ((e union e1) - (e inter e1))

Attention ! e et e1 ne doivent pas être modifiés.

Chaque opération retourne un nouvel ensemble, comme le suggère cette signature de la méthode

"union"

une utilisation possible :

.4) Enrichissez la classe de tests unitaires demandée en 1.2 (chaque méthode doit

avoir été testée au moins une fois)

.5) Vérifiez le bon fonctionnement en complétant puis en utilisant l'applette

nommée AppletteTestEnsemble

2 sur 7 02/10/2011 00:29

(3)

.1) Les listes et dictionnaires

Le texte de la fenêtre de l'applette ci-dessous est une liste constituée de mots extraits du chapitre 2 de CoreJava2 consacré au "LinkedList" (les mots sont rassemblés dans une constante de type

"String", nommée CHAPITRE2 dans la classe Chapitre2CoreJava2).

Complétez la classe Chapitre2CoreJava2 en développant ces deux méthodes de classe : Obtention d'une liste de mots à partir de la constante CHAPITRE2

1.

public static List<String> listeDesMots() (utilisez une LinkedList)

Obtention d'une liste de couples <String,Integer> : à chaque mot du CHAPITRE2 est associé son nombre d'occurrences

2.

public static Map<String,Integer> occurrencesDesMots( List<String>

liste )

(utilisez une HashMap)

(4)

.2) Complétez la classe IHMListe afin d'implanter toutes les actions associées aux

noms des boutons.

Certaines de ces actions sont déjà programmées. Il ne vous reste que Croissant et Décroissant à programmer.

rechercher : recherche du mot tapé dans la zone de saisie; le booléen, le résultat de la recherche est affiché. La touche Entrée du clavier a le même effet qu'une action

effectuée sur ce bouton.

retirer : retrait de tous les mots commençant par le préfixe de la zone de saisie;

le booléen, résultat du retrait est affiché.

croissant : tri du texte selon cet ordre; utilisez Collections.sort.

décroissant : tri du texte selon cet ordre; écrivez une classe interne implémentant l'interface Comparator<T>.

occurrence : obtention du nombre d'occurrences du mot présent dans la zone de saisie une IHM au comportement attendu :

4 sur 7 02/10/2011 00:29

(5)

Recopiez dans IHMListe2 les deux méthodes d'IHMListe complétées à la question 2.2, puis ...

.3) Complétez maintenant, la classe IHMListe2 afin d'implanter la possibilité

d'annuler les actions de modification du texte comme le retrait ou le tri sur la liste.

L'idée est de stocker l'état de la 'liste de String' à chaque action ('retirer' , 'croissant' , 'decroisssant') dans une pile (java.util.Stack<E>) . Et le dernier état de la 'liste de String' empilé est restitué à chaque action 'annuler'. Quand la pile est vide le bouton 'annuler' est sans effet.

Attention de bien mettre à jour la table des occurrences.

(6)

comportement attendu :

.1) Le pattern Fabrique

6 sur 7 02/10/2011 00:29

(7)

Selon la bibliographie habituelle, l'objectif du Pattern Factory est de définir une interface pour la création d'un objet,

en laissant aux classes implémentant cette interface le choix de la classe à instancier pour cet objet.

Interface Factory<T>, l'implémentation de la méthode create est laissée aux "clients"

package question3;

public interface Factory<T>{

public T create();

}

exemple : TextFactory

public class TextFactory1 implements Factory<TextCompon public TextComponent create(){

return new TextArea(100,50);

} }

public class TextFactory2 implements Factory<TextCompon public TextComponent create(){

return new TextField(40);

} }

Un usage :

public void utilisation( Factory fabrique ){

TextComponent tc = fabrique.create();

tc.setText( "essai" );

}

utilisation( new TextFactory1() );

utilisation( new TextFactory2() );

.2) Complétez la classe de Tests unitaires

Références

Documents relatifs

pénible chemise vigne comme contre bonjour cloche piste liste crime roi tout jouer village calcul couleur revue large lire charbon voici matinée sorte figure coupe planche tous

Pour cette partie, vous pouvez utiliser la classe Personne de la page 1 ainsi que toutes les méthodes que vous avez écrites à la partie 1.. Vous disposez d’une classe TestPersonne

analyse ensuite chaque mot à l’aide du tableau Saint-Exupéry était un aviateur célèbre. Les enfants aiment rêver devant

analyse ensuite chaque mot à l’aide du tableau Saint-Exupéry était un aviateur célèbre. Les enfants aiment rêver devant

• Ecrire la m´ ethode “public String toStringIter()” qui renvoie une chaine de caract` eres d´ ecrivant tous les ´ el´ ements de la liste de fa¸ con it´ erative.. • Ecrire

Ecrire une fonction récursive hauteur qui permet de calculer la hauteur d’un arbre binaire, cette fonction doit avoir comme argument la racine de l’arbre et

Fonctionnement d'une pile La structure de pile permet de retrouver les éléments dans l'ordre inverse de 1 Une structure de file permet de retrouver les éléments dans l'ordre où

b) Sur un tas binaire, écrivez l'algorithme d'un traitement récursif propMax(i) permettant d'assurer qu'à partir de l'indice i chaque élément du tableau est