(→Exemplo) |
(→Interfaces) |
||
Line 25: | Line 25: | ||
Além dos aspectos acima, cada obra é classificada com uma ou mais interfaces, sendo o seu comportamento definido por elas. | Além dos aspectos acima, cada obra é classificada com uma ou mais interfaces, sendo o seu comportamento definido por elas. | ||
− | + | <span style="font-weight: bold;">interface</span> Folheável { | |
+ | <span style="color: #800000;">void</span> <span style="color: #000080;">folhear</span>(); | ||
+ | } | ||
+ | |||
+ | <span style="font-weight: bold;">interface</span> LegÃvel { | ||
+ | <span style="color: #800000;">void</span> <span style="color: #000080;">ler</span>(); | ||
+ | } | ||
+ | |||
+ | <span style="font-weight: bold;">interface</span> Rodopiável { | ||
+ | <span style="color: #800000;">void</span> <span style="color: #000080;">rodopiar</span>(); | ||
+ | } | ||
Estas interfaces não são realmente utilizadas para os aspectos de criação dos objectos, mas permitem ilustrar a utilização de código especÃfico em conjunto com código genérico. | Estas interfaces não são realmente utilizadas para os aspectos de criação dos objectos, mas permitem ilustrar a utilização de código especÃfico em conjunto com código genérico. |
Material correspondente à aula 30.
Neste exemplo, apresenta-se a criação dinâmica de objectos de um determinado tipo, a partir de uma descrição textual desses objectos.
Considere-se o ficheiro obras.txt, contendo descrições de DVDs (tÃtulo e realizador) e de Livros (tÃtulo, autor e ISBN):
DVD:Era uma vez na amadora:Fernando Fonseca DVD:Lumiar selvagem:Pedro Fonseca Livro:A arte de sobreviver no 36:Joao Fonseca:1234567890 Livro:Bairro alto e o budismo zen:Zun Tse Fonseca:1234567891 DVD:48 horas para o exame:Orlando Fonseca Livro:Lux e o insucesso escolar - Uma visao matematica:Carlos Alberto Fonseca:1234567892
A ideia da aplicação que se descreve de seguida é a leitura de cada linha como se da criação de um objecto se tratasse. Assim, o primeiro campo (os campos são separados por ":") define a classe do objecto e os restantes campos são passados como argumentos ao constructor da classe. Pretende-se ainda que a implementação seja suficientemente flexÃvel para que resista à utilização de descrições erradas ou de descrições de objectos desconhecidos.
Além dos aspectos acima, cada obra é classificada com uma ou mais interfaces, sendo o seu comportamento definido por elas.
interface Folheável { void folhear(); }
interface LegÃvel { void ler(); }
interface Rodopiável { void rodopiar(); }
Estas interfaces não são realmente utilizadas para os aspectos de criação dos objectos, mas permitem ilustrar a utilização de código especÃfico em conjunto com código genérico.
A classe de base de todas as entidades a criar é Obra. Esta classe, por um lado, impõe à s suas subclasses a definição do método processa e, por outro, recorrendo a uma fábrica simples que, fazendo uso de informação de tipos em tempo de execução, permite criar instâncias das suas subclasses, de acordo com uma descrição passada como argumento (cria).
CLASSE Obra
Note-se o tratamento de várias excepções, em particular, o tratamento da excepção ClassNotFoundException, que tem, neste contexto especial, um significado para a aplicação algo distinto do habitual.
Note-se ainda o tratamento de InvocationTargetException, que permite lidar com as excepções especÃficas do constructor da obra em causa (exception chaining).
CLASSE DVD
CLASSE Livro
Esta aplicação lê o ficheiro de obras (propriedade obras) e processa cada linha, criando os objectos correspondentes. Depois de lidas, as obras são processadas (uniformemente).
CLASSE Teste
A saÃda da aplicação de teste é a que se apresenta. Note-se a ordem de carregamento das classes.
% java -Dobras=obras.txt Teste Carregamento da classe Obra Carregamento da classe DVD DVD:Era uma vez na amadora:Fernando Fonseca DVD:Lumiar selvagem:Pedro Fonseca Carregamento da classe Livro Livro:A arte de sobreviver no 36:Joao Fonseca:1234567890 Livro:Bairro alto e o budismo zen:Zun Tse Fonseca:1234567891 DVD:48 horas para o exame:Orlando Fonseca Livro:Lux e o insucesso escolar - Uma visao matematica:Carlos Alberto Fonseca:1234567892 **************** RODOPIAR DVD:Era uma vez na amadora:Fernando Fonseca LER DVD:Era uma vez na amadora:Fernando Fonseca RODOPIAR DVD:Lumiar selvagem:Pedro Fonseca LER DVD:Lumiar selvagem:Pedro Fonseca FOLHEAR Livro:A arte de sobreviver no 36:Joao Fonseca:1234567890 LER Livro:A arte de sobreviver no 36:Joao Fonseca:1234567890 FOLHEAR Livro:Bairro alto e o budismo zen:Zun Tse Fonseca:1234567891 LER Livro:Bairro alto e o budismo zen:Zun Tse Fonseca:1234567891 RODOPIAR DVD:48 horas para o exame:Orlando Fonseca LER DVD:48 horas para o exame:Orlando Fonseca FOLHEAR Livro:Lux e o insucesso escolar - Uma visao matematica:Carlos Alberto Fonseca:1234567892 LER Livro:Lux e o insucesso escolar - Uma visao matematica:Carlos Alberto Fonseca:1234567892