• Aucun résultat trouvé

Java DUT 1 Feuille TD9 Université Paris-Est Marne-la-Vallée

N/A
N/A
Protected

Academic year: 2022

Partager "Java DUT 1 Feuille TD9 Université Paris-Est Marne-la-Vallée"

Copied!
3
0
0

Texte intégral

(1)

Java DUT 1 Feuille TD9 Université Paris-Est Marne-la-Vallée

Comment faire un menu en Java ? En Java, on peut utiliser les Map pour écrire des menus. Cette solution permet d’ajouter des options dans les menus plus facilement qu’avec un blocswitch.

Exercice 1.—

Les classes utilisées typiquement seront les suivantes :

a) Une classeMainavec une méthodemainqui lance une méthode startde la classeTextMenusur un TextMenu.

public class Main {

public static void main(String[] args){

new TextMenu().start();

} }

b) Une classe Menu qui contient une Map qui associe à chaque String un objet d’une classe implémentant l’interfaceActioncontenant une méthode doIt. La classeMenu est :

public class Menu {

private final Map<String,Action> map;

public Menu() {

map = new HashMap<String,Action>();

map.put("a", new AAction());

map.put("b", new BAction());

map.put("q", new QuitAction());

}

public Map<String,Action> getMap(){

return map;

}

b) Une classeTextMenuqui dérive de Menu et comprend un champ statique text de type String correspondant au texte du Menu et une méthode startqui affiche le texte, attend le choix de l’utilisateur (une String) et effectue l’action correspondante.

public class TextMenu extends Menu{

private static String text =

"Entrez votre choix \n" +

"a : choix a\n" +

"b : choix b\n" +

"q : quitter\n";

1

(2)

public TextMenu(){

super();

}

public void start() {

Scanner sc = new Scanner(System.in);

System.out.print(text);

boolean notQuit = true;

String choice;

while (notQuit) { if (sc.hasNext()) { choice = sc.next();

if (getMap().containsKey(choice)){

getMap().get(choice).doIt();

notQuit = !(choice.equals("q"));

} else {

System.out.println("Choix non valide"); } }

}

sc.close();

} }

c) Une interfaceActionavec une méthodedoItqui effectura l’action voulue.

public interface Action { void doIt();

}

d) Des classesAAction,BAction..., etQuitActionqui implémententAction et correspondent au choix de la chaîne "a”, "b”...., "q”, dans le menu.

implémentant

public class AAction implements Action{

public void doIt() {

System.out.println("Action correspondant au choix a");

} }

public class QuitAction implements Action{

public void doIt() {

System.out.println("On sort");

} }

Faites un test de ces classes.

Exercice 2.—

On reprend la feuille TD8 qui permet de gérer une Company contenant des Employee. L’interface Company est

2

(3)

interface Company {

// add the Employee e to the Company boolean add(Employee e);

// remove the Employee e to the Compagny Employee remove(Employee e);

// returns the number of Employee of the compagny int size();

}

a) Créer un menu pour manipuler une Company avec les choix suivants :

public class TextMenu {

private static String text =

"Entrez votre choix \n" +

"create : creer la Company \n" +

"add firstName lastName : ajouter un Employee \n" +

"print : afficher la liste des Employee \n" +

"q : quitter \n";

// ...

}

b) Que doit-on changer pour ajouter un nouveau choix d’action sur le menu ?

3

Références

Documents relatifs

d) Écrire une méthode translate pour déplacer le disque dans le plan. La méthode prendra en argument les valeurs de déplacement dx et dy sur l’axe des x et l’axe des y. On

f) Écrire une méthode contains(Pixel p) qui renvoie true si le point p passé en argument est un des points du polygone. Que doit ajouter dans la classe Pixel pour que cette

Écrire une classe ArrayStack qui implémente l’interface Stack. La classe ArrayStack contiendra un tableau table d’entiers dont la taille maximale est une constante MAX comme

La classe Index sera utilisée par la classe IndexTest suivante public class IndexTest {.. public static

Aide. Les arguments mot1 et mot2 seront les éléments d’indice 0 et 1 du tableau args qui contient des chaînes de caractères. Pour mettre une chaîne de caractères en majuscule,

d) Écrire dans la classe Segment une méthode toString permettant d’afficher les deux points d’un segment. On utilisera la méthode toString de Pixel selon la technique de

pour que le programme lise au clavier une chaîne de caractères puis l’af- fiche en la mettant en majuscule. On trouvera la documentation sur la classe String du packetage java.lang

c) Écrire une classe SegmentTest destinée à tester les classes Segment et Pixel. Elle contiendra une méthode main où on crée un segment s1 avec le premier constructeur et un segment