:: Enseignements :: ESIPE :: E4INFO :: 2013-2014 :: Programmation Orientée Objet - Design Pattern ::
[LOGO]

Parsing de la ligne de commande


Le but est de créer une API de parsing de la ligne de commande

Exercice 1 - OptionParser

Au lieu de ré-inventer la roue, on se dit que copier ce que fait Ruby pourrait être une bonne idée. Hop, un petit coup de recherche sur internet, et on tombe sur cette page, http://ruby.about.com/od/advancedruby/a/optionparser.htm , qui montre un exemple d'utilisation de la classe OptionParser.
L'exemple de cette page traduit en Java, cela donne à peu près ceci

Le but de ce TP est de faire en sorte que le code du main fonctionne.
  1. On s'intéresse dans un premier temps à l'API uniquement, pas à son implantation.
    Ecrire les déclarations de la classe OptionParser ainsie que celle de la classe Options (le type de opts lors de l'appel à create) de telle sorte que la classe Main compile.
  2. A quel design-pattern vous fait pensez la classe Option.
    Comparez la façon dont la classe Option est utilisée par rapport au schéma classique d'utilisation de ce design pattern.
  3. Implanter les classes OptionParser et Options.
  4. Vérifier que l'option "--help" affiche bien l'aide comme prévu, sinon modifier votre implantation pour que cela marche.
  5. On souhaite ajouter le support des options ayant des arguments, comme l'option --logfile dans le main.
    Qu'elle(s) sont le ou les méthodes qui doivent être ajoutée(s) à la classe OptionParser ?
    Ajouter la ou les déclarations de méthodes dans OptionParser.
  6. Comment gérer la conversion entre la chaine de caractères correspondant un argument, ici le fichier de log et l'objet correspondant, ici un objet de type Path ?
    Ecrire la classe ArgumentConverter gérant la conversion des arguments. L'initialisation de la classe devra se faire en utilisant le même pattern que pour la question 2.
  7. Implanter la gestion des arguments des options à la classe OptionParser.