DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


artigo sql magazine 48 - Decorando objetos

Artigo da revista SQL Magazine edição 48.

Esse artigo faz parte da revista SQL Magazine edição 48. Clique aqui para ler todos os artigos desta edição

 

Projeto

Decorando objetos

 

No artigo anterior - Objetos também são hospitaleiros - desenvolvemos um renderizador de provas para a empresa ABC. Para cada renderizador criamos um objeto que visitava todos os elementos da estrutura da prova acumulando conhecimentos. O visitante acrescia regras de negócio e comportamentos aos objetos visitados dinamicamente e o melhor, sem que o visitado precisasse ser alterado. Para tornar isso possível foi necessário abordarmos alguns princípios de orientação a objetos e o padrão Visitor. Vale apena conferir.

Nesse artigo daremos continuidade à série de padrões de projetos. Dessa vez vamos aprender técnicas de decoração de objetos.

É importante ressaltar que embora estejamos utilizando Java para exemplificar códigos, essas técnicas são extensíveis a quase todas as linguagens orientadas a objetos.

Será considerado que o leitor possui alguma noção de orientação a objetos, Java e HTML.

Utilizaremos um exemplo didático para demonstrar o funcionamento das técnicas de decoração, mas esse exemplo, apesar da sua simplicidade, é poderoso e poderá ser entendido e melhorado para uso em sistemas reais.

O problema

Recebemos uma encomenda especial do nosso cliente. A Design W3 precisa gerar páginas HTML respeitando dois requisitos abrangentes: simplicidade e flexibilidade. A simplicidade se refere à criação e manutenção dessas páginas HTML. A flexibilidade se refere à criação e manutenção dos componentes (elementos da página, tais botões, labels, textos, dentre outros).

A solução

Vamos partir da seguinte idéia, precisamos criar componentes em Java que representem os componentes HTML. Para simplificar vamos criar somente as seguintes classes: Button, CheckBox, Div e Fieldset. Como todas essas classes são componentes, criaremos uma classe genérica que as representem, conforme mostra a Listagem 1.

 

Listagem 1. Implementação da classe Componente

public abstract class Componente {

 

public abstract String getHTML();

        

         public String toString() {

                   return getHTML();

         }

}

 

A classe da Listagem 1 tem como propósito generalizar nosso conceito de componente, ou seja, classes como Button, Checkbox e outras deverão herdar de Componente que, por sua vez, possui apenas um método abstrato, o getHTML(). Esse método é o serviço que gera o HTML de um componente específico, por isso ele precisa ser implementado na subclasse, pois somente ela sabe como se desenhar.

O método toString() foi sobrecarregado de modo a retornar o HTML do componente.

A Listagem 2 demonstra o código dos componentes específicos.

 

Listagem 2. Implementação dos componentes"



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Publicidade
Autor
Fabio Santiago

Fabio Santiago tem 28 anos, formado em Análise de Sistemas pela UNIFOR. É certificado SUN (SCJP). Atualmente é Consultor Web independente, e Engenheiro de Software do Instituto Atlântico pela IVIA. Foi Engenheiro de Sistemas do C.E.S.A.R (Centro de Estudos e Sistemas Avançados do Recife) para p...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03