Série DesignPattern: Template Method

Olá Pessoal,

Mais um post da série “Design Pattern: Não é receita de bolo” e hoje vamos conhecer um padrão comportamental chamado de Template Method. Ele é bem simples, na verdade até usamos ele, mas nem nos damos conta. Porém, a ideia não é só implementar e sim saber o motivo da implementação, é entender de fato a ideia do padrão. No post de hoje vamos ver mais um exemplo prático. Vou usar Contas Bancárias como exemplo.

Lets go…

Template Method

É um padrão do tipo comportamental que define a ordem na qual determinados passos devem ser realizados na resolução do problema. Porém esses passos podem ser realizados de forma diferentes.

Exemplo no Mundo Real (tosco + válido)

Para caminhar é preciso dar um passo para frente primeiro, isso é a ordem definida pelo sistema do corpo humano. Porém, a forma que daremos esse passo pode ser diferente de acordo com cada pessoa.

Outro Exemplo: um banco tem vários tipos de conta: universitária, corrente, poupança, digital etc. Para cada tipo de conta o banco cobra uma taxa diferente, mas independente o tipo de conta o cliente precisa depositar e sacar dinheiro.

O template method é baseado em métodos abstratos que serão implementados por classes concretas. No diagrama a seguir podemos ver:

 

Simples, não? Acredito que você já deve desenvolvido alguma classe nesse contexto.

Praticando

Vamos praticar e ver as coisas acontecendo à nível de código. A seguir criaremos a nossa classe abstract que tem o template method, que nada mais é que um método abstract:

Conta.java

package br.com.camilolopes.templatemethod;

/*

* classe que temos template method baseados

* em métodos abstratos

*/

public abstract class Conta {

private double saldo;

public void deposita(double valor){

saldo = valor;

}

public void saque(double valor){

saldo -=valor;

saldo -=this.taxaConta();

}

//cadacontatemumataxadiferente

public abstract double taxaConta();

public double getSaldo() {

return saldo;

}

}

Agora criaremos a classe Corrente e Poupança:

Corrente.java

package br.com.camilolopes.classes;

import br.com.camilolopes.templatemethod.Conta;

public class Corrente extends Conta {

@Override

public double taxaConta() {

return 0.1;

}}

Poupanca.java

package br.com.camilolopes.classes;

import br.com.camilolopes.templatemethod.Conta;

/*

* classe que implementa o método abstract que sao utilizados pelos templates methods

*/

public class Poupanca extends Conta {

@Override

public double taxaConta() {

return 0.5;

}

}

Para testarmos, vamos criar a classe com método main e verificar se para cada tipo de conta as taxas foram cobradas corretamente:

ContaMain.java

package br.com.camilolopes.main;

import br.com.camilolopes.classes.Corrente;

import br.com.camilolopes.classes.Poupanca;

public class ContaMain {

public static void main(String[] args) {

Corrente corrente = new Corrente();

corrente.deposita(100.00);

corrente.saque(10.00);

System.out.println(“Saldo em conta corrente ” + corrente.getSaldo());

Poupanca poupanca = new Poupanca();

poupanca.deposita(100.00);

poupanca.saque(10.00);

System.out.println(“Saldo em Poupança ” + poupanca.getSaldo());

}

}

Agora é só rodar para ver o resultado.

Resultado

A seguir temos o resultado no console:

É isso ai pessoal, nada mais que isso para o padrão template method. Muito simples, né? Porém a ideia é  pegar o conceito principal do padrão e analisar com o problema que você tem e ver se ele se enquadra.

 Vou ficando por aqui. Espero que tenham gostado do post.

Abraços, see ya!!

Resultado sorteio livro: Construindo App JEE c/ frameworks


Olá Pessoal,

Acabou de sair do forno o resultado de quem vai levar o livro “Construindo aplicações JEE com frameworks”. Usando o random.org para geração do número o ganhador foi o Luiz Henrique nro 109.

rangom.org

O número inicial é a partir de 2, já que a linha 1 é dedicada para coluna do form. O ganhador receberá um e-mail dentro de 24hrs solicitando informações de envio e confirmação dos dados. O mesmo tem até 48hrs para responder o e-mail a partir da data de recebimento. Caso contrário, farei um novo sorteio.

Não posso deixar de agradecer a todos aqueles que participaram do sorteio e fizeram vários RT. Fiquei muito feliz!! 🙂

abraços, see ya!!

Eclipse Helios + TomCat Ubuntu

olá Pessoal,

