SlideShare uma empresa Scribd logo
1 de 32
Java Básico
Aula 05
Natanael Fonseca - Arquiteto de Software
Ementa
• Collections e Generics;
• Conectividade com banco de dados
relacionais;
Java Collections Framework
Representa um grupo de objetos com características em comum,
ou associados segundo algum critério. Em Java, há diferentes
maneiras de se representar coleções de objetos.
O JCF é formado por interfaces, classes abstratas e interfaces e
diversas implementações focadas em diferentes casos de uso.
Por isso um programa Java raramente precisa implementar
métodos de ordenação, busca, redimensionamento etc.
Collections e Generics; 3
Java Collections Framework
Composto por diversas interfaces, classes abstratas e
implementações que oferecem vantagens diferentes para
cenários diferentes, determinando certos mecanismos como, por
exemplo, protocolo de iteração para navegação nas coleções.
Classes estão disponíveis no pacote java.util.
Exemplo :
• java.util.ArrayList;
• java.util.Collection;
• java.util.Arrays;
• java.util.Collections.
Conectividade com banco de dados
relacionais
4
Métodos equals() e hashCode()
Vamos estudar dois métodos fundamentais para o bom
funcionamento de nossas classes dentro das coleções :
• public boolean equals(Object o)
– Usado para comparar dois objetos.
• public int hashCode()
– Usado para criar um código que representa o
objeto, o valor retornado deve ser calculado com
base nos atributos considerados pelo método
equals.
Collections e Generics 5
Métodos equals()
Ao sobrescrever o método equals deve se levar em consideração as
seguintes relações:
• Reflexão: x.equals(x) deve ser true para qualquer x diferente de
null;
• Simetria: para x e y diferentes de null, se x.equals(y) é true, e
y.equals(x) também deve ser true;
• Transitividade: para x,y e z diferentes de null, se x.equals(y) é true,
e y.equals(z) é true, então x.equals(z) também deve ser true.
• Consistencia: para x e y diferentes de null, múltiplas chamadas de
x.equals(y) devem sempre retornar o mesmo valor.
• Para x diferente de null, x.equals(null) deve sempre retornar false.
Collections e Generics 6
Exemplo
Collections e Generics 7
public class Pessoa {
private long id;
private String nome;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (int) (id ^ (id >>> 32));
result = prime * result + ((nome == null) ? 0 : nome.hashCode());
return result;
}
}
O código abaixo foi gerado pelo eclipse, com base nos atributos
da classe Pessoa.
Métodos hashCode()
Importante sobrescrever este método ao se trabalhar com
coleções em Java de alto desempenho do tipo “Tabela Hash”.
• Caso não seja implementado, teremos problema em trabalhar
com coleções de alto desempenho, pois as operações de
localização podem não funcionar.
• As implementações de hashCode e equals devem ser
coerentes, ou seja, sempre que dois objetos forem
considerados iguais pelo método equals, devem possuir o
mesmo valor hashCode.
Collections e Generics 8
Exemplo
Collections e Generics 9
public class Pessoa {
private long id;
private String nome;
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Pessoa other = (Pessoa) obj;
if (id != other.id)
return false;
if (nome == null) {
if (other.nome != null)
return false;
} else if (!nome.equals(other.nome))
return false;
return true;
}
}}
O código abaixo foi gerado pelo eclipse, com base nos atributos
da classe Pessoa.
Interface Java.util.Collection
Estabelece um contrato básico que todas as coleções do Collections Framework
devem seguir. Nela estão definidos os métodos básicos que todas as coleções devem
implementar.
No framework não existe nenhuma classe concreta que implemente diretamente essa
interface. A única implementação existente é AbstractCollection que é uma classe
abstrata, cujo intuito é facilitar a criação de implementações de coleções . Em vez de
implementar diretamente Collection, podemos estender AbstractCollection e
implementar somente os seus métodos abstratos.
Collections e Generics 10
Principais métodos
Java.util.Collection
• boolean add(Object o);
• boolean addAll(Collection col);
• boolean remove(Object o);
• void clear();
• boolean contains();
• boolean containsAll(Collection col)
• boolean isEmpty();
• int size();
• Iterator iterator();
• T[] toArray(T[] array);
• Object[] toArray();
• boolean removeAll(Collection col);
• boolean retainAll(Collection col);
Collections e Generics 11
A interface java.util.List
Define uma coleção indexada, também conhecida como sequencia. Por isso, quando
utilizamos objetos que implementam esta interface, objetamos o controle sobre a
posição em que os elementos são inseridos, sendo possível acessa-los através de um
índice inteiro.
A interface Liste adiciona a Collection métodos relativos a manipulação do elementos
traces do índice dos principais métodos acrescentados são:
• void add(int indice, Object elem);
• Object set(int indice, Object elem);
• Object get(int indice);
• Object removce(int indice);
• int indexOf(Object o);
Collections e Generics 12
Principais implementações de
java.util.List
• java.util.Arraylist;
– Utiliza como estrutura de dados interna um array. O tamanho do array
é alterado em termos de execução de acordo com a necessidade da
lista.
• java.util.LinkedList;
– Utiliza como estrutura interna uma lista ligada. Esse tipo de estrutura
é mais eficiente para inserção e remoção de elementos do que um
array, porem tem um desempenho pior na navegação e localização dos
elementos.
• java.util.Vector;
– Também utiliza como estrutura interna um array, mas essa
implementação é sincronizada.
Collections e Generics
13
A interface java.util.Set
É a representação de conjuntos matemáticos, e é caracterizada por não
possuir elementos repetidos no seu interior.
A interface Set não acrescenta nenhum método novo em relação aos
herdados de Collection, apenas impõe a condição de não permitir duplicados
nos contratos dos métodos.
Principais implementações:
• java.util.HashSet
• java.util.LinkedHashSet
• java.util.SortedSet e NavigableSet
• java.util.TreeSet
Collections e Generics 14
A interface Comparable
Define classes que são ordenáveis, ou seja, que podem ser
automaticamente ordenadas por coleções ou outras classes.
A interface Comparable define um método que servira como
regra de ordenação das instancias da classe que a implementa.
int compareTo(Object o)
Um número negativo deve ser retornado caso o objeto estiver
antes daquele passado como parâmetro, zero se forem iguais e
um numero positivo, se estiver após.
Collections e Generics 15
A interface Comparator
Utilizada para definir uma regra diferente de ordenação entre dois objetos daquela
sugerida pela interface Comparable. Por isto, define o método compare(Object o1,
Object o2) retornando um valor inteiro, devendo ser positivo se o primeiro argumento
for maior do que o segundo, zero se os elementos forem considerados iguais, e
negativo se o primeiro argumento for menos do que o segundo.
public class ComparadorClientesId implements Comparator {
public int compare(Object o1, Object o2){
Cliente cl1 = (Cliente ) o1;
Cliente cl2 = (Cliente) o2;
return cl1.getId() – cl2.getId();
}
}
Collections e Generics 16
Ordenando Arrays e Lists
Podemos empregar métodos definidos nas classes utilitárias java.utilArrays e
java.util.Collections, conforme a necessidade de ordenar arrays ou List.
O métodos de ordenação da classe Arrays são :
• void sort(Object[] array): ordenação array de acordo com a ordem natural dos
elementos.
• void sort(Object[] array, Comparator comp): Ordena o array de acordo com a regra
estabelecida no comparator.
Os métodos de ordenação da classe Collections são:
• void sort(List lista): Ordena a lista de acordo com a ordem natural dos elementos,
lança um ClassCastException caso os elementos não implementem Comparable.
• void sort(List Array, Comparator comp): ordena a lista de acordo com a regra
estabelecida no Comparator.
Collections e Generics 17
A interface java.util.Queue
Introduzida a partir do Java5, e é utilizada tipicamente para gerenciar objetos como
uma fila seguindo o conceito FIFO(first-in, first-out). Ou seja, novos objetos são
adicionados no fim da fila, e objetos removidos são tomados no inicio. Além dos
métodos básicos da interface Collection, a interface Queue também oferece métodos
adicionais de inserção remoção e verificação de objetos.
Métodos definidos pela interface:
• boolean add(Object o);
• boolean remove(Object o);
• Object element();
Collections e Generics 18
Principais implementações de
java.util.Queue
• java.util.PriorityQueue;
– Funciona como uma lista ordenada que aceita objetos
duplicados. .
• java.util.Deque;
– Possui características de uma fila, podem ela suporta a
inserção e remoção dos objetos no final da fila.
• java.util.ArrayDeque;
– Utiliza como uma estrutura de dados interna um array. O
tamanho do array é alterado em tempo de execução de
acordo com a necessidade da lista.
Collections e Generics
19
A interface java.util.Map
Interface define coleções que mapeiam pares chave-valor. Esse tipo de coleção é
utilizada quando necessário localizar rapidamente um valor sem fazer uma busca em
todos os elementos da coleção. A localização é feita através da chave , que deve ser
única.
Collections e Generics 20
Map Chave (Object) valor (Object)
RG1 Cliente 1
RG1
RG1
RG1
Cliente 2
Cliente 3
Cliente N
Principais métodos de
java.util.Map
• object put(Object chave, Object valor);
• boolean containsKey(Object chave);
• boolean containsValue(Object valor);
• Object get(Object chave);
• Object remove(Object chave);
• int size();
• Set ketSet();
• Collection values();
Collections e Generics 21
Principais implementações de
java.util.Map
• java.util.HashMap
Implementação de map que utiliza uma estrutura de dados do tipo tabela hash para
armazenar os pares chave-valor.
• java.util.HashTable
Igual ao hashmap, mas essa classe é sincronizada.
• java.util.LinkedHashMap
Utiliza como estrutura de dados interna uma tabela hash, a diferença desta para
HashMap é que mantem as chaves em ordem de inserção, ou por frequência de acesso.
• java.util.SortedMap
Adiciona ao contrato de Map, a característica de manter suas chaves ordenadas.
• java.util.NavigableMap
Extensão de SortedMap, basicamente introduz novos métodos de busca.
• java.util.TreeMap
Implementa a interface NavigableMap e, por isso, garante que as chaves serão
ordenadas em ordem ascendente, de acordo coma ordem natural dos elementos, ou
então, por um objeto do tipo Comparator passo como parâmetro na construção do
TreeMap.
Collections e Generics
22
Java Database Conectivity
(JDBC)
Esta API é utilizada para facilitar o acesso a bancos de dados relacionais a partir de
aplicações Java. Por meio de JDBC, é possível realizar instruções SQL(Structured Query
language) num banco de dados relacional para gravar, alterar ou ler dados
manipuladores pelo programa Java.
Collections e Generics
23
Driver JDBC
O driver JDBC é um conjunto de classe Java que tem a habilidade de se comunicar com o
banco de dados relacional realizando tarefas como:
• Criar conexões;
• Executar comandos SQL;
• Chamar Stored Procedures;
• Criar Tabelas, etc.
Tipos:
Tipo 1 – JDBC-ODBC Bridge, atuando como uma ponte entre JDBC e ODBC.
Tipo 2 – Parte da implementação em código nativo, parte em Java.
Tipo 3 – Este driver utiliza um protocolo de rede próprio para se comunicar com um
servidor proprietário que se comunica com o banco de dados.
Tipo 4 – 100% Java, o driver foi totalmente implementado em Java.
Collections e Generics
24
Driver Oracle
A oracle assim como outras fabricantes de banco de dados distribui o driver para
acesso ao seu banco, que pode ser baixado em :
Oracle Database 10g Release 2 JDBC Drivers
http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-
088211.html
Oracle Database 11g Release 2 JDBC Drivers
http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-
090769.html
Collections e Generics
25
Obtendo uma Conexão
Em se tratando de JDBC todas classes utilizadas
pertencem ao pacote java.sql.*.
Exemplo:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TesteConexaoJDBC{
public staic void main(String[] args){
Connection conn = null;
try{
conn = DriverManager.getConnection(“jdbc:oracle:thin:@1030:DB”,”user”, “password”);
conn.close;
}catch(ClassNotFoundException e){
e.printStackTrace();
} catch(SQLException e){
e.printStackTrace();
}
}
}
Collections e Generics
26
Fechando a Conexão
De um modo geral, é recomendável fechar a conexão no bloco
finally, afinal ele sempre será executado !
Exemplo:
try{
conn = DriverManager.getConnection(“jdbc:oracle:thin:@1030:DB”,”user”, “password”);
}catch(ClassNotFoundException e){
e.printStackTrace();
} catch(SQLException e){
e.printStackTrace();
} finally {
try{
if(conn !=null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
Collections e Generics
27
Realizando uma consulta
Exemplo:
// Cria-se Statement com base na conexão con
Statement stmt = con.createStatement();
// Exemplo: navegando e exibindo os dados dos filmes
sql = "SELECT `titulo`,`ano` FROM `filmes`";
// Executa-se a consulta dos campos titulo,ano da tabela de filmes
ResultSet res = stmt.executeQuery(sql);
int ano;
String titulo;
while (res.next()) {
ano = res.getInt("ano");
titulo = res.getString("titulo");
System.out.println("ROW = " + titulo + ": " + ano);
}
Collections e Generics
28
Incluindo Registro
Exemplo:
// Cria-se Statement com base na conexão con
Statement stmt = con.createStatement();
//código sql
sql = "INSERT INTO `filmes` (`titulo`, `ano`, `diretor`)" + "VALUES
('The Matrix', 1999, 'Andy Wachowski & Larry Wachowski')";
stmt.executeUpdate(sql);
Collections e Generics
29
Atualizando Registro
Exemplo:
// Cria-se Statement com base na conexão
Statement stmt = con.createStatement();
stmt = conn.createStatement();
String sql = "UPDATE Registration " + "SET age = 30 WHERE id in (100, 101)";
stmt.executeUpdate(sql);
Collections e Generics
30
Deletando Registro
Exemplo:
// Cria-se Statement com base na conexão
Statement stmt = con.createStatement();
String sql = "DELETE FROM Registration " + "WHERE id = 101";
stmt.executeUpdate(sql);
Collections e Generics
31
Fim da Quinta Aula
Acabou !

Mais conteúdo relacionado

Mais procurados

Mais procurados (18)

Java7
Java7Java7
Java7
 
Java11
Java11Java11
Java11
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – III
 
Java6
Java6Java6
Java6
 
Java8
Java8Java8
Java8
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IV
 
Java13
Java13Java13
Java13
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
Guia Rápido Java
Guia Rápido JavaGuia Rápido Java
Guia Rápido Java
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
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
 
Java5
Java5Java5
Java5
 
Slide Share s2 Rodd
Slide Share s2 RoddSlide Share s2 Rodd
Slide Share s2 Rodd
 
Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2
 
Slide Semana2 Rodrigo
Slide Semana2 RodrigoSlide Semana2 Rodrigo
Slide Semana2 Rodrigo
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Aula4
Aula4Aula4
Aula4
 

Semelhante a Aula05

Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsDenis L Presciliano
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleçõesMaurício Linhares
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Eduardo Carvalho
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 
Threads 06: Coleções concorrentes
Threads 06: Coleções concorrentesThreads 06: Coleções concorrentes
Threads 06: Coleções concorrentesHelder da Rocha
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 
Collection Java (2/2)
Collection Java (2/2)Collection Java (2/2)
Collection Java (2/2)rdgse
 
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
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Helder da Rocha
 

Semelhante a Aula05 (20)

Java 14
Java 14Java 14
Java 14
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e Strings
 
Java: Collections
Java: CollectionsJava: Collections
Java: Collections
 
Java 12 Colecoes
Java 12 ColecoesJava 12 Colecoes
Java 12 Colecoes
 
8 collections-i
8 collections-i8 collections-i
8 collections-i
 
POO - 23 - Coleções da API do Java
POO -  23 - Coleções da API do Java POO -  23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
 
Pacotes e Encapsulamento
Pacotes e EncapsulamentoPacotes e Encapsulamento
Pacotes e Encapsulamento
 
Pacotes e Encapsulamento
Pacotes e EncapsulamentoPacotes e Encapsulamento
Pacotes e Encapsulamento
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleções
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 
Threads 06: Coleções concorrentes
Threads 06: Coleções concorrentesThreads 06: Coleções concorrentes
Threads 06: Coleções concorrentes
 
Csharp fundamentals
Csharp fundamentalsCsharp fundamentals
Csharp fundamentals
 
Resumão java
Resumão javaResumão java
Resumão java
 
java_avancado.pdf
java_avancado.pdfjava_avancado.pdf
java_avancado.pdf
 
Java collections-basic
Java collections-basicJava collections-basic
Java collections-basic
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
Collection Java (2/2)
Collection Java (2/2)Collection Java (2/2)
Collection Java (2/2)
 
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
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)
 

Mais de Natanael Fonseca

Microservices With Istio Service Mesh
Microservices With Istio Service MeshMicroservices With Istio Service Mesh
Microservices With Istio Service MeshNatanael Fonseca
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixNatanael Fonseca
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Natanael Fonseca
 
Desafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidDesafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidNatanael Fonseca
 
Atividades e Intenções (Android)
Atividades e Intenções (Android)Atividades e Intenções (Android)
Atividades e Intenções (Android)Natanael Fonseca
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma AndroidNatanael Fonseca
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509Natanael Fonseca
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509Natanael Fonseca
 
Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)Natanael Fonseca
 
Introdução a criptografia
Introdução a criptografiaIntrodução a criptografia
Introdução a criptografiaNatanael Fonseca
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring FrameworkNatanael Fonseca
 
Validação de certificados digitais
Validação de certificados digitaisValidação de certificados digitais
Validação de certificados digitaisNatanael Fonseca
 

Mais de Natanael Fonseca (15)

Microservices With Istio Service Mesh
Microservices With Istio Service MeshMicroservices With Istio Service Mesh
Microservices With Istio Service Mesh
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud Netflix
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05
 
Desafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidDesafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma Android
 
Fragmentos
FragmentosFragmentos
Fragmentos
 
Atividades e Intenções (Android)
Atividades e Intenções (Android)Atividades e Intenções (Android)
Atividades e Intenções (Android)
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509
 
Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)
 
