Enoncé
Sur le modèle des transparents 13 et 14 du cours construire des décorateurs qui décorent des objets de type Writer pour :
- mettre un texte, écrit dans un Writer, tout en majuscules quelque soit la casse initiale; (
ToUpperCaseWriter
) - mettre la première lettre de chaque phrase en majuscule; (First
ToUpperCaseWriter
) - ne laisser qu'un espace entre les mots (enlèver des espaces lorsqu'il y en a plusieurs entre deux mots consécutifs); (
OnlyOneSpaceWriter
) - centrer un texte sur une ligne d'une largeur donnée; (
CenteredWriter
) - coder un texte en appliquant le chiffre de Vigenère. (
VigenereWriter
) Comment faire pour décoder ?
On veut avoir un décorateur pour chacun des cas énumérés ci-dessus.
On veut également pouvoir combiner deux décorateurs.
Exemple 1
Par exemple, le code suivant:
/div[2]/p[2]/span, reference to undefined name 'syntax'
produit la sortie:
je n'aime pas les majuscules. mais en français c'est obligatoire.
Exemple 2
Alors que le code suivant:
/div[3]/p[2]/span/span, reference to undefined name 'syntax'
produit la sortie suivante:
Je n'aime pas les majuscules. Mais en français c'est obligatoire.
Exemple 3
En combinant deux décorateurs de la façon suivante:
/div[4]/p[2]/span, reference to undefined name 'syntax'
On obtient la sortie:
Je n'aime
pas les
majuscules
. Mais en
français
c'est
obligatoir
e.