Exercices UML et Java
Durée2hDocuments structurés
Consignes globales
Le travail de cette séance sera centré sur les documents structurés.
Contenu de l’activité
Documents structurés
Conception
L’objectif de cet exercice est de réaliser un logiciel de manipulation de documents structurés dont voici le cahier des charges :
Un document dispose d’un titre. Il est composé d’un ensemble de sections et connaît la section courante qui est la section en cours de manipulation (c.-à-d. sa position dans la liste des sections). Une section possède un titre et est composée d’un ensemble de paragraphes. Un paragraphe contient du texte qu’il peut renvoyer.
Un document offre des services permettant de naviguer dans les sections (p.ex. changer la section courante par la section qui la précède ou la suit), d’ajouter une section après la section courante et de récupérer la section courante. Il fournit également un service qui renvoit son titre et le contenu des sections (titres et paragraphes) sous la forme d’une chaîne de caractères.
Une section permet d’accéder à son titre et d’ajouter un paragraphe en fin de section. Enfin, son contenu (titre et contenu des paragraphes) peut être obtenu sous forme d’une chaîne de caractères.
Identifier les classes nécessaires et proposer un diagramme de classe détaillé.
Correction
Classe Paragraph
Réaliser, en Java, la classe Paragraph.
Correction
Classe Section
Réalisez, en Java, la classe Section. La réalisation des associations à cardinalité multiple doit utiliser la classe LinkedList de Java dont un extrait de la documentation est donné en annexes. Dans la méthode main testez la classe écrite.
Correction
Classe Document
Réalisez, en Java, la classe Document. Comme pour la question précédente, utilisez la classe LinkedList pour les associations à cardinalité multiple. Dans la méthode main testez la classe écrite.
Correction
Pour aller plus loin
Pour aller plus loin, vous devez lire le court document ici consacré à la notion de classe abstraite.
Evolution du cahier des charges
Nous désirons affiner la conception initiale en laissant la possibilité aux utilisateurs des documents d’ajouter une section spécifique Acknowledgements qui aura toujours le même titre (c.à.d. « Remerciements »). Modifier la conception des sections pour introduire la notion d’héritage et la classe abstraite AbstractSection et ses sous-classes NormalSection et Acknowledgements. Dessinez le diagramme de classes UML correspondant. Programmer ces nouvelles classes. Réaliser une classe DocumentV2 (inspiré de Document) pour tester le tout.
Correction
Annexes
Extrait de la javadoc de la classe LinkedList
Class LinkedList<E>
| Constructor Summary |
|---|
LinkedList() Constructs an empty list. |
| Method Summary | |
void | add(int index, E element) Inserts the specified element at the specified position in this list. |
boolean | add(E o)
Appends the specified element to the end of this list. |
E | get(int index)Returns the element at the specified position in this list. |
int | size()Returns the number of elements in this list. |