:: Enseignements :: ESIPE :: E4INFO :: 2014-2015 :: Programmation Orientée Objet - Design Patterns ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | TP noté de POO - Design Patterns |
Ce TD se déroule en autonomie. Les rendus sont à faire sur la plate-forme elearning.
Les consignes précises du rendu :
- UN seul zip pour l'ensemble des sources + photo UML + readme au format MarkDown + ...
- nommage du zip: NOM_PRENOM-tpnote.zip
Exercice 1 - Questions
Cette question est a répondre dans un fichier texte solid.txt en 5 minutes maximum.
- Parmi ces cinq principes SOLID, lequel vous semble le plus important ? expliquez pourquoi ?
Exercice 2 - Générateur de rapport
Le but de cet exercice est de construire un générateur de rapport à partir de fichiers texte au format Markdown.
Pour cet exercice, nous ne nous intéresserons qu'à un tout petit sous-ensemble du format et nous nous autoriserons des simplifications abusives !
Ce qui concerne la gestion des erreurs de format MarkDown est totalement ignoré.
Un exemple de rapport au format MarkDown vous est donné. Vous pourrez vous en servir pour vérifier le fnonctionnement de vos programmes.
-
Dans un premier temps, un stagiaire a écrit le générateur permettant de fabriquer du HTML.
Puis un autre stagiaire a écrit un programme pour générer le rapport avec un format XML, que l'on appellera ici "xml-1".
La structure de ces fichiers XML (que l'on définit normalement avec une DTD ou un schéma XSD) est ici volontairement simpliste :
- les balises <section> correspondent à des chapitres ou des sous-chapitres; elles peuvent donc être imbriquées.
- les balises <text> correspondent aux paragraphes de texte
On vous donne le générateur XML ainsi qu'un exemple de rapport XML généré.
rapport XML généré :
Il y a de la redondance plus ou moins cachée dans ces deux programmes, nous voulons faire en sorte de supprimer cette duplication en nous assurant
que le code de lecture du fichier d'entrée soit unique :
- expliquez votre choix de conception et documentez le avec un schéma UML.
- il y a plusieurs manières de faire : citez au moins une deuxième possibilité et expliquez pourquoi vous ne l'avez pas choisie.
-
On a oublié de vous prévenir ! il faut parfois pouvoir générer le rapport HTML et le rapport XML en même temps.
Bien sûr, il est interdit de parser deux fois le fichier MarkDown.
Expliquez comment vous allez adapter votre conception et documentez la avec un schéma UML.
Quel(s) Design pattern(s) allez vous mettre en oeuvre ?
Implémentez la solution retenue
-
On a oublié de vous prévenir ! En fait, il y a plusieurs formats XML qui peuvent être générés.
Par exemple, pour le même fichier Markdown, on pourrait vouloir obtenir un deuxième format, que l'on appellera ici "xml-2" :
Rapport XML généré avec le format "xml-2" :
Un générateur XML sera associé au nom de son format. Dans nos exemples, on voudra donc que :
- "xml-1" soit associé à la classe Xml1Generator.java.
- "xml-2" soit associé à la classe Xml2Generator.java. (non donnée ici car sans intérêt particulier)
Quel Design Patterns allez-vous mettre en place ?
Implémentez la solution retenue
-
Si vous ne l'avez pas encore fait, faites en sorte que le code de parsing, qui teste les '=' et '-' soit unique.
Expliquez en quoi la délégation vous permet de faire cela ?
Implémentez la solution retenue
-
Jusqu'à présent, vous avez fait des rapports XML en écrivant 'en dur' le xml.
En fait, certaines formats XML doivent parfois être générés SANS rouvrir les classes existantes,
mais en appliquant une transformation (typiquement XSL) sur un fichier XML initialement généré.
Quel Design Patterns allez-vous mettre en place ?
Expliquez votre conception et documentez la avec un schéma UML.
© Université de Marne-la-Vallée