Exercices UML et Java

Durée2h

Documents structurés

Contexte

Le travail de cette séance sera centré sur les documents structurés.

Documents structurés

Exercice 1 (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

Exercice 2 (Classe Paragraph)

Réaliser, en Java, la classe Paragraph.

Correction

Exercice 3 (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

Exercice 4 (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

Exercice 5 (Rétro-conception)

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 NoAcknowledgementsSection 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.