0% acharam este documento útil (0 voto)
24 visualizações101 páginas

2 Java Desktop

Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
24 visualizações101 páginas

2 Java Desktop

Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Java SE (Java Standard Edition)

Prof. Me. Jaidson Brandão da Costa


[Link]
jaidsonbrandao@[Link]
TECNOLOGIA JAVA

• JEE – WEB

• JSE – DESKTOP

• JME – CELULAR

2
História do Java
• 1991 – San Hil Road (filiada a Sun) –
engenheiros: Patrick Naugthon, Sun Fellow e
James Gosling;

• Projeto Green – eletrônicos;

• Se chamaria Oak (carvalho) mas esse nome já


estava registrado;

• Então, adaptaram a Oak para internet 1995


deram o nome de Java que era nome do lugar
de onde vinha o café que tomavam ;

3
4
5
6
7
DICAS
O Java Runtime Environment - JRE é um plug-in necessário para a execução de
programas Java.

O Java Development Kit - JDK é necessário para desenvolver aplicativos Java.

FERRAMENTAS DO JDK:

8
Características
• Orientada a Objetos

• Independente de Plataforma

• Distribuído

• Interpretado e Compilado

• Multitarefa

• Com Coleta de lixo

• Robusto

• Seguro

• Simples

• Alto Desempenho

9
Tipos de Dados

10
Operadores

11
Comando de entrada

[Link](“Idendifique-se Padawan...");

12
Comando de saída

[Link](“ESCREVER ALGO AQUI ”);

[Link](null,“A”);

13
Representação de uma Classe em Java
package [Link];

public class Pessoa {

String nome;
int idade; Atributos

void respirar(){
[Link]("Nome:"+nome);
} Métodos
Usado para concatenação de String
void completarAno(int valorIdadeAcrescentar){
idade= idade + valorIdadeAcrescentar;
[Link](nome+" completou "+valorIdadeAcrescentar+" de idade!");
}

}
Criação de Objeto

NomeDaClasse nomeDoObjeto = new NomeDaClasse( );

package [Link];

public class Pessoa {

Implicito aqui! *construtor


}

Construtor: é um método sem retorno e deve ter o mesmo nome da


Classe.
Métodos em Java - Declaração
Modificador TipoDeRetorno nomeDoMetodo (TipoDoParametro nomeDoParametro...) {
...
}
OU
Modificador TipoDeRetorno nomeDoMetodo (TipoDoParametro nomeDoParametro...){
...
return objetoDoTipoDoRetorno;
}

Tipo de retorno:
1. Dados primitivos (int, float etc)
2. Classe definida pelo programador (Pessoa)
3. Classe da API do Java (String etc)
4. Nada, isto é, void
Métodos em Java - Exemplos
int calcular(int y){  RETORNO TIPO PRIMITIVO
int x=y+1;
return x;
}

Pessoa calcular(){  RETORNO TIPO CLASSAE CRIADA PELO PROGRAMADOR


Pessoa objeto=new Pessoa();
return objeto;
}

String mostrar(){  RETORNO TIPO CLASSAE API DO JAVA


String palavra="algo";
return palavra;
}

void mostrar(){  SEM RETORNO


String palavra="algo";
[Link](palavra);
}
Se observarmos não há nenhum modificador de acesso na frente dos
métodos, mas ele é chamado de package quando não há.
Assinatura de Métodos em Java
A assinatura do método é formada pelo
• Nome do Método
• Tipo de Dado
• Quantidade e Ordem de seus Parâmetros.

Desta forma, é possível existirem na mesma classe, métodos com o mesmo nome, desde
que tenham listas de parâmetros diferentes.

Note que o nome dos parâmetros não faz parte da assinatura, apenas o tipo, quantidade e
ordem deles. Também não faz parte da assinatura o tipo de retorno do método.
Exemplo de Assinatura de Métodos em Java

Declaração:
void completarAno(int valorIdadeAcrescentar){
idade= idade+ valorIdadeAcrescentar;
}
Assinatura:
completarAno(int)

Declaração:
void completarAno(int valor, String nome){

}
Assinatura:
completarAno(int,String)
MODIFICADORES DE ACESSO
Em programação orientada a objetos, modificador de acesso, também
chamado de visão de método ou ainda visão de atributo, é a palavra-
chave que define um atributo, método ou classe como :
+public - qualquer classe pode ter acesso;

-private - apenas os métodos da própria classe pode manipular o


membro;

#protected - pode ser acessado apenas pela própria classe ou pelas suas
subclasses;

~package – Default. Só é visível em classes do mesmo pacote. Não existe


modificador com esse nome a ausência de modificador o torna package
EXEMPLOS
public class Pessoa {

private int idade;


public boolean deficiente;
protected float peso;
String nome; // esse é package
porque não tem
modificador de
acesso na frente
ENCAPSULAMENTO
Geralmente, utiliza-se modificadores de acesso para privar os atributos
do acesso direto (tornando-os privados) e implementa-se métodos
públicos que acessam e alteram os atributos. Tal prática pode ser
chamada de Encapsulamento.

São os chamados get e set


EXEMPLO DE ENCAPSULAMENTO
package [Link];

public class Pessoa {

private int idade;// ENCAPSULA

public int getIdade() {// LIBERA O ACESSO


return idade;
}

public void setIdade(int idade) {// LIBERA MUDAR


[Link] = idade;
}
} O this referencia ao próprio
objeto
MEMBROS STATIC

Membro static também são chamados de membros de classes

public static int tamanho;

public static int getTamanho() {


return tamanho;
}
MEMBROS FINAL
Declarar um membro como final indica que desejamos que
ele assuma o papel constante.
public final int TAMANHO;

public final int getTamanho() {


return TAMANHO;
}
[Link]

• Algumas classes como a String , System, classes


wrappers dos tipos primitivos entre diversas outras
não precisam de imports, pois fazem parte do
pacote [Link], que é o pacote padrão do Java.
[Link]
• Essa classe implementa as operações de entrada de dados pelo
teclado no console. Voce deve importar [Link].
Exemplo:
[Link]
[Link]
• Nele você encontrará classes como a Math, que tem um arsenal
completo de métodos que o auxiliam em operações numéricas
como arredondamento ( round), mínimo ( min), máximo ( max),
seno ( sin), entre muitos outros.
Alguns exemplos de uso:

• Os valores das variáveis, respectivamente, serão:


[Link]
Classes Wrappers
• Uma classe empacotadora, em inglês wrapper class, na linguagem
de programação Java é uma das classes fornecidas no pacote
[Link]
Classes Wrappers
Desembrulhando/Convertendo
• Podemos desembrulhar os valores primitivos das classes wrappers:

• Conversões podem ser feitas a partir das classes que embrulham os


tipos primitivos:

• Para transformar qualquer um desses valores em uma String,


podemos utilizar seu método estático valueOf:
33

CLASSES ABSTRATAS

Usamos a palavra chave abstract para impedir que ela possa


ser instanciada. Esse é o efeito direto de se usar o
modificador abstract na declaração de uma classe:

public abstract class Funcionario {

protected String nome;

protected abstract void calcularSalario();

}
34

CLASSES ABSTRATAS
35

HERANÇA
Herança é um mecanismo de Java que possibilita a criação de uma
nova classe, derivada de uma classe já existente. Isso quer dizer que
uma classe B é derivada de uma classe A significa que B adquire
(herda) os membros (atributos e métodos) de A. Chamamos A de
superclasse de B, e B de subclasse de A.

Existem: Simples e Multipla


36

HERANÇA
37

HERANÇA – EXTENDS E SUPER


Para uma classe java herdar membros de uma outra é necessário
usar o extends. E se tiver construtor com parametro usar o super.
public abstract class Funcionario {
protected String nome;
public Funcionario(String nome) {
[Link] = nome;
}
}
public class Pessoa extends Funcionario {
public Pessoa(String nome, int CPF) {
super(nome);
}
}
38

OVERLOAD
O overload de métodos é uma sobrecarga de métodos:

public void exibeMensagem(){


[Link]("Mensagem");
}
public void exibeMensagem(int i){
[Link]("Mensagem numero i");
}
39

OVERRIDE
O override é uma sobreposição de métodos, ou seja, o método da
classe filha se sobrepõe ao da classe pai, como é uma sobreposição o
método da classe pai não deixa de existir apenas está "embaixo".
[Link]() //Faz de conta que esses métodos estão em classes
separadas
public void exibeMensagem(){
[Link]("Mensagem classe pai");
}
public void exibeMensagem(){
[Link]("Mensagem classe filho");
}
//Depois é só chamar
[Link]();//Imprime: "Mensagem classe pai"
[Link]();//Imprime: "Mensagem classe filho"
40

HERANÇA MULTIPLA - Interface


interface é um contrato que quando assumido por uma classe
deve ser implementado – usar o implements

public interface IPessoa { public class Pessoa implements IPessoa {

public int variavel=0; @Override


public int salvar() {
public int salvar(); // TODO Auto-generated method stub
return 0;
} }
static final public
Todo atributo de uma interface é uma constante (public static e
final) quer voce coloque explicitamente os modificadores, quer
não.

Todos os métodos da interface são implicitamente public e abstract.


41

HERANÇA
COM INTERFACE:

public interface INova { public class SubClasse implements INova{

public String metodo( ){  override


public String metodo( );
return “”;
}
} }

Interface:

• Não pode ser instanciada


• Não pode possuir métodos implementados
• Métodos devem ser implementados em suas subclasses obrigatoriamente
• herança polimórfica

Modificadores de acesso permitidos: public, static e final


42

POLIMORFISMO
Polimorfismo é a capacidade de um objeto poder ser referenciado de
várias formas. (cuidado, polimorfismo não quer dizer que o objeto fica
se transformando, muito pelo contrário, um objeto nasce de um tipo e
morre daquele tipo, o que pode mudar é a maneira como nos
referimos a ele). Funcionário é pai de Engenheiro.

Engenheiro engenheiro= new Engenheiro();


Funcionario funcionario= engenheiro;
[Link]();
43

O que é Collection?
Interface base para todos os tipos de coleção. Ela define as operações
mais básicas para coleções de objetos, como adição (add) e remoção
(remove) abstratos (sem informações quanto à ordenação dos
elementos), esvaziamento (clear), tamanho (size), conversão para
array (toArray), objeto de iteração (iterator), e verificações de
existência (contains e isEmpty).
44

Métodos da Collection
[Link](objeto);  adiciona o objeto passado
por parametro na collection

[Link](objeto);  remove o objeto


passado no parametro e retorna um “boolean”

[Link]();  retorna tamanho do vetor

[Link](posicao); retorna o objeto na


posição passada no parametro

[Link](posicao, objeto);  retorna o objeto


antigo altera na collection esse objeto
45

[Link]
Interface que extende Collection, e que define coleções
ordenadas (sequências), onde se tem o controle total
sobre a posição de cada elemento, identificado por um
índice numérico.
implementação mais utilizada da interface List é a
ArrayList, que trabalha com um array interno para gerar
uma lista.
46

[Link]
Implementação de List toda classe ArrayList começa
com um tamanho fixo, que vai aumentando conforme
necessário, mas o custo deste aumento é alto, pois é feita
uma cópia do array atual para um novo array com um novo
tamanho. Inicie seu array caso saiba a quantidade
necessário de objetos.

ArrayList lista = new ArrayList();


47

EXEMPLO
Para criar um ArrayList, basta chamar o construtor:

ArrayList<E> lista = new ArrayList<E>();

É sempre possível abstrair a lista a partir da interface List:

List<E> lista = new ArrayList<E>();

Para criar uma lista de nomes (String), podemos fazer:

List<String> lista = new ArrayList<String>();


[Link](“Bruno");
[Link]("Joao");
[Link]("Maria");
48

[Link]
Implementação de List com o mesmo
comportamento da ArrayList, porém, totalmente
sincronizada. A alocação dinâmica do Vector, que é
diferente do ArrayList, pois aumenta o dobro, ou seja,
se você tem uma lista de 10 elementos cheia, essa
lista aumentará para 20, com 10 posições vazias.

Vector<E> vetor = new Vector<E>();


49

[Link] e [Link]
O Set é uma interface que funciona de forma análoga aos
conjuntos da matemática, ele é uma coleção que não permite
elementos duplicados, não armazena na ordem e Não há
métodos que trabalham com índices, como o get(int).
Um conjunto é representado pela interface Set e tem como
uma das suas principais implementações a classe HashSet

Set<E> conjunto = new HashSet<E>();


50

EXEMPLO
Usuario usuario = new Usuario();
[Link]("Jaidson");

Set conjunto = new HashSet();


[Link]([Link](usuario));

Iterator iterator = [Link]();


while ([Link]()){
Usuario u = (Usuario) [Link]();
[Link]([Link]());
}

A interface Iterator possui dois métodos principais: hasNext() (com retorno


booleano), indica se ainda existe um elemento a ser percorrido; next(), retorna o
próximo objeto.
51

[Link] e [Link]
Interface que define um array associativo, isto é, ao invés de
números, objetos são usados como chaves para se recuperar
os elementos.

As chaves não podem se repetir (seguindo o mesmo


princípio da interface Set), mas os valores podem ser
repetidos para chaves diferentes.

Um Map também não possui necessariamente uma ordem


definida para o percorrimento.
52

EXEMPLO
Usuario usuario = new Usuario();

[Link]("Jaidson");

Map map = new HashMap();

[Link]("usuario", usuario);

Usuario u= (Usuario) [Link]("usuario");

[Link]([Link]());
53

[Link]
Um mapa importante é a tradicional classe Properties, que
mapeia strings e é muito utilizada para a configuração de
aplicações.
A Properties possui, também, métodos para ler e gravar o
mapeamento com base em um arquivo texto, facilitando muito
a sua persistência.
54

EXEMPLO
Properties config = new Properties();
[Link](arquivoTXT);
[Link]("[Link]", “jb");
[Link]("[Link]", “123");
[Link]("[Link]","jdbc:mysql:/localhost/teste"); //

String login = [Link]("[Link]");


String password = [Link]("[Link]");
String url = [Link]("[Link]");
55

GENERICS
A motivação de estudar Generics em Java é de poupar o
desenvolvimento de códigos redundantes, como é o caso
de casting excessivo.
Generics é indicado como um identificador entre os sinais
de maior e menor (< >).
Para criar uma classe usando generics, basta que logo após
o nome da classe coloquemos o indicador genérico.
public classe Classe <T> {
56

EXEMPLO
Descrição em Java:

Vector<T> vetor = new Vector<T>( );

List<T> lista = new ArrayList<T>();

Map<T> map = new HashMap<T>();


57

Erros x Exception
A linguagem Java tem uma abordagem própria para lidar com
erros de execução. Na abordagem do Java não são utilizados
códigos de erro ou os retornos lógicos dos métodos.
O primeiro passo para entender a abordagem do Java para lidar
com os erros de execução é saber classificá-los. A classe
Throwable modela todos os tipos de erros de execução.

Há duas subclasses de Throwable: Error e Exception

Error  define erros que não devem ser capturados pelas


aplicações pois representam erros graves que não permitem que a
execução continue de maneira satisfatória;

Exception  define erros para os quais as aplicações


normalmente têm condições de definir um tratamento;
58

Representação
59

Tipos de exceção: Checked e Unchecked


Sabemos que as exceções em Java são classificadas em dois
tipos:
•Checked Exceptions: seguem a regra do handle-or-declare. O
desenvolvedor é obrigado a tratar (try-catch) ou relançar
(throws), caso não saiba como tratar.

•Unchecked Exceptions: não é obrigatório tratar nem relançar,


apesar de ser possível. Caso não haja try-catch adequado à
exceção gerada, ela é automaticamente relançada. Geralmente
são filhas de [Link] direta ou
indiretamente.
EXEMPLO DO try/catch
60

try {
// código que inclui comandos/invocações de métodos
// que podem gerar uma situação de exceção.
}
catch (XException ex) {
// bloco de tratamento associado à condição de
// exceção XException ou a qualquer uma de suas
// subclasses, identificada aqui pelo objeto
// com referência ex
}
}
EXEMPLO throw/throws
61

As cláusulas throw e throws podem ser entendidas como ações que propagam
exceções, ou seja, em alguns momentos existem exceções que não podem ser
tratadas no mesmo método que gerou a exceção. Nesses casos, é necessário
propagar a exceção para um nível acima na pilha:

public static int calculaQuociente(int numerador, int denominador)throws ArithmeticException{


return numerador / denominador;
}

Quando identificamos um erro, podemos criar um objeto de alguma checked


exception e “lançar” a referência dele com o comando throw:

public void deposita ( double valor ) throws Exception {


if( valor < 0) {
Exception erro = new Exception ();
throw erro ;
} else {
...
}
}
62

Checked Exception com TRY/CATCH


63

Checked Exceptions
package exemplo;
import [Link];
import [Link];
public class Teste {
private Connection con = null;
public void fecharConexao(){
try {
[Link]();
} catch (SQLException e) {
// TODO Auto-generated catch block
[Link]();
}
}
}
64

Checked Exception com THROWS


65

Checked Exceptions
package exemplo;
import [Link];
import [Link];
public class Teste {
private Connection con = null;
public void fecharConexao() throws SQLException{
[Link]();
}
}
66

Unchecked Exceptions com TRY/CATCH


67

Unchecked Exceptions
package EXEMPLO;
public class Tratamento {
public static void dividir (){
try{
int x=0;
int y=2;
int divisao=y/x;
[Link](divisao);
}
catch (Exception e) {
[Link]([Link]());
}
}
public static void main(String[] args) {
dividir();
}
}
68

Unchecked Exceptions com THROWS


69

Unchecked Exceptions
package EXEMPLO;
public class Tratamento {
public static void dividir () throws Exception{
int x=0;
int y=2;
int divisao=y/x;
[Link](divisao);
}
public static void main(String[] args) {
try {
dividir();
}
catch (Exception e) {
[Link]([Link]());
}
}
}
70
BLOCO COM FINALLY
try {
// código que inclui comandos/invocações de métodos
// que podem gerar uma situação de exceção.
}
catch (Exception ex) {
// bloco de tratamento associado à condição de
// exceção XException ou a qualquer uma de suas
// subclasses, identificada aqui pelo objeto
// com referência ex
}
catch (Exception ey) {
// bloco de tratamento para a situação de exceção
// YException ou a qualquer uma de suas subclasses
}
finally {
// bloco de código que sempre será executado após
// o bloco try, independentemente de sua conclusão
// ter ocorrido normalmente ou ter sido interrompida
}
71
BLOCO COM FINALLY
package EXEMPLO;
public class Tratamento {
public static void dividir () throws Exception{
int x=0;
int y=2;
int divisao=y/x;
[Link](divisao);
}
public static void main(String[] args) {
try {
dividir();
}
catch (Exception e) {
[Link]([Link]());
}
finally {
[Link]("continua o codigo...");
}
}
}
72
EXCEPTIONS
ArithmeticException: indica situações de erros em processamento aritmético, tal
como uma divisão inteira por 0. A divisão de um valor real por 0 não gera uma
exceção (o resultado é o valor infinito);

NumberFormatException: indica que tentou-se a conversão de uma string para um


formato numérico, mas seu conteúdo não representava adequadamente um número
para aquele formato. É uma subclasse de IllegalArgumentException;

IndexOutOfBounds: indica a tentativa de acesso a um elemento de um agregado


aquém ou além dos limites válidos. É a superclasse de
ArrayIndexOutOfBoundsException, para arranjos, e de
StringIndexOutOfBounds, para strings;

NullPointerException: indica que a aplicação tentou usar uma referência a um


objeto que não foi ainda definida;

ClassNotFoundException: indica que a máquina virtual Java tentou carregar uma


classe mas não foi possível encontrá-la durante a execução da aplicação.
[Link] 73

As classes abstratas InputStream e OutpuStream definem os


fluxos para entrada (leitura de bytes) e saída (escrita de bytes);

LEITURA BYTES:
A classe abstrata InputStream e tem sua filha FileInputStream,
que em seu construtor recebe uma String com o nome do arquivo
a ser lido;

ESCRITA DE ARQUIVO:
A classe abstrata OutputStream e tem sua filha FileOutputStream,
que em seu construtor recebe uma String com o nome do
caminho do arquivo a ser escrito;
74

Conversão de bytes em caracteres


LEITURA EM CARACTERES:

 A classe InputStreamReader, recebe uma referência a


um conjunto de bytes e pode converte-los em
caracteres;
• Essa classe é filha da classe abstrata Reader;
75

Conversão de caracteres em String


LEITURA EM STRING:

• A classe BufferedReader lê caracteres de outro


reader por pedaços, usando o buffer, para evitar
muitas chamadas ao SO;
76

Decorator Parttern – Na escrita


Esse padrão permite que novos Comportamentos
sejam atribuídos a objetos, em tempo de
execução;
String char bytes

BufferedWriter OutputStreamWriter OutputStream

new FileOutputStream(“[Link]");
77

Exemplo de Escrita de arquivo


public boolean salvar(Advogado advogado){
OutputStream saida=null;

Decorator Parttern
try {
saida = new FileOutputStream("[Link]",true);
OutputStreamWriter writer = new OutputStreamWriter(saida);
BufferedWriter buffer = new BufferedWriter(writer);
[Link](); pula uma linha
[Link]([Link]()); escreve no arquivo
[Link]();  pula uma linha
[Link]([Link]([Link]())); converte
OAB que é int em String para poder escrever no arquivo
[Link]();
}catch (IOException e) {
[Link]([Link]());
}
return true;
}
78

Decorator Parttern – Na leitura


Esse padrão permite que novos Comportamentos
sejam atribuídos a objetos, em tempo de
execução;
String char bytes

BufferedReader InputStreamReader InputStream

new FileInputStream(“[Link]");
Exemplo de Leitura de arquivo 79

public Advogado buscar(Advogado advogado){


Advogado adv = new Advogado();
InputStream entrada= null;
try {
entrada = new FileInputStream("[Link]");
InputStreamReader reader = new InputStreamReader(entrada);
BufferedReader buffer= new BufferedReader(reader);
Decorator Parttern
String dados= [Link]();
while (dados!=null) {  chegar no fim do reader será null ai finaliza!
if([Link]().equalsIgnoreCase(dados)){
[Link](dados);
dados= [Link]();
[Link]([Link](dados));  conversão porque OAB é int!

}
dados= [Link]();
}
[Link]();
} catch (FileNotFoundException e) {
[Link]([Link]());
}catch (IOException e) {
[Link]([Link]());
}
return adv;
}
80

THREAD
• Essa classe permite a criação de linhas execução
paralelas.

• Como fica o paralelismo quando temos apenas um


processador?

• A classe Thread recebe como argumento um objeto


com o código a ser executado;

• Esse objeto deve ser uma interface Runnable;


81

QUANDO USAR?

• Nós usamos thread se queremos que uma parte


de nosso código seja executado em paralelo.

• Para isso, devemos colocar o código dentro do


método run(), da classe Thread ou da Interface
Runnable.
82
Qual a melhor maneira de implementar uma Thread?

1. Estendendo a Classe Thread ?

2. Implementando a Interface Runnable?

• Se herdarmos a Classe Thread estamos


gastando nossa chance e não poderemos
herdar outra caso precisarmos.
[Link] 83

Interface Runnable que define apenas o método:


public abstract void run();
O método run() é executa as atividades de uma THREAD. Ao
terminar a THREAD também termina;
[Link]. Thread
A classe Thread define alguns métodos:
O método start() dispara a execução de uma THREAD. Ele chama
o run( ) antes de terminar;
O método sleep(long milisegundos) método que coloca a
THREAD para dormir por milisegundos;
O método interrupt( ) que interrompe a execução de uma
THREAD;
84

[Link]
85

CONECTANDO JAVA COM JDBC AO MySQL


86

CONCEITO DE JDBC
JDBC é uma interface baseada em Java para
acesso a bancos de dados através de SQL.
• Pacote Java padrão: [Link]
Usando JDBC, pode-se obter acesso direto a
bancos de dados através de applets e outras
aplicações Java
87

SOBRE JDBC
• Código SQL é usado explicitamente dentro do código
Java

• Para usar JDBC é preciso ter um driver JDBC(biblioteca)

• Para cada SGBD há um driver Específico

• Exemplo driver do Mysql:


CONFIGURAÇÃO DO DRIVER JDBC 88

1° passo
• Para segurança é necessário configurar os dados para
conexão em um arquivo properties fora do código
fonte: • Precisa fornecer valor
para os atributos url (o
caminho do banco de
dados onde estão as
tabelas do sistema);
• driver(é a Classe da
biblioteca que estamos
utilizando)
• usuario e senha são as
do SGBD.
CONFIGURAÇÃO DO DRIVER JDBC 89

2° passo
• Adicionar a biblioteca no path do projeto e depois criar
um pacote chamado connection e uma classe
ConexaoJDBC;
• Criar um método que retorne um objeto Connection do
[Link];
• Ler os atributos do arquivo properties para fornecer
valores aos atributos da classe e assim manipular com
segurança os dados do SGBD. Como veremos a seguir:
CONFIGURAÇÃO DO DRIVER JDBC 90

2° passo

É preciso carregar a classe do


driver na aplicação que irá
utilizá-lo.

Classe DriverManager manipula objetos do tipo Driver. Possui métodos para


registrar drivers, removê-los ou listá-los. É usado para retornar Connection, que
representa uma conexão a um banco de dados, a partir de uma Url, Usuário e
Senha recebida como parâmetro, por isso foi necessário “esconder” em um arquivo.
CONFIGURAÇÃO DO DRIVER JDBC 91

3° passo

É preciso criar um método para fechar a conexão com o


banco.
CONFIGURAÇÃO DO DRIVER JDBC 92

4° passo
Agora vamos testar a conexão com o banco, lembre-se que é
necessário que um schema com o nome java deve estar
criado no mysql. Crie um [Link] ("CONECTOU
AO BANCO:"+url); na penúltima linha do try do método
getConnection() . Faça a main e teste.
PreparedStatement 93

Para voce fazer um CRUD em JAVA usando JDBC e evitar o


ataque de SQL INJECT é necessário usar objeto
PreparedStatement este oferece meios de passar instruções
SQL para o SGBD. Usa-se “?” para mascarar o parâmetro
passado na operação SQL e depois usa-se os valores em
ordem para substituição do “simbolismo”. Exemplo de um
inserir:

Lembre-se esse objeto é


aquele retornado pelo
método getConnection() .

Quando for delete ou update o método


deve ser executeUpdate(). Quando for
select usa-se o método executeQuery()
ResultSet 94

O método executeQuery(“sql”), da interface Statement, retorna um objeto


ResultSet.
• Ele é um Cursor para as linhas de uma tabela;
• Pode-se navegar pelas linhas da tabela recuperar as informações armazenadas
nas colunas;
• O método de navegação utilizado é next() e getFetchSize() retorna a
quantidade de tuplas;
• Métodos para obtenção de dados:
1. getInt(“conformeNomeDaColunaDoBanco ou posição")
2. getString(“conformeNomeDaColunaDoBanco ou posição "))
3. getDate(“conformeNomeDaColunaDoBanco ou posição "))
4. getXXX(“conformeNomeDaColunaDoBanco ou posição "))
ResultSet 95

Exemplo do método logar:

Retorna um ResultSet

Nome da coluna da tabela do banco de dados.


Podemos colocar também a posição, nesse caso é
última coluna logo seria a 5ª posição ficaria assim:
... ([Link](5));
ResultSet 96

Exemplo do método listar:

Usar While

Add no Arrray
97

QUESTÕES
1 - Questão 3 - Questão 98

Em um programa Java, considere a existência de uma


variável do tipo long chamada cod contendo o valor
1234. Para passar o valor contido nessa variável para
uma variável do tipo byte chamada codNovo, deve-se
fazer casting. Para isso, utiliza-se a instrução:
a) byte codNovo =[Link](cod);
b) (long) cod;
c) [Link](cod);.
d) (byte) cod;
2 - Questão e) (cast) cod;.
4 - Questão
Quais afirmações são Verdadeiras:
I. Toda classe abstrata deve ter um método abstrato

II. Quando um membro é final isso quer dizer que ele


pertence à classe e não ao objeto

III. Uma classe pode possuir métodos implementados

IV. Uma classe abstrata não pode possuir métodos


implementados
a)I e II
b)Apenas II
c)Apenas III
d)I e IV
5 - Questão 7 - Questão 99

Quais afirmações são Verdadeiras: Qual a alternativa incorreta:


I. Quando um membro não tem modificador de a) Todos os métodos da interface são implicitamente public
acesso ele é package e abstract
b) Para uma classe Java herdar membros de uma outra é
II. Encapsulamento é privar atributos e tornar eles
necessário usar o extends
públicos por métodos c) Todo atributo de uma interface é public, static e final
III. Membro static são pertencentes a classe e não ao d) Usamos a palavra chave abstract para impedir que uma
objeto classe possa ser instanciada
IV. O método get serve para receber, modificar ou e) Um membro do tipo final são chamados de membros de
alterar um valor classes
8 - Questão
a) I e II Qual modificador de acesso está sendo utilizado nos
b) I e III membros da classe abaixo?
c) I, II e III
d) II, III e IV

6 - Questão
Qual é a assinatura do método abaixo?

Usuario salvar(Usuario user){ a) private


[Link]=user; b) protected
return [Link]; c) package
}
d) public
a) salvar(Usuario)
b) Usuario user e) final
c) salvar(user)
d) Usuario salvar()
9 - Questão 100
101

GABARITO
1 D
2 A
3 D
4 C
5 C
6 A
7 E
8 C
9 B

Você também pode gostar