Introdução a criptografia
Introdução a criptografiaIntrodução a criptografia
Introdução a criptografia
 
Transações em EJB
Transações em EJBTransações em EJB
Transações em EJB
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
Java annotation
Java annotationJava annotation
Java annotation
 
Validação de certificados digitais
Validação de certificados digitaisValidação de certificados digitais
Validação de certificados digitais
 

Aula05

  • 1. Java Básico Aula 05 Natanael Fonseca - Arquiteto de Software
  • 2. Ementa • Collections e Generics; • Conectividade com banco de dados relacionais;
  • 3. Java Collections Framework Representa um grupo de objetos com características em comum, ou associados segundo algum critério. Em Java, há diferentes maneiras de se representar coleções de objetos. O JCF é formado por interfaces, classes abstratas e interfaces e diversas implementações focadas em diferentes casos de uso. Por isso um programa Java raramente precisa implementar métodos de ordenação, busca, redimensionamento etc. Collections e Generics; 3
  • 4. Java Collections Framework Composto por diversas interfaces, classes abstratas e implementações que oferecem vantagens diferentes para cenários diferentes, determinando certos mecanismos como, por exemplo, protocolo de iteração para navegação nas coleções. Classes estão disponíveis no pacote java.util. Exemplo : • java.util.ArrayList; • java.util.Collection; • java.util.Arrays; • java.util.Collections. Conectividade com banco de dados relacionais 4
  • 5. Métodos equals() e hashCode() Vamos estudar dois métodos fundamentais para o bom funcionamento de nossas classes dentro das coleções : • public boolean equals(Object o) – Usado para comparar dois objetos. • public int hashCode() – Usado para criar um código que representa o objeto, o valor retornado deve ser calculado com base nos atributos considerados pelo método equals. Collections e Generics 5
  • 6. Métodos equals() Ao sobrescrever o método equals deve se levar em consideração as seguintes relações: • Reflexão: x.equals(x) deve ser true para qualquer x diferente de null; • Simetria: para x e y diferentes de null, se x.equals(y) é true, e y.equals(x) também deve ser true; • Transitividade: para x,y e z diferentes de null, se x.equals(y) é true, e y.equals(z) é true, então x.equals(z) também deve ser true. • Consistencia: para x e y diferentes de null, múltiplas chamadas de x.equals(y) devem sempre retornar o mesmo valor. • Para x diferente de null, x.equals(null) deve sempre retornar false. Collections e Generics 6
  • 7. Exemplo Collections e Generics 7 public class Pessoa { private long id; private String nome; @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (int) (id ^ (id >>> 32)); result = prime * result + ((nome == null) ? 0 : nome.hashCode()); return result; } } O código abaixo foi gerado pelo eclipse, com base nos atributos da classe Pessoa.
  • 8. Métodos hashCode() Importante sobrescrever este método ao se trabalhar com coleções em Java de alto desempenho do tipo “Tabela Hash”. • Caso não seja implementado, teremos problema em trabalhar com coleções de alto desempenho, pois as operações de localização podem não funcionar. • As implementações de hashCode e equals devem ser coerentes, ou seja, sempre que dois objetos forem considerados iguais pelo método equals, devem possuir o mesmo valor hashCode. Collections e Generics 8
  • 9. Exemplo Collections e Generics 9 public class Pessoa { private long id; private String nome; @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Pessoa other = (Pessoa) obj; if (id != other.id) return false; if (nome == null) { if (other.nome != null) return false; } else if (!nome.equals(other.nome)) return false; return true; } }} O código abaixo foi gerado pelo eclipse, com base nos atributos da classe Pessoa.
  • 10. Interface Java.util.Collection Estabelece um contrato básico que todas as coleções do Collections Framework devem seguir. Nela estão definidos os métodos básicos que todas as coleções devem implementar. No framework não existe nenhuma classe concreta que implemente diretamente essa interface. A única implementação existente é AbstractCollection que é uma classe abstrata, cujo intuito é facilitar a criação de implementações de coleções . Em vez de implementar diretamente Collection, podemos estender AbstractCollection e implementar somente os seus métodos abstratos. Collections e Generics 10
  • 11. Principais métodos Java.util.Collection • boolean add(Object o); • boolean addAll(Collection col); • boolean remove(Object o); • void clear(); • boolean contains(); • boolean containsAll(Collection col) • boolean isEmpty(); • int size(); • Iterator iterator(); • T[] toArray(T[] array); • Object[] toArray(); • boolean removeAll(Collection col); • boolean retainAll(Collection col); Collections e Generics 11
  • 12. A interface java.util.List Define uma coleção indexada, também conhecida como sequencia. Por isso, quando utilizamos objetos que implementam esta interface, objetamos o controle sobre a posição em que os elementos são inseridos, sendo possível acessa-los através de um índice inteiro. A interface Liste adiciona a Collection métodos relativos a manipulação do elementos traces do índice dos principais métodos acrescentados são: • void add(int indice, Object elem); • Object set(int indice, Object elem); • Object get(int indice); • Object removce(int indice); • int indexOf(Object o); Collections e Generics 12
  • 13. Principais implementações de java.util.List • java.util.Arraylist; – Utiliza como estrutura de dados interna um array. O tamanho do array é alterado em termos de execução de acordo com a necessidade da lista. • java.util.LinkedList; – Utiliza como estrutura interna uma lista ligada. Esse tipo de estrutura é mais eficiente para inserção e remoção de elementos do que um array, porem tem um desempenho pior na navegação e localização dos elementos. • java.util.Vector; – Também utiliza como estrutura interna um array, mas essa implementação é sincronizada. Collections e Generics 13
  • 14. A interface java.util.Set É a representação de conjuntos matemáticos, e é caracterizada por não possuir elementos repetidos no seu interior. A interface Set não acrescenta nenhum método novo em relação aos herdados de Collection, apenas impõe a condição de não permitir duplicados nos contratos dos métodos. Principais implementações: • java.util.HashSet • java.util.LinkedHashSet • java.util.SortedSet e NavigableSet • java.util.TreeSet Collections e Generics 14
  • 15. A interface Comparable Define classes que são ordenáveis, ou seja, que podem ser automaticamente ordenadas por coleções ou outras classes. A interface Comparable define um método que servira como regra de ordenação das instancias da classe que a implementa. int compareTo(Object o) Um número negativo deve ser retornado caso o objeto estiver antes daquele passado como parâmetro, zero se forem iguais e um numero positivo, se estiver após. Collections e Generics 15
  • 16. A interface Comparator Utilizada para definir uma regra diferente de ordenação entre dois objetos daquela sugerida pela interface Comparable. Por isto, define o método compare(Object o1, Object o2) retornando um valor inteiro, devendo ser positivo se o primeiro argumento for maior do que o segundo, zero se os elementos forem considerados iguais, e negativo se o primeiro argumento for menos do que o segundo. public class ComparadorClientesId implements Comparator { public int compare(Object o1, Object o2){ Cliente cl1 = (Cliente ) o1; Cliente cl2 = (Cliente) o2; return cl1.getId() – cl2.getId(); } } Collections e Generics 16
  • 17. Ordenando Arrays e Lists Podemos empregar métodos definidos nas classes utilitárias java.utilArrays e java.util.Collections, conforme a necessidade de ordenar arrays ou List. O métodos de ordenação da classe Arrays são : • void sort(Object[] array): ordenação array de acordo com a ordem natural dos elementos. • void sort(Object[] array, Comparator comp): Ordena o array de acordo com a regra estabelecida no comparator. Os métodos de ordenação da classe Collections são: • void sort(List lista): Ordena a lista de acordo com a ordem natural dos elementos, lança um ClassCastException caso os elementos não implementem Comparable. • void sort(List Array, Comparator comp): ordena a lista de acordo com a regra estabelecida no Comparator. Collections e Generics 17
  • 18. A interface java.util.Queue Introduzida a partir do Java5, e é utilizada tipicamente para gerenciar objetos como uma fila seguindo o conceito FIFO(first-in, first-out). Ou seja, novos objetos são adicionados no fim da fila, e objetos removidos são tomados no inicio. Além dos métodos básicos da interface Collection, a interface Queue também oferece métodos adicionais de inserção remoção e verificação de objetos. Métodos definidos pela interface: • boolean add(Object o); • boolean remove(Object o); • Object element(); Collections e Generics 18
  • 19. Principais implementações de java.util.Queue • java.util.PriorityQueue; – Funciona como uma lista ordenada que aceita objetos duplicados. . • java.util.Deque; – Possui características de uma fila, podem ela suporta a inserção e remoção dos objetos no final da fila. • java.util.ArrayDeque; – Utiliza como uma estrutura de dados interna um array. O tamanho do array é alterado em tempo de execução de acordo com a necessidade da lista. Collections e Generics 19
  • 20. A interface java.util.Map Interface define coleções que mapeiam pares chave-valor. Esse tipo de coleção é utilizada quando necessário localizar rapidamente um valor sem fazer uma busca em todos os elementos da coleção. A localização é feita através da chave , que deve ser única. Collections e Generics 20 Map Chave (Object) valor (Object) RG1 Cliente 1 RG1 RG1 RG1 Cliente 2 Cliente 3 Cliente N
  • 21. Principais métodos de java.util.Map • object put(Object chave, Object valor); • boolean containsKey(Object chave); • boolean containsValue(Object valor); • Object get(Object chave); • Object remove(Object chave); • int size(); • Set ketSet(); • Collection values(); Collections e Generics 21
  • 22. Principais implementações de java.util.Map • java.util.HashMap Implementação de map que utiliza uma estrutura de dados do tipo tabela hash para armazenar os pares chave-valor. • java.util.HashTable Igual ao hashmap, mas essa classe é sincronizada. • java.util.LinkedHashMap Utiliza como estrutura de dados interna uma tabela hash, a diferença desta para HashMap é que mantem as chaves em ordem de inserção, ou por frequência de acesso. • java.util.SortedMap Adiciona ao contrato de Map, a característica de manter suas chaves ordenadas. • java.util.NavigableMap Extensão de SortedMap, basicamente introduz novos métodos de busca. • java.util.TreeMap Implementa a interface NavigableMap e, por isso, garante que as chaves serão ordenadas em ordem ascendente, de acordo coma ordem natural dos elementos, ou então, por um objeto do tipo Comparator passo como parâmetro na construção do TreeMap. Collections e Generics 22
  • 23. Java Database Conectivity (JDBC) Esta API é utilizada para facilitar o acesso a bancos de dados relacionais a partir de aplicações Java. Por meio de JDBC, é possível realizar instruções SQL(Structured Query language) num banco de dados relacional para gravar, alterar ou ler dados manipuladores pelo programa Java. Collections e Generics 23
  • 24. Driver JDBC O driver JDBC é um conjunto de classe Java que tem a habilidade de se comunicar com o banco de dados relacional realizando tarefas como: • Criar conexões; • Executar comandos SQL; • Chamar Stored Procedures; • Criar Tabelas, etc. Tipos: Tipo 1 – JDBC-ODBC Bridge, atuando como uma ponte entre JDBC e ODBC. Tipo 2 – Parte da implementação em código nativo, parte em Java. Tipo 3 – Este driver utiliza um protocolo de rede próprio para se comunicar com um servidor proprietário que se comunica com o banco de dados. Tipo 4 – 100% Java, o driver foi totalmente implementado em Java. Collections e Generics 24
  • 25. Driver Oracle A oracle assim como outras fabricantes de banco de dados distribui o driver para acesso ao seu banco, que pode ser baixado em : Oracle Database 10g Release 2 JDBC Drivers http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201- 088211.html Oracle Database 11g Release 2 JDBC Drivers http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010- 090769.html Collections e Generics 25
  • 26. Obtendo uma Conexão Em se tratando de JDBC todas classes utilizadas pertencem ao pacote java.sql.*. Exemplo: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class TesteConexaoJDBC{ public staic void main(String[] args){ Connection conn = null; try{ conn = DriverManager.getConnection(“jdbc:oracle:thin:@1030:DB”,”user”, “password”); conn.close; }catch(ClassNotFoundException e){ e.printStackTrace(); } catch(SQLException e){ e.printStackTrace(); } } } Collections e Generics 26
  • 27. Fechando a Conexão De um modo geral, é recomendável fechar a conexão no bloco finally, afinal ele sempre será executado ! Exemplo: try{ conn = DriverManager.getConnection(“jdbc:oracle:thin:@1030:DB”,”user”, “password”); }catch(ClassNotFoundException e){ e.printStackTrace(); } catch(SQLException e){ e.printStackTrace(); } finally { try{ if(conn !=null){ conn.close(); } }catch(SQLException e){ e.printStackTrace(); } } Collections e Generics 27
  • 28. Realizando uma consulta Exemplo: // Cria-se Statement com base na conexão con Statement stmt = con.createStatement(); // Exemplo: navegando e exibindo os dados dos filmes sql = "SELECT `titulo`,`ano` FROM `filmes`"; // Executa-se a consulta dos campos titulo,ano da tabela de filmes ResultSet res = stmt.executeQuery(sql); int ano; String titulo; while (res.next()) { ano = res.getInt("ano"); titulo = res.getString("titulo"); System.out.println("ROW = " + titulo + ": " + ano); } Collections e Generics 28
  • 29. Incluindo Registro Exemplo: // Cria-se Statement com base na conexão con Statement stmt = con.createStatement(); //código sql sql = "INSERT INTO `filmes` (`titulo`, `ano`, `diretor`)" + "VALUES ('The Matrix', 1999, 'Andy Wachowski & Larry Wachowski')"; stmt.executeUpdate(sql); Collections e Generics 29
  • 30. Atualizando Registro Exemplo: // Cria-se Statement com base na conexão Statement stmt = con.createStatement(); stmt = conn.createStatement(); String sql = "UPDATE Registration " + "SET age = 30 WHERE id in (100, 101)"; stmt.executeUpdate(sql); Collections e Generics 30
  • 31. Deletando Registro Exemplo: // Cria-se Statement com base na conexão Statement stmt = con.createStatement(); String sql = "DELETE FROM Registration " + "WHERE id = 101"; stmt.executeUpdate(sql); Collections e Generics 31
  • 32. Fim da Quinta Aula Acabou !