Exercices UML et Java
Durée2hDocuments 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. |