Table des matières
aucun titre
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 quel que soit la casse initiale;
- mettre la première lettre de chaque phrase en majuscule;
- ne laisse qu'un espace entre les mots (enlève des espaces lorsqu'il y en a plusieurs entre deux mots consécutifs);
- centrer un texte sur une ligne d'une largeur donnée;
- coder un texte en appliquant le chiffre de Vigenère
On veut avoir un décorateur pour chacun des cas énumérés ci-dessus.
On veut également pouvoir combiner deux décorateurs.
Par exemple, le code suivant:
- try (Writer writer = new StringWriter()) {
- writer.write("je n'aime pas les majuscules. mais en français c'est obligatoire.");
- System.out.println(writer);
- } catch (IOException e) {
- e.printStackTrace();
- }
try (Writer writer = new StringWriter()) {
writer.write("je n'aime pas les majuscules. mais en français c'est obligatoire.");
System.out.println(writer);
} catch (IOException e) {
e.printStackTrace();
}
produit la sortie:
je n'aime pas les majuscules. mais en français c'est obligatoire.
Alors que le code suivant:
- try {
- Writer writer = new StringWriter();
- writer = new FirstToUpperCaseWriter(writer);
- writer.write("je n'aime pas les majuscules. mais en français c'est obligatoire.");
- System.out.println(writer);
- writer.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
try {
Writer writer = new StringWriter();
writer = new FirstToUpperCaseWriter(writer);
writer.write("je n'aime pas les majuscules. mais en français c'est obligatoire.");
System.out.println(writer);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
produit la sortie suivante:
Je n'aime pas les majuscules. Mais en français c'est obligatoire.
En combinant deux décorateurs de la façon suivante:
{{ syntax.Java{code: "try {\n Writer writer = new StringWriter();\n writer = new FirstToUpperCaseWriter(writer);\n writer = new CenteredWriter(writer, 10);\n writer.write(\"je n'aime pas les majuscules. mais en français c'est obligatoire.\");\n writer.close();\n System.out.println(writer);\n} catch (IOException e) {\n e.printStackTrace();\n}"} }}
On obtient la sortie:
Je n'aime
pas les
majuscules
. Mais en
français
c'est
obligatoir
e.