Neste post mostarei como instalar o Eclipse Helios e o TomCat 7 no Ubuntu, apesar que eu tenho outros posts parecidos, mas depender da distribuição ou versão dos software a serem instalados, alguns passos podem sofrer alterações. O objetivo aqui é mostrar para quem tem interesse em ter um cenário com Linux para ambiente de desenvolvimento com Java na plataforma JEE. Eu particulamente não uso o Windows como ambiente de desenvolvimento há algum tempo e não consigo mais usar o sistema do Tio Gates para esse fim. As vantagens já conhecemos, porém quero destacar que conheço muitos programadores que já tentou, mas antes da primeira semana retornou ao Windows, por questão de zona de conforto. Confesso que passei por isso, e retornei varias vezes para esta “zona”, porém chegou um dia a superação foi fator decisivo, quando fui trabalhar em uma empresa onde o uso do Linux era default. Daí fiquei no beco sem saída e sair de lá com “mal hábito”, hoje pode dizer que eu e o pinguim somos já amigos, não grande amigos, porém amigos. Vamos deixar de papo e ir para o que importa rs.

Lets go…

Post Recomendado

Para instalar o Eclipse Helios no Ubuntu sem complicação, você vai no url a seguir e faz o download com base se seu ambiente é 32-bits ou 64.

http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/heliossr1

após o download ter concluído, normalmente ele vai para a pasta de Downloads caso esteja usando o Firefox.

Antes de mais nada vamos dar permissão 755 para o arquivo ainda zipado então digite:

sudo chmod 755 eclipse-jee-helios-SR1-linux-gtk.tar.gz

Ele estava assim:

Vamos descompactar o arquivo, normalmente eu coloco /opt, porem você pode escolher o diretorio de sua preferencia. Para descompactar é bem simples, caso não goste de executar comandos, faça como você faz no Windows, botão direito e mande extrair.

Se preferir segue o comando:

sudo tar xvfz eclipse-jee-helios-SR1-linux-gtk.tar.gz -C /opt

Antes de darmos a permissão vamos criar um link (atalho) para o Eclipse, no diretorio /usr/bin. Digite, os comandos abaixo:

Quando o gedit abrir insira deixe conforme a imagem a seguir:

Dando a permissao para executar o arquivo “eclipse” que acabamos de criar: sudo chmod 755 /usr/bin/eclipse

Agora vamos criar um link simbolico para o menu de Applications do Ubuntu, digite:

sudo gedit /usr/share/applications/eclipse.desktop

E configure seu arquivo semelhante à imagem abaixo, a diferença vai estar no arquivo imagem PNG que gera o icone, que depender da versão que baixou, o diretorio pode mudar de nome, verifique navegando pela pasta do eclipse e atualize:

Abrindo o eclipse e escolha seu workspace, pode ser o padrao

Clique em OK para abrir o Eclipse.

Já podemos trabalhar com ele, e fazer nossos projetos Java Project uma vez que já temos o Java Instalado. Mas, vamos precisar do TomCat para nossos Projetos JEE. Então vamos instalar o TomCat direto do Eclipse.

TomCat no Eclipse

Para instalar o TomCat é muito simples, vamos pegar a versão mais recente, que será o TomCat 7. Você pode ir no site do TomCat e baixar o arquivo e descompactar ou usar o comando wget para fazer o download diretamente, veja:

wget http://ftp.unicamp.br/pub/apache/tomcat/tomcat-7/v7.0.5-beta/bin/apache-tomcat-7.0.5.tar.gz

O link direto é esse: http://tomcat.apache.org/download-70.cgi no final das contas vai dar no mesmo, se reparar o link la no site do TomCat vai apontar para o link do wget acima.

Faça o mesmo processo que fizemos com o Eclipse, dê a permissão 755 para o arquivo ainda zipado, depois descompacte o arquivo e em seguida mova ele para o diretorio /opt

Vamos mudar de nome para ficar melhor para trabalhar digite:

sudo mv /opt/apache-tomcat-7.0.5/ /opt/tomcat7.0.5

Agora vamos atribuir que o dono do grupo será o meu usuario camilo, então digite:

sudo chown -R camilo /opt/tomcat7.0.5/

E agora vamos dar permissao para execução dos scripts do TomCat:

sudo chmod +x /opt/tomcat7.0.5//bin/*.sh

Vá para o Eclipse, e em Windows ==> Preferences.

E clique em server, conforme a imagem a seguir:

Clique em Add a direita e escolha o Tomcat 7:

E em seguida informe o local de instalação do TomCat deixando conforme a imagem a seguir:

Agora vamos criar um projeto JEE, para ver se funciona de fato. Veja,:

Dê o nome ao seu projeto, e clique em next até finish. Veja o que o Eclipse já encontrou o Tomcat.

Crie um arquivo index.jsp em WebContent, como a seguir:

Na parte inferior clique em Server, e em seguida dê dois cliques no servidor:

A tela que abre escolha, conforme abaixo:

Salve e execute o projeto JEE:

E deve obter a seguinte tela:

Clique em next até finish.

Assim acabamos de montar nosso ambiente JEE com TomCat 7 no Ubuntu/Linux, desta vez com OpenJDK.

Espero que tenham gostado do post, apesar de grande, é bem fácil e rapido instalar/configurar o ambiente.

abracos see you next post!!

Instalando OpenJDK no Ubuntu

olá Pessoal,

Depois de um curto tempo de off (ferias), estou de volta, com baterias recarregadas.  O primeiro post  do ano, será sobre a instalação e configuração do OpenJDK no Ubuntu, eu sempre tive vontade, de usar o “pinguim” como ambiente de desenvolvimento default, cheguei usar por algumas semanas, mas depois acabava voltando para o Windows, pois  a maioria dos projetos ja estavam no Windows, mais que 50% e isso forçava eu  usar o Windows como default, porem quando fui trabalhar na 4Linux, tive que tirar isso, pois era so Linux, e fiquei “mal-acostumado” e hj ja migrei todo meu ambiente de desenvolvimento e projetos TI para o Linux. E escolhi o Ubuntu como distribuição. Se vc está começando ou querendo usar o Linux como ambiente de desenvolvimento aproveite o post e veja como é fácil instalar o OpenJDK e ter o Java rodando na sua maquina.Aproveitei e relacionei com outros posts que ja fiz com Linux, em outros momentos aqui no blog.

lets go…

Requisitos

Outros posts interessantes

Há outros posts interessantes na categoria Linux do blog, visite.

Instalando Java Ubuntu

Instalando MySQL

Iniciando Instalação

A seguir teremos os passos como instalar. Preste bastante atenção antes de executar, estamos certo que todos os passos descritos aqui atingiremos o objetivo final.

abra o terminal

digite o comando abaixo para instalação do openJDK, você precisa usar o comando sudo

Aperte a tecla enter e responda com y ou deixe em branco apertando enter e aguarde a instalação

Ao termino vamos verificar o java instalado, digitando o comando java -version

Agora vamos fazer, um “Hello World” somente para ter certeza que o Java está compilando nossos arquivos .java. Para isso abra um editor de texto, pode ser o VIM, ou o gedit. Vou usar o gedit que está Applications ==> Acessories ==> gedit. Abaixo segue meu codigo no gedit:

Feito, isso salve na pasta do usuário, para saber onde está esta pasta basta digitar pwd . Observe que a minha está em /home/meu_nome, a sua deve ser semelhante com o seu nome.

Se você dar o comando ls veremos os arquivos que estão nesta, pasta e um deles é o HelloOpenJDK.java veja:

Vamos compilar e executar: javac HelloOpenJDK.java e java HelloOpenJDK

Lembre-se que o Linux faz diferença entre maiusculo e minusculo, então ao dar o auto-complete para o arquivo tenha certeza digitou a primeira letra conforme foi salvo.

Se listar verá o .class:

Executando agora:

Pronto! Assim temos o Java – OpenJDK instalado na máquina em um ambiente Ubuntu/Linux.

Espero que tenham gostado.

Abracos

Problem project facet java version 6.0 Eclipse

Olá Pessoal,

Hoje vou falar de um pequeno problema que tive com o Eclipse & Facet, foi uma experiencia meia chata, pois gastei horas. Tive que fazer uma migração de máquina, e lá vai eu instalar todo ambiente de desenvolvimento no novo laptop. Preparar o ambiente é rápido e fácil, porem os problemas começam quando começamos a importar os projetos para o Eclipse. Então neste post vou apresentar um probleminha que tive e tirou meu sossego e acho que alguem pode passar um dia, então terá a solução…

Lets go…

A situação

Vc está todo feliz, pois já instalou o seu servidor (no meu caso tomcat 6), java JDK, banco de dados, IDE (eclipse), Jboss tools instalado e agora quer importar os projetos para o “novo” Elipse. Faz a devida importação do projeto , porem ao tentar rodar recebe a mensagem a seguir:

project facet java version 6.0 is not supported

erroreclipsetom

Ai vc louco,perdido, desesperado:

– remove o TomCat e reinstala

– cria um novo workspace e testa um projeto novo e tudo funciona, menos com o projeto que foi importado

– ver configurações de variáveis de ambiente etc

Mas nada de funcionar. E aonde está o problema?

Solução

Bem, o problema é que precisa configurar o projeto para JDK 1.5 e o facet também para a versão Java 5. Para isso, clique com o botão direito no projeto >> Properties e deixe conforme a imagem abaixo:

facetjava5

Observe que mudei em Project Facets a version do Java para 5. E verifique se o Java Compiler está a versão 1.5. Salve e teste o projeto.

Vou ficando por aqui, espero que tenham gostado da dica.

Abracos, see you!!