Upload
willian-magalhaes
View
2.835
Download
3
Embed Size (px)
DESCRIPTION
Material utilizado durante o curso de Desenvolvendo para WEB com JAVA, realizado na UNIPAR campus Paranavaí em julho de 2011.
Citation preview
Desenvolvendo para WEB com
JAVA
Quem somos?
Ricardo Ribeiro RufinoBacharel em Sistemas de Informação (UNIPAR 2010)Pós-graduando em Des. de Sistemas OO em Java (CESUMAR)
Willian MagalhãesBacharel 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 Runtime Enviroment (APIs + JVM)
JVM – Java Virtual Machine
JDK – Java Developer Kit (compilador + bibliotecas)
Bytecode
Bytecode JAVA
JVM
Sistema Operacional
Classe JAVA Compilador JAVA
PRIMEIRO PROGRAMA
Primeiro programa
public class Primeiro {
public static void main(String args[]) { System.out.println(“Meu primeiro programa”); }
}
curso.app.Primeiro.java
Variáveis
Primitivas (valor na memória)
- boolean, char, int, long, float, double
Referência (endereço de memória)
- Boolean, Character, String, Integer, Long, Float, Double
public class Gente {
private String nome; private int idade;
}
curso.entidades.Gente.java
ENCAPSULAMENTO
Encapsulamento
Default (mesmo pacote)
Public (qualquer um acessa)
Private ( somente dentro da classe - getters / setters)
... public void setNome(String nome) { this.nome = nome; }
public String getNome() { retur this.nome; }...
curso.entidades.Gente.java
Encapsulamento
public class Principal { public static void main(String[] args) { Gente g = new Gente(); g.setNome("Willian"); g.setIdade(10); System.out.printf("Olá %s, você tem %d anos de idade.\n", g.getNome(), g.getIdade()); } }
curso.app.Principal.java
HERANÇA
Herança
public class Torcedor extends Gente {
private String time;
public void setTime(String time) { this.time = time; }
public String getTime() { return this.time; }
}
curso.entidades.Torcedor.java
Herança
public class Principal { public static void main(String[] args) { Torcedor t = new Torcedor(); t.setNome("Willian"); t.setTime(“ACP"); System.out.printf("%s é torcedor do time %s.\n", t.getNome(), t.getTime()); } }
curso.app.Principal.java
REESCRITA
Reescrita
public class Acpiano extends Torcedor {
public void setTime(String time) { this.time = “ACP”; }
}
curso.entidades.Acpiano.java
Mesma assinatura no método
Reescrita
public class Principal { public static void main(String[] args) { Acpiano a = new Acpiano(); a.setTime(“Cianorte"); System.out.printf("%s é meu time.\n", t.getTime()); } }
curso.app.Principal.java
SOBRECARGA
Sobrecarga
...
// novo método
public void setNome(String nome, String sobrenome) { this.nome = nome + " " + sobrenome; }
...
curso.entidades.Gente.java
Assinatura diferente no método
Sobrecarga
public class Principal { public static void main(String[] args) { Gente g = new Gente(); g.setNome("Willian", "Magalhães"); System.out.printf("Meu nome: %s.\n", g.getNome());
} }
curso.app.Principal.java
POLIMORFISMO
Polimorfismo
...
public void dormir() { System.out.println(“GENTE dormindo zzz..."); }
...
curso.entidades.Gente.java
Polimorfismo
public class Homem extends Gente {
public void dormir() { System.out.println(“HOMEM dormindo zzz..."); }
}
curso.entidades.Homem.java
Polimorfismo
public class Mulher extends Gente {
public void dormir() { System.out.println(“MULHER dormindo zzz..."); }
}
curso.entidades.Mulher.java
Sobrecarga
public class Principal {
public void fazerDormir( Gente gente ) { gente.dormir(); } public static void main(String[] args) {
Principal p = new Principal();p.fazerDormir( new Gente() );p.fazerDormir( new Homem() );p.fazerDormir( new Mulher() );
} }
curso.app.Principal.java
CONTROLE DE FLUXO
If-Else
... int idade = 15; boolean amigoDoDono = true;
if (idade >= 18 || amigoDoDono == true) {
System.out.println(“Pode entrar”);
} else {
System.out.println(“Não pode entrar”);
}...
curso.fluxo.IfElse.java
Switch
... 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;
curso.fluxo.Switch.jSwitchava 1/2
Switch
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; }...
curso.fluxo. Switch.java 2/2
While
... int idade = 14; while (idade < 18) { System.out.printf("Com %d eu sou de menor.\n", idade); idade++;
} System.out.printf("Com %d eu sou de MAIOR.\n", idade);...
curso.fluxo.While.java
Do...While
... int contador = 5; do { System.out.println(contador + " - tuuuuuu..."); contador--; } while ( contador > 0);...
curso.fluxo.While.java
For
... 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)); } }...
curso.fluxo.For.java
Controlando loops
... int paraNaTabuadaDo = 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; } }
curso.fluxo.For.java
ARRAYS E COLEÇÕES
Arrays
... 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());...
curso.arrays.Array.java
torcedores nomeCarlos
Torcedor
nomeCarlos
Torcedor
null
Percorrendo Arrays
... // 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()); }...
curso.arrays.Array.java
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
... 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"); }...
curso.entidades.Listas1.java
ArrayList NÃO é um Array
Listas com Generics
... 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()); }...
curso.entidades.Listas1.java
PERSISTÊNCIA
Persistência
JDBC (Java Database Connectivity)
- Generaliza a interface com os bancos de dados
JDBC Driver Manager
Aplicação JAVA
JDBC API
JDBC Driver
MYSQL
JDBC Driver
Postgres
JDBC Driver
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 (Object Relational Mapper)
- 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
Servidor Usuário
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 Managed Beans Class Java
FaceletsComponentes 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
- Bean retora nome (faces-config.xml)
Navegação
Exemplo: Navegação
Bibliografia
LIVROS
- Java como Programar
SITES
- http://www.algaworks.com/
- http://www.caelum.com.br/apostilas/
- http://www.k19.com.br/
Links
SLIDES
http://www.slideshare.com/wmagalhaes
BIBLIOTECAS
http://www.megaupload.com/?d=5CIYLRG9
Contatos
Ricardo Rufino
E-mail/MSN: [email protected]
Willian Magalhães
E-mail/MSN: [email protected]
BRIGADO