(→Class Underline) |
(→Class App) |
||
Line 196: | Line 196: | ||
Simple demo application. | Simple demo application. | ||
+ | {{CollapsedCode|Ficheiro '''App.java'''| | ||
<java5> | <java5> | ||
public class App { | public class App { | ||
Line 214: | Line 215: | ||
} | } | ||
</java5> | </java5> | ||
+ | }} | ||
= Compiling and Running = | = Compiling and Running = |
Um texto é constituído por palavras. Quando o texto é apresentado, através do método render, cada palavra pode aparecer sem qualquer modificação de aspecto (utiliza-se o método render correspondente). É ainda possível modificar dinamicamente o aspecto das palavras, permitindo que sejam apresentadas em negrito, itálico, sublinhado, ou em combinações variadas (e.g. negrito e itálico ou itálico sublinhado, etc.). No entanto, a apresentação é sempre realizada da mesma forma (sempre através do método render).
Além de apresentável graficamente, um texto pode ser convertido numa cadeia de caracteres, contendo a sua informação textual (String). Esta operação é realizada através do método text (invocado sobre cada um dos elementos designados acima).
Implemente as classes que permitem representar o texto completo, as palavras, respectivas modificações gráficas. Implemente ainda uma aplicação que ilustre o comportamento. Represente as características gráficas da seguinte forma:
A solução apresentada abaixo não contempla o método text. Deixa-se como exercício para o leitor.
Este diagrama corresponde às classes abaixo definidas. Note-se queo método render está declarado em todas as classes. Não foi representado em algumas por simplicidade.
Diagrama de classes |
---|
Esta interface representa um item textual genérico, formatado ou não.
Ficheiro TextItem.java |
---|
<java5> public interface TextItem { /** * Text items can be rendered. * * @return rendered text item. */ String render(); } </java5> |
A text span contains some text.
Ficheiro TextSpan.java |
---|
{{{2}}} |
The abstract format (root class for other formatting items). A text format may be applied to any text item.
Ficheiro TextFormat.java |
---|
{{{2}}} |
Bold format.
Ficheiro Bold.java |
---|
<java5> public class Bold extends TextFormat { /** * @param textItem the text item to format. */ public Bold(TextItem textItem) { super(textItem); } /** * @see TextItem#render() */ @Override public String render() { return "" + super.render() + ""; } } </java5> |
Italic format.
Ficheiro Italic.java |
---|
<java5> public class Italic extends TextFormat { /** * @param textItem the text item to format. */ public Italic(TextItem textItem) { super(textItem); } /** * @see TextItem#render() */ @Override public String render() { return "" + super.render() + ""; } } </java5> |
Underline format.
Ficheiro Underline.java |
---|
<java5> public class Underline extends TextFormat { /** * @param textItem the text item to format. */ public Underline(TextItem textItem) { super(textItem); } /** * @see TextItem#render() */ @Override public String render() { return "" + super.render() + ""; } } </java5> |
Simple demo application.
Ficheiro App.java |
---|
{{{2}}} |