SlideShare uma empresa Scribd logo
1 de 61
Desenvolvendo para WEB com JAVA
Quem somos? Ricardo Ribeiro Rufino Bacharel em Sistemas de Informação (UNIPAR 2010) Pós-graduando em Des. de Sistemas OO em Java (CESUMAR) Willian Magalhães Bacharel em Sistemas de Informação (UNIPAR 2007) Especialista em Des. de Sistemas para WEB (UEM 2010)
INTRODUÇÃO
O que é Java? Uma linguagem de programação orientada à objetos multiplataforma, criada na década de 90 pela Sun Microsystems e atualmente é mantida pela Oracle.
Plataformas Java SE – Java Standard Edition Java EE – Java Enterprise Edition Java ME – Java Micro Edition
Conceitos básicos JRE – Java RuntimeEnviroment (APIs + JVM) JVM – Java Virtual Machine JDK – Java Developer Kit (compilador + bibliotecas) Bytecode Bytecode JAVA Classe JAVA Compilador JAVA JVM Sistema Operacional
PRIMEIRO PROGRAMA
Primeiro programa curso.app.Primeiro.java publicclass Primeiro { publicstaticvoidmain(Stringargs[]) { System.out.println(“Meu primeiro programa”);    } }
Variáveis curso.entidades.Gente.java publicclass Gente { privateString nome; privateint idade; } Primitivas (valor namemória) - boolean, char, int, long, float, double Referência(endereço de memória) - Boolean, Character, String, Integer, Long, Float, Double
ENCAPSULAMENTO
Encapsulamento curso.entidades.Gente.java ... publicvoidsetNome(String nome) { this.nome = nome;    } publicStringgetNome() { returthis.nome;    } ... Default (mesmopacote) Public   (qualquerum acessa) Private ( somentedentro da classe - getters / setters)
Encapsulamento curso.app.Principal.java publicclass Principal { publicstaticvoidmain(String[] args) {       Gente g = new Gente(); g.setNome("Willian"); g.setIdade(10); System.out.printf("Olá %s, você tem %d anos de idade.", g.getNome(), g.getIdade());     } }
HERANÇA
Herança curso.entidades.Torcedor.java publicclass Torcedor extends Gente { privateString time; publicvoidsetTime(String time) { this.time = time;    } publicStringgetTime() { returnthis.time;    } }
Herança curso.app.Principal.java publicclass Principal { publicstaticvoidmain(String[] args) {       Torcedor t = new Torcedor(); t.setNome("Willian"); t.setTime(“ACP"); System.out.printf("%s é torcedor do time %s.", t.getNome(), t.getTime());             } }
REESCRITA
Reescrita curso.entidades.Acpiano.java publicclassAcpianoextends Torcedor { publicvoidsetTime(String time) { this.time = “ACP”;    } } Mesmaassinatura no método
Reescrita curso.app.Principal.java publicclass Principal { publicstaticvoidmain(String[] args) { Acpiano a = new Acpiano(); a.setTime(“Cianorte"); System.out.printf("%s é meu time.", t.getTime());             } }
SOBRECARGA
Sobrecarga curso.entidades.Gente.java ...   // novo método publicvoidsetNome(String nome, String sobrenome) { this.nome = nome + " " + sobrenome; } ... Assinaturadiferente no método
Sobrecarga curso.app.Principal.java publicclass Principal { publicstaticvoidmain(String[] args) {       Gente g = new Gente(); g.setNome("Willian", "Magalhães"); System.out.printf("Meu nome: %s.", g.getNome());        } }
POLIMORFISMO
Polimorfismo curso.entidades.Gente.java ... publicvoiddormir() { System.out.println(“GENTE dormindo zzz...");    } ...
Polimorfismo curso.entidades.Homem.java publicclassHomem extends Gente { publicvoid dormir() { System.out.println(“HOMEM dormindo zzz..."); } }
Polimorfismo curso.entidades.Mulher.java publicclassMulher extends Gente { publicvoid dormir() { System.out.println(“MULHER dormindo zzz..."); } }
Sobrecarga curso.app.Principal.java publicclass Principal { publicvoidfazerDormir( Gente gente ) { gente.dormir();    } publicstaticvoidmain(String[] args) { 	Principal p = new Principal(); p.fazerDormir( new Gente() ); p.fazerDormir( new Homem() ); p.fazerDormir( new Mulher() ); } }
CONTROLE DE FLUXO
If-Else curso.fluxo.IfElse.java ... int idade = 15; booleanamigoDoDono = true; if (idade >= 18 || amigoDoDono == true) { System.out.println(“Pode entrar”);    } else { System.out.println(“Não pode entrar”);    } ...
Switch curso.fluxo.Switch.jSwitchava 1/2 ... int nota = 4;    switch (nota / 10) {       case 10 : System.out.println("ÔÔÔ NERD! :)");          break;       case 9 : System.out.println("Ótimo.");          break;       case 8 : System.out.println("Bom.");          break;
Switch curso.fluxo. Switch.java 2/2       case 7 : System.out.println("Pode ser melhor que isso.");          break;       case 6 : System.out.println("UFAA! quase, quase einn...");          break;                           default : System.out.println("Ihh, faiô! :(");          break;                        } ...
While curso.fluxo.While.java ... int idade = 14; while (idade < 18) {  System.out.printf("Com %d eu sou de menor.", idade);       idade++;    } System.out.printf("Com %d eu sou de MAIOR.", idade); ...
Do...While curso.fluxo.While.java ... int contador = 5;    do { System.out.println(contador + " - tuuuuuu...");       contador--;    } while ( contador > 0); ...
For curso.fluxo.For.java ...    for (int i = 1; i <= 10; i++) { System.out.println("Tabuada do " + i);       for (int j = 1; j <= 10; j++) { System.out.println(i + " X " + j + " = " + (i * j));       }    } ...
Controlando loops curso.fluxo.For.java ... intparaNaTabuadaDo = 3;    for (int i = 1; i <= 10; i++) { System.out.println("Tabuada do " + i);       for (int j = 1; j <= 10; j++) { System.out.println(i + " X " + j + " = " + (i * j));       } if (i == paraNaTabuadaDo) {          break;       } }
ARRAYS E COLEÇÕES
Arrays curso.arrays.Array.java ...    Torcedor[] torcida = new Torcedor[3];    Torcedor t = new Torcedor(); t.setNome("Carlos");    torcida[0] = t; System.out.println(torcida[0].getNome());    torcida[1] = new Torcedor();    torcida[1].setNome("Juca"); System.out.println(torcida[1].getNome()); ... Torcedor Torcedor null nomeCarlos nomeCarlos torcedores
Percorrendo Arrays curso.arrays.Array.java ...    // fixa    for (int i = 0; i < 3; i++) { System.out.println(torcida[i].getNome());    }    // dinâmica    for (int j = 0; j < torcida.length; j++) { System.out.println(torcida[j].getNome());    } ...
Collections framework Utilizando arrays - Não podemos redimensionar um array (falta de espaço) - É impossível buscar um item diretamente quando não sabemos o índice - Não conseguimos saber quantas posições já foram ou estão populadas (sem métodos auxiliares) API Collections - Possuí estruturas avançadas que facilitam o manuseio das informações
Listas curso.entidades.Listas1.java ... ArrayList nomes = new ArrayList(); nomes.add("Juca"); nomes.add("Carlos");    for (int i = 0; i < nomes.size(); i++) { System.out.println(nomes.get(i));    }if(nomes.contains("Carlos")) { System.out.println("tem");    } else { System.out.println("não tem");    } ... ArrayList NÃO é um Array
Listas com Generics curso.entidades.Listas1.java ...    Torcedor t1 = new Torcedor();    t1.setNome("Juca");    Torcedor t2 = new Torcedor();    t2.setNome(“Carlos"); List<Torcedor> torcedores = new ArrayList<Torcedor>(); torcedores.add(t1); torcedores.add(t2);    for (int i = 0; i < torcedores.size(); i++) { System.out.println(torcedores.get(i).getNome());    } ...
PERSISTÊNCIA
Persistência JDBC (Java DatabaseConnectivity) - Generaliza a interface com os bancos de dados Aplicação JAVA JDBC API JDBC Driver Manager JDBC Driver JDBC Driver JDBC Driver MYSQL Postgres Oracle
Persistência Exemplo: JDBC (livraria) - SQL Injection - Fábrica de conexões
Persistência JPA2 e Hibernate - Problemas - Múltiplas sintaxes da linguagem SQL     - Orientação à Objetos x Modelo Entidade Relacionamento - Ferramentas ORM (ObjectRelationalMapper)     - JPA (Java Persistente API) – especificação / visa padronizar     - Hibernate – framework ORM
Persistência Exemplo: JPA2-Hibernate (livraria) - Notações  (principais)   - @Entity – indica que se a classe será persistida no banco        Aplicação antes da declaração da classe  - @Id – indica atributo como chave primária        Aplicação antes da declaração do atributo   - @GeneratedValue – indica que o atributo é auto-increment        Aplicação depois do @Id        @GeneratedValue(strategy= GenerationType.AUTO)
Persistência - @Table – indica o nome da tabela (antes do @Entity)        Aplicação antes do @Entity        @Table(name="Publisher")  - @Column – indica um nome para o atributo e algumas restrições        Aplicação antes da declaração do atributo        @Column(name="publisher_name", nullable=false)   - @Transient – in	dica qual atributo não serão mapeados para colunas        Aplicação antes da declaração do atributo
WEB
Entendendo a WEB Internet Usuário Servidor
Servidor Web Container - Fornece recursos necessários para a interação Web     - Envio e recebimento de mensagens HTTP     - Acesso simultâneo - Tomcat e Jetty Servidores de aplicação - JBoss, Glassfish, WebSphere
Conteúdo Servlets ou JSP Frameworks - JSF - Struts - Spring
JSF
O framework Agilidade Componente prontos XHTML ManagedBeans Class Java Facelets Componentes visuais BD
O framework Exemplo: Loteria
Componentes visuais Componentes visuais - Facilitam nossa vida - Variedades de componentes em sua especificação - Arquitetura de componentes visuais JSF permite criação de novos     - PrimeFace (http://www.primefaces.org/) - RichFaces (http://www.jboss.org/richfaces)
Componentes visuais Exemplo: ComponentesVisuais
Navegação Navegação estática implícita    - nome da página Navegação estática explicita    - faces-config.xml Navegação dinâmica implícita    - Bean retorna nome da página Navegação dinâmica explicita    - Beanretora nome (faces-config.xml)
Navegação Exemplo: Navegação
Bibliografia LIVROS - Java como Programar SITES ,[object Object]
http://www.caelum.com.br/apostilas/
http://www.k19.com.br/,[object Object]
Contatos Ricardo Rufino E-mail/MSN: ricardo.rufino@yahoo.com.br Willian Magalhães E-mail/MSN: will_magalhaes@yahoo.com.br

Mais conteúdo relacionado

Mais procurados

Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dadosSérgio Souza Costa
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVACristiano Almeida
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaCharles Jungbeck
 
Java basico modulo_03
Java basico modulo_03Java basico modulo_03
Java basico modulo_03wammendes
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)Mario Sergio
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysLoiane Groner
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetrosMaurício Linhares
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
Curso de Java (Parte 1)
Curso de Java (Parte 1)Curso de Java (Parte 1)
Curso de Java (Parte 1)Mario Sergio
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Programação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IProgramação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IFabio Moura Pereira
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Natanael Fonseca
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 
Regras de Produção: o Motor de Inferência JESS
Regras de Produção:o Motor de Inferência JESSRegras de Produção:o Motor de Inferência JESS
Regras de Produção: o Motor de Inferência JESSelliando dias
 

Mais procurados (20)

Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dados
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Fundamentos de Objetos Remotos
Fundamentos de Objetos RemotosFundamentos de Objetos Remotos
Fundamentos de Objetos Remotos
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Java basico modulo_03
Java basico modulo_03Java basico modulo_03
Java basico modulo_03
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Aula05
Aula05Aula05
Aula05
 
Curso de Java (Parte 1)
Curso de Java (Parte 1)Curso de Java (Parte 1)
Curso de Java (Parte 1)
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Java 14
Java 14Java 14
Java 14
 
Programação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IProgramação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte I
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
Regras de Produção: o Motor de Inferência JESS
Regras de Produção:o Motor de Inferência JESSRegras de Produção:o Motor de Inferência JESS
Regras de Produção: o Motor de Inferência JESS
 

Destaque

Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013Daniel Rehn
 
Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?iniciativaverds
 
Presentació assamblea
Presentació assamblea Presentació assamblea
Presentació assamblea FC Barcelona
 
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013Daniel Rehn
 
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & ShipmanDominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipmanjonesshipman
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáZarathon Maia
 
Atelier agile 2009_09_27
Atelier agile 2009_09_27Atelier agile 2009_09_27
Atelier agile 2009_09_27domidp
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaManuel Menezes de Sequeira
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013Daniel Rehn
 
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2dmc digital media center GmbH
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tFrancois Ostyn
 
Lean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanbanLean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanbanJulien Fallet
 
Otimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxOtimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxElton Minetto
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPelliando dias
 
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung IICampus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung IIDaniel Rehn
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.MongoDB
 

Destaque (20)

Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
 
Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?
 
Presentació assamblea
Presentació assamblea Presentació assamblea
Presentació assamblea
 
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
 
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & ShipmanDominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc Quixadá
 
Einführung in SCRUM
Einführung in SCRUMEinführung in SCRUM
Einführung in SCRUM
 
Tutorialphpmyadmin
TutorialphpmyadminTutorialphpmyadmin
Tutorialphpmyadmin
 
Atelier agile 2009_09_27
Atelier agile 2009_09_27Atelier agile 2009_09_27
Atelier agile 2009_09_27
 
NotORM
NotORMNotORM
NotORM
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
 
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@t
 
Lean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanbanLean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanban
 
Otimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxOtimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - Tchelinux
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 
MySQL Query Optimization
MySQL Query OptimizationMySQL Query Optimization
MySQL Query Optimization
 
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung IICampus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
 

Semelhante a Desenvolvendo WEB Java

Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaArthur Emanuel
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaElaine Cecília Gatto
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003elliando dias
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Javaelliando dias
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionaliMasters
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 

Semelhante a Desenvolvendo WEB Java (20)

Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de Java
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Aula5
Aula5Aula5
Aula5
 
Aula 7
Aula 7 Aula 7
Aula 7
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core Java
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Java
 
Aula4
Aula4Aula4
Aula4
 
Java20141219
Java20141219Java20141219
Java20141219
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript Funcional
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
OOP Java
OOP JavaOOP Java
OOP Java
 

Mais de Willian Magalhães

2014 - Desenvolvimento Web - 03 CSS
2014 - Desenvolvimento Web - 03 CSS2014 - Desenvolvimento Web - 03 CSS
2014 - Desenvolvimento Web - 03 CSSWillian Magalhães
 
2014 - Desenvolvimento Web - 01 Introdução
2014 - Desenvolvimento Web - 01 Introdução2014 - Desenvolvimento Web - 01 Introdução
2014 - Desenvolvimento Web - 01 IntroduçãoWillian Magalhães
 
2014 - Desenvolvimento Web - 02 HTML
2014 - Desenvolvimento Web - 02 HTML2014 - Desenvolvimento Web - 02 HTML
2014 - Desenvolvimento Web - 02 HTMLWillian Magalhães
 
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
2014 - Multimídia e Internet - 04 Imagem Digital - BitmapsWillian Magalhães
 
2014 - Multimídia e Internet - 03 Imagem Digital - Vetores
2014 - Multimídia e Internet - 03 Imagem Digital - Vetores2014 - Multimídia e Internet - 03 Imagem Digital - Vetores
2014 - Multimídia e Internet - 03 Imagem Digital - VetoresWillian Magalhães
 
2014 - Multimídia e Internet - 02 Textos
2014 - Multimídia e Internet - 02 Textos2014 - Multimídia e Internet - 02 Textos
2014 - Multimídia e Internet - 02 TextosWillian Magalhães
 
2014 - Multimídia e Internet - 01 Introdução
2014 - Multimídia e Internet - 01 Introdução2014 - Multimídia e Internet - 01 Introdução
2014 - Multimídia e Internet - 01 IntroduçãoWillian Magalhães
 
Curso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLCurso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLWillian Magalhães
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Curso Desenvolvimento WEB com PHP - CSS
Curso Desenvolvimento WEB com PHP - CSSCurso Desenvolvimento WEB com PHP - CSS
Curso Desenvolvimento WEB com PHP - CSSWillian Magalhães
 
Curso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLCurso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLWillian Magalhães
 
Curso Photoshop 2009 - Aula 05
Curso Photoshop 2009 - Aula 05Curso Photoshop 2009 - Aula 05
Curso Photoshop 2009 - Aula 05Willian Magalhães
 
Curso Photoshop 2009 - Aula 04
Curso Photoshop 2009 - Aula 04Curso Photoshop 2009 - Aula 04
Curso Photoshop 2009 - Aula 04Willian Magalhães
 
Curso Photoshop 2009 - Aula 03
Curso Photoshop 2009 - Aula 03Curso Photoshop 2009 - Aula 03
Curso Photoshop 2009 - Aula 03Willian Magalhães
 
Curso Photoshop 2009 - Aula 02
Curso Photoshop 2009 - Aula 02Curso Photoshop 2009 - Aula 02
Curso Photoshop 2009 - Aula 02Willian Magalhães
 
Curso Photoshop 2009 - Aula 01
Curso Photoshop 2009 - Aula 01Curso Photoshop 2009 - Aula 01
Curso Photoshop 2009 - Aula 01Willian Magalhães
 

Mais de Willian Magalhães (16)

2014 - Desenvolvimento Web - 03 CSS
2014 - Desenvolvimento Web - 03 CSS2014 - Desenvolvimento Web - 03 CSS
2014 - Desenvolvimento Web - 03 CSS
 
2014 - Desenvolvimento Web - 01 Introdução
2014 - Desenvolvimento Web - 01 Introdução2014 - Desenvolvimento Web - 01 Introdução
2014 - Desenvolvimento Web - 01 Introdução
 
2014 - Desenvolvimento Web - 02 HTML
2014 - Desenvolvimento Web - 02 HTML2014 - Desenvolvimento Web - 02 HTML
2014 - Desenvolvimento Web - 02 HTML
 
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
 
2014 - Multimídia e Internet - 03 Imagem Digital - Vetores
2014 - Multimídia e Internet - 03 Imagem Digital - Vetores2014 - Multimídia e Internet - 03 Imagem Digital - Vetores
2014 - Multimídia e Internet - 03 Imagem Digital - Vetores
 
2014 - Multimídia e Internet - 02 Textos
2014 - Multimídia e Internet - 02 Textos2014 - Multimídia e Internet - 02 Textos
2014 - Multimídia e Internet - 02 Textos
 
2014 - Multimídia e Internet - 01 Introdução
2014 - Multimídia e Internet - 01 Introdução2014 - Multimídia e Internet - 01 Introdução
2014 - Multimídia e Internet - 01 Introdução
 
Curso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLCurso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTML
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Curso Desenvolvimento WEB com PHP - CSS
Curso Desenvolvimento WEB com PHP - CSSCurso Desenvolvimento WEB com PHP - CSS
Curso Desenvolvimento WEB com PHP - CSS
 
Curso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLCurso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTML
 
Curso Photoshop 2009 - Aula 05
Curso Photoshop 2009 - Aula 05Curso Photoshop 2009 - Aula 05
Curso Photoshop 2009 - Aula 05
 
Curso Photoshop 2009 - Aula 04
Curso Photoshop 2009 - Aula 04Curso Photoshop 2009 - Aula 04
Curso Photoshop 2009 - Aula 04
 
Curso Photoshop 2009 - Aula 03
Curso Photoshop 2009 - Aula 03Curso Photoshop 2009 - Aula 03
Curso Photoshop 2009 - Aula 03
 
Curso Photoshop 2009 - Aula 02
Curso Photoshop 2009 - Aula 02Curso Photoshop 2009 - Aula 02
Curso Photoshop 2009 - Aula 02
 
Curso Photoshop 2009 - Aula 01
Curso Photoshop 2009 - Aula 01Curso Photoshop 2009 - Aula 01
Curso Photoshop 2009 - Aula 01
 

Desenvolvendo WEB Java

  • 2. Quem somos? Ricardo Ribeiro Rufino Bacharel em Sistemas de Informação (UNIPAR 2010) Pós-graduando em Des. de Sistemas OO em Java (CESUMAR) Willian Magalhães Bacharel em Sistemas de Informação (UNIPAR 2007) Especialista em Des. de Sistemas para WEB (UEM 2010)
  • 4. O que é Java? Uma linguagem de programação orientada à objetos multiplataforma, criada na década de 90 pela Sun Microsystems e atualmente é mantida pela Oracle.
  • 5. Plataformas Java SE – Java Standard Edition Java EE – Java Enterprise Edition Java ME – Java Micro Edition
  • 6. Conceitos básicos JRE – Java RuntimeEnviroment (APIs + JVM) JVM – Java Virtual Machine JDK – Java Developer Kit (compilador + bibliotecas) Bytecode Bytecode JAVA Classe JAVA Compilador JAVA JVM Sistema Operacional
  • 8. Primeiro programa curso.app.Primeiro.java publicclass Primeiro { publicstaticvoidmain(Stringargs[]) { System.out.println(“Meu primeiro programa”); } }
  • 9. Variáveis curso.entidades.Gente.java publicclass Gente { privateString nome; privateint idade; } Primitivas (valor namemória) - boolean, char, int, long, float, double Referência(endereço de memória) - Boolean, Character, String, Integer, Long, Float, Double
  • 11. Encapsulamento curso.entidades.Gente.java ... publicvoidsetNome(String nome) { this.nome = nome; } publicStringgetNome() { returthis.nome; } ... Default (mesmopacote) Public (qualquerum acessa) Private ( somentedentro da classe - getters / setters)
  • 12. Encapsulamento curso.app.Principal.java publicclass Principal { publicstaticvoidmain(String[] args) { Gente g = new Gente(); g.setNome("Willian"); g.setIdade(10); System.out.printf("Olá %s, você tem %d anos de idade.", g.getNome(), g.getIdade()); } }
  • 14. Herança curso.entidades.Torcedor.java publicclass Torcedor extends Gente { privateString time; publicvoidsetTime(String time) { this.time = time; } publicStringgetTime() { returnthis.time; } }
  • 15. Herança curso.app.Principal.java publicclass Principal { publicstaticvoidmain(String[] args) { Torcedor t = new Torcedor(); t.setNome("Willian"); t.setTime(“ACP"); System.out.printf("%s é torcedor do time %s.", t.getNome(), t.getTime()); } }
  • 17. Reescrita curso.entidades.Acpiano.java publicclassAcpianoextends Torcedor { publicvoidsetTime(String time) { this.time = “ACP”; } } Mesmaassinatura no método
  • 18. Reescrita curso.app.Principal.java publicclass Principal { publicstaticvoidmain(String[] args) { Acpiano a = new Acpiano(); a.setTime(“Cianorte"); System.out.printf("%s é meu time.", t.getTime()); } }
  • 20. Sobrecarga curso.entidades.Gente.java ... // novo método publicvoidsetNome(String nome, String sobrenome) { this.nome = nome + " " + sobrenome; } ... Assinaturadiferente no método
  • 21. Sobrecarga curso.app.Principal.java publicclass Principal { publicstaticvoidmain(String[] args) { Gente g = new Gente(); g.setNome("Willian", "Magalhães"); System.out.printf("Meu nome: %s.", g.getNome()); } }
  • 23. Polimorfismo curso.entidades.Gente.java ... publicvoiddormir() { System.out.println(“GENTE dormindo zzz..."); } ...
  • 24. Polimorfismo curso.entidades.Homem.java publicclassHomem extends Gente { publicvoid dormir() { System.out.println(“HOMEM dormindo zzz..."); } }
  • 25. Polimorfismo curso.entidades.Mulher.java publicclassMulher extends Gente { publicvoid dormir() { System.out.println(“MULHER dormindo zzz..."); } }
  • 26. Sobrecarga curso.app.Principal.java publicclass Principal { publicvoidfazerDormir( Gente gente ) { gente.dormir(); } publicstaticvoidmain(String[] args) { Principal p = new Principal(); p.fazerDormir( new Gente() ); p.fazerDormir( new Homem() ); p.fazerDormir( new Mulher() ); } }
  • 28. If-Else curso.fluxo.IfElse.java ... int idade = 15; booleanamigoDoDono = true; if (idade >= 18 || amigoDoDono == true) { System.out.println(“Pode entrar”); } else { System.out.println(“Não pode entrar”); } ...
  • 29. Switch curso.fluxo.Switch.jSwitchava 1/2 ... int nota = 4; switch (nota / 10) { case 10 : System.out.println("ÔÔÔ NERD! :)"); break; case 9 : System.out.println("Ótimo."); break; case 8 : System.out.println("Bom."); break;
  • 30. Switch curso.fluxo. Switch.java 2/2 case 7 : System.out.println("Pode ser melhor que isso."); break; case 6 : System.out.println("UFAA! quase, quase einn..."); break; default : System.out.println("Ihh, faiô! :("); break; } ...
  • 31. While curso.fluxo.While.java ... int idade = 14; while (idade < 18) { System.out.printf("Com %d eu sou de menor.", idade); idade++; } System.out.printf("Com %d eu sou de MAIOR.", idade); ...
  • 32. Do...While curso.fluxo.While.java ... int contador = 5; do { System.out.println(contador + " - tuuuuuu..."); contador--; } while ( contador > 0); ...
  • 33. For curso.fluxo.For.java ... for (int i = 1; i <= 10; i++) { System.out.println("Tabuada do " + i); for (int j = 1; j <= 10; j++) { System.out.println(i + " X " + j + " = " + (i * j)); } } ...
  • 34. Controlando loops curso.fluxo.For.java ... intparaNaTabuadaDo = 3; for (int i = 1; i <= 10; i++) { System.out.println("Tabuada do " + i); for (int j = 1; j <= 10; j++) { System.out.println(i + " X " + j + " = " + (i * j)); } if (i == paraNaTabuadaDo) { break; } }
  • 36. Arrays curso.arrays.Array.java ... Torcedor[] torcida = new Torcedor[3]; Torcedor t = new Torcedor(); t.setNome("Carlos"); torcida[0] = t; System.out.println(torcida[0].getNome()); torcida[1] = new Torcedor(); torcida[1].setNome("Juca"); System.out.println(torcida[1].getNome()); ... Torcedor Torcedor null nomeCarlos nomeCarlos torcedores
  • 37. Percorrendo Arrays curso.arrays.Array.java ... // fixa for (int i = 0; i < 3; i++) { System.out.println(torcida[i].getNome()); } // dinâmica for (int j = 0; j < torcida.length; j++) { System.out.println(torcida[j].getNome()); } ...
  • 38. Collections framework Utilizando arrays - Não podemos redimensionar um array (falta de espaço) - É impossível buscar um item diretamente quando não sabemos o índice - Não conseguimos saber quantas posições já foram ou estão populadas (sem métodos auxiliares) API Collections - Possuí estruturas avançadas que facilitam o manuseio das informações
  • 39. Listas curso.entidades.Listas1.java ... ArrayList nomes = new ArrayList(); nomes.add("Juca"); nomes.add("Carlos"); for (int i = 0; i < nomes.size(); i++) { System.out.println(nomes.get(i)); }if(nomes.contains("Carlos")) { System.out.println("tem"); } else { System.out.println("não tem"); } ... ArrayList NÃO é um Array
  • 40. Listas com Generics curso.entidades.Listas1.java ... Torcedor t1 = new Torcedor(); t1.setNome("Juca"); Torcedor t2 = new Torcedor(); t2.setNome(“Carlos"); List<Torcedor> torcedores = new ArrayList<Torcedor>(); torcedores.add(t1); torcedores.add(t2); for (int i = 0; i < torcedores.size(); i++) { System.out.println(torcedores.get(i).getNome()); } ...
  • 42. Persistência JDBC (Java DatabaseConnectivity) - Generaliza a interface com os bancos de dados Aplicação JAVA JDBC API JDBC Driver Manager JDBC Driver JDBC Driver JDBC Driver MYSQL Postgres Oracle
  • 43. Persistência Exemplo: JDBC (livraria) - SQL Injection - Fábrica de conexões
  • 44. Persistência JPA2 e Hibernate - Problemas - Múltiplas sintaxes da linguagem SQL - Orientação à Objetos x Modelo Entidade Relacionamento - Ferramentas ORM (ObjectRelationalMapper) - JPA (Java Persistente API) – especificação / visa padronizar - Hibernate – framework ORM
  • 45. Persistência Exemplo: JPA2-Hibernate (livraria) - Notações (principais) - @Entity – indica que se a classe será persistida no banco Aplicação antes da declaração da classe - @Id – indica atributo como chave primária Aplicação antes da declaração do atributo - @GeneratedValue – indica que o atributo é auto-increment Aplicação depois do @Id @GeneratedValue(strategy= GenerationType.AUTO)
  • 46. Persistência - @Table – indica o nome da tabela (antes do @Entity) Aplicação antes do @Entity @Table(name="Publisher") - @Column – indica um nome para o atributo e algumas restrições Aplicação antes da declaração do atributo @Column(name="publisher_name", nullable=false) - @Transient – in dica qual atributo não serão mapeados para colunas Aplicação antes da declaração do atributo
  • 47. WEB
  • 48. Entendendo a WEB Internet Usuário Servidor
  • 49. Servidor Web Container - Fornece recursos necessários para a interação Web - Envio e recebimento de mensagens HTTP - Acesso simultâneo - Tomcat e Jetty Servidores de aplicação - JBoss, Glassfish, WebSphere
  • 50. Conteúdo Servlets ou JSP Frameworks - JSF - Struts - Spring
  • 51. JSF
  • 52. O framework Agilidade Componente prontos XHTML ManagedBeans Class Java Facelets Componentes visuais BD
  • 54. Componentes visuais Componentes visuais - Facilitam nossa vida - Variedades de componentes em sua especificação - Arquitetura de componentes visuais JSF permite criação de novos - PrimeFace (http://www.primefaces.org/) - RichFaces (http://www.jboss.org/richfaces)
  • 55. Componentes visuais Exemplo: ComponentesVisuais
  • 56. Navegação Navegação estática implícita - nome da página Navegação estática explicita - faces-config.xml Navegação dinâmica implícita - Bean retorna nome da página Navegação dinâmica explicita - Beanretora nome (faces-config.xml)
  • 58.
  • 60.
  • 61. Contatos Ricardo Rufino E-mail/MSN: ricardo.rufino@yahoo.com.br Willian Magalhães E-mail/MSN: will_magalhaes@yahoo.com.br