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