Buscar

CCT0695 - Programacao II - Aulas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 166 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 166 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 166 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

2021.1
PROGRAMAÇÃO II
CCT0695
PROFESSOR: HENRIQUE TAVARES
1
2021.1
CONTEÚDO
2
➢ MODELAGEM COMPORTAMENTAL
o Elementos Genéricos
o Anotações e Reflexividade Computacional
o Java Collection Framework (Coleções)
o Representação de entidades e relacionamentos com uso de coleções
➢ BANCO DE DADOS
o Manipulação de exeções
o Middleware
o Consulta e manipulação de dados com JDBC
o Padrão DAO
o Sistema de Banco de Dados na arquitetura MVC
2021.1 3
➢ INTERFACES GRÁFICAS
o Bibliotecas AWT e SWING
o Criação de janelas por composição
o Manipulação de eventos
o Biblioteca SWT
o Biblioteca JavaFX
o Arquitetura MVC no JavaFX
➢ PARALELISMO E REDE
o Criação e controle de tarefas em paralelo
o Criação de servidor e cliente de rede via Socket
o Comunicação assíncrona com Socket e Thread
o Sistema MVC com uso de Socket
o Clientes gráficos para ambiente Socket-MVC
CONTEÚDO
2021.1
METODOLOGIA 
DE 
AVALIAÇÃO
4
AVALIAÇÃO
O processo de avaliação oficial será composto de três etapas, Avaliação 1 (AV1),
Avaliação 2 (AV2) e Avaliação 3 (AV3), sendo AV2 e AV3 unificadas, a partir de um
banco de questões propostas pelos professores da Estácio de todo o Brasil.
As avaliações poderão ser realizadas através de provas teóricas, provas práticas,
e realização de projetos ou outros trabalhos, representando atividades que possam
vir a compor o grau final de cada avaliação não poderá ultrapassar o grau máximo
de 10, sendo permitido atribuir valor decimal às avaliações. Caso a disciplina,
atendendo o projeto pedagógico de cada curso, além de provas teóricas e/ou
práticas contemple outras atividades acadêmicas de ensino, estas não poderão
ultrapassar 20% da composição do grau final.
2021.1 5
AVALIAÇÃO
A avaliação AV1 contemplará o conteúdo da disciplina até a sua realização.
As avaliações AV2 e AV3 abrangerão todo o conteúdo da disciplina.
Para aprovação na disciplina, o aluno deverá:
1. Atingir resultado igual ou superior a 6,0, calculado a partir da média
aritmética entre os graus das avaliações, sendo consideradas apenas as duas
maiores notas obtidas dentre as três etapas de avaliação (AV1, AV2 e AV3). A
média aritmética obtida será o grau final do aluno na disciplina;
2. Obter grau ou superior a 4,0 em, pelo menos, duas das três avaliações;
3. Frequêntar, no mínimo 75% das aulas ministradas.
METODOLOGIA 
DE 
AVALIAÇÃO
2021.1
CARACTERÍSTICAS
DO JAVA
6
2021.1
JDK
- O que é JDK ?
- Java Development Kit
- É um produto da Sun direcionado a desenvolvedores Java;
- Seus principais componentes são:
• javac: O compilador, que converte código fonte em bytecodes Java.
• jar: O empacotador que empacota as classes em um arquivo JAR.
• javadoc: O gerador de documentação, que gera documentação 
automaticamente a partir de comentários no código.
• jdb: O debugador.
2021.1
JDK
O JDK tem também uma JRE (Java Runtime Environment) completa:
• Máquina Virtual Java
• Bibliotecas de classes apresentadas no ambiente de produção e 
algumas bibliotecas que são úteis
2021.1
JDK - Instalação
- Download do JDK:
https://www.oracle.com/technetwork/pt/java/javase/downloads/index.html
https://www.oracle.com/technetwork/pt/java/javase/downloads/index.html
2021.1
Programas em Java
- Extensão .java
• Para compilar: javac Classe.java
• Para executar: java Classe
• Execução a partir de um arquivo JAR:
java -jar nomeDoPacote.jar
O programa java cria apenas objeto inicial e a primeira 
mensagem.
2021.1
Documentação Oficial Java
- Documentação Oficial:
https://www.oracle.com/java/technologies/javase-documentation.html
https://www.oracle.com/java/technologies/javase-documentation.html
2021.1
Programas Java com uso
do NetBeans
- CRIAÇÃO DO PROJETO:
ARQUIVO > NOVO PROJETO > Java (APLICAÇÃO JAVA) > PRÓXIMO
1. ESCREVE O NOME DO PROJETO
2. ESCOLHE O LOCAL A SER GRAVADO O PROJETO
3. FINALIZA.
- CRIAÇÃO DE CLASSES:
ARQUIVO > NOVO ARQUIVO > JAVA > CLASSE JAVA > PRÓXIMO > NOME DA CLASSE > FINALIZA.
2021.1
Programas Java com uso
do NetBeans
public class Programa01 {
public static void main(String[ ] args) {
int A = 6;
int B = 8;
System.out.println("\tSoma do conteudo das variaveis A e B = "+(A+B));
System.out.println("\n\tPrimeiro programa em Java\n\n");
}
}
2021.1
INTRODUÇÃO
14
2021.1
Programação Procedural
Organização modular não respeita a similaridade das 
informações.
Tem por objetivo identificar procedimentos que 
realizarão algum tipo de processamento que mistura 
dados com diferentes semânticas. 
2021.1
Clientes
Funcionários
Vendas
Itens das Vendas
Parcelas da Vendas
Condições de Pagamento
Programação Procedural
2021.1
Programação OO
Informações organizadas em classes
São identificadas as entidades e seus relacionamentos para 
compor um sistema.
A computação flui por meio de um mar de mensagens 
trocadas entre os objetos.
2021.1
Programação OO
Itens da Venda
Parcelas da Venda
Condições de Pagamento
Cliente
Troca de Mensagens
Funcionário
Venda
2021.1
Classes
Classes são utilizadas para caracterizar e descrever cenários: 
trata-se do uso de semântica!
Na linguagem de programação Java, programas são 
construídos a partir de classes.
A partir de uma definição de classe, você pode criar qualquer 
quantidade de objetos.
2021.1
Classes
Na classe são definidos os membros do objeto: seus atributos 
(dados) e métodos (comportamentos)
2021.1
Pacotes (I)
As classes são "arrumadas" dentro de pacotes. 
2021.1
Pacotes (II)
Pacotes são unidades de agrupamento de classes.
Classes são agrupadas por vários motivos: 
Organização
Performance da aplicação
Solução de escopos de variáveis 
Os pacotes podem ter sub-pacotes de qualquer profundidade.
Para evitar conflitos de nomes:
O nome do pacote deve ser único para classes e interfaces no pacote.
Escolher um nome que seja ao mesmo tempo significativo e único.
2021.1
Especialização
É a criação de subclasses a partir de superclasses.
As subclasses herdam de sua classe mãe:
Estrutura
Comportamento
Relacionamentos
Algumas destas características podem ser redefinidas, 
caracterizando uma especialização com relação à classe 
mãe.
Características adicionais podem ser definidas.
2021.1
Generalização
É a criação de superclasses a partir de suas subclasses.
As características comuns entre as subclasses são 
colocadas na superclasse.
Procedimento para criação de superclasse:
Observar a estrutura e comportamento comuns entre as 
subclasses.
Incorporar estas características à superclasse. 
As classes originais passam a ser subclasses da nova 
superclasse.
2021.1
Exemplos de Classes
Um cenário de uma agência bancária pode ser 
caracterizado com as seguintes classes:
⚫ PessoaFisica
⚫ PessoaJuridica
⚫ ContaCorrente
⚫ ContaPoupanca
⚫ TituloDeCapitalizacao
⚫ FundoInvestimento
⚫ DOC
⚫ EscriturarioCaixa
⚫ GerenteOperacional
⚫ GerenteDeRelacionamento
⚫ CaixaEletronico
⚫ Deposito
⚫ Saque etc.
2021.1
Similaridade dos Significados
Quais classes podem ser reunidas de acordo com a 
proximidade dos seus significados?
Conta
ContaCorrente
ContaPoupanca
Cliente
PessoaFisica
PessoaJuridica
Investimento
TituloDeCapitalizacao
FundoInvestimento
OperacaoBancaria
OperacaoOutroBanco
DOC
OperacaoMesmoBanco
Deposito
Saque
Funcionario
EscriturarioCaixa
GerenteOperacional
GereteDeRelacionamento
2021.1
Herança: 
a hierarquia dos Significados
• Java usa herançapara reutilizar classes existentes
• Herança estabelece uma relação de similaridade entre 
essas classes. 
• Exemplo:
ContaPoupanca é uma Conta
PessoaFisica é um Cliente
TituloDeCapitaliacao é um Investimento
Em Java:
class ContaPoupanca extends Conta {}
2021.1
java.lang.Object
É a raiz da hierarquia de classes da API do Java
Toda classe estende Object, direta ou indiretamente
Classes que não declaram estender ninguém, estendem 
Object diretamente.
2021.1
java.lang.Object
Classes que declaram estender outra classe, herdam de 
Object pela outra classe com a hierarquiaque começa
em Object.
Todos os métodos de Object estão automaticamente
disponíveis para qualquer objeto
Porém, as implementações são default, e geralmente inúteis
para objetos específicos.
2021.1
Exercicio 1
Usando herança e aplicando generalização, crie o código
Java que exibe a relação de similaridade entre as 
classes: EscriturarioCaixa, GerenteOperacional, 
GerenteDeRelacionamento, CaixaEletronico, Deposito, 
Saque, PessoaFisica, PessoaJuridica, ContaCorrente, 
ContaPoupanca, TituloDeCapitalizacao, FundoInvestimento 
e DOC.
2021.1
Objetos
Um objeto é uma entidade que engloba dados e os 
métodos necessários à sua manipulação.
Objetos são unidades autocontidas que executam 
tarefas personalizadas: trata-se de estruturas 
semanticamente autosuficientes.
2021.1
Objetos – construção
Objetos sao criados à imagem da sua classe geradora.
2021.1
Objetos – destruição
Após sua utilização, objetos podem ser destruídos.
2021.1
Objetos
Pense em uma classe como uma fábrica com 
esquemas e instruções para construir artefatos: 
objetos são os artefatos que a fábrica produz.
Para construirmos um objeto a partir da classe 
ContaCorrente:
ContaCorrente minhaConta = new ContaCorrente();
2021.1
Construtores de Objetos
Construtores são procedimentos realizados na construção de objetos e 
devem possuir o mesmo nome da classe em questão.
Podemos garantir que um objeto seja construído de varias formas 
diferentes, por exemplo:
Conta minhaConta = new Conta();
OU AINDA…
Conta minhaConta = new Conta(“Flavia”);
OU AINDA…
Conta minhaConta = new Conta(“Flavia”, 2000);
2021.1
Encapsulamento
Algumas informações não devem ser construídas dentro de certos 
objetos pois entram em discordância com o significado da classe de 
objetos.
Torna-se necessário isolar tais informações em outros objetos o que 
torna a programação mais coerente. 
Exemplo:
Cliente umCliente = new Cliente(“Flavia”);
LOGO DEPOIS…
Conta minhaConta = new Conta( umCliente , 2000);
2021.1
Encapsulamento
• Sendo assim, encapsulamento é uma forma de isolamento 
de dados (atributos) e comportamento (métodos) dos 
objetos das classes.
• Classes Java encapsulam atributos e métodos da seguinte 
forma:
class Conta {
float saldo;
void creditar( float valor ) { }
void debitar( float valor ) { }
void encerrar( ) { }
}
class Cliente {
String nome;
String endereco;
char sexo;
void enviarMalaDireta( ) { }
void realizarCobranca( ) { }
}
2021.1
Habilitando Construtores de 
Objetos
Construtores de objetos devem ser disponibilizados na 
classe de onde serão criados os objetos:
class Conta {
float saldo;
Cliente titular;
void creditar( float valor ) { }
void debitar( float valor ) { }
void encerrar( ) { }
Conta ( ) { }
Conta ( Cliente cliente, double valor ) { }
}
2021.1
Variáveis
Variáveis são usadas em linguagens em geral para armazenar valores.
Valores são passados para variáveis através de operações de atribuição
Atribuição de valores 
Atribuição de referências (variáveis de objeto)
numero = 44;
letra = ‘C’;
flag = false;
frase = “Saldo insuficiente!” ;
umCliente = new Cliente();
umaConta = new Conta(); 
2021.1
Declaração de variáveis
A declaração de uma variável é realizada quando 
citamos o seu tipo:
int numero;
char letra;
boolean flag;
String frase;
Cliente umCliente;
Conta umaConta;
2021.1
Declaração com Atribuição 
Frequentemente, ao declararmos uma variável 
podemos logo atribuir um valor que a inicializa.
int numero = 44;
char letra = ‘C’;
boolean flag = false;
String frase = “Saldo insuficiente!” ;
Cliente umCliente = new Cliente();
Conta umaConta = new Conta();
2021.1
Tipos primitivos
Sao atômicos, por isso nao podem ser quebrados 
em pedaços menores.
int numero = 44;
char letra = ‘C’;
boolean flag = false;
2021.1
Tipos primitivos
2021.1
Tipos Complexos
Tipos complexos são compostos por outros tipos:
Date data = new Date(2008, 2, 18);
int[] vetorInteiros = {1, 4, 7, 9};
OU AINDA…
String frase = “Saldo insuficiente!” ;
Cliente umCliente = new Cliente(“Flavia”);
Conta minhaConta = new Conta( umCliente , 2000);
2021.1
Declarando Variáveis, Atributos e 
Parâmetros na classe
• Variaveis sao declaradas no corpo dos metodos
• Parametros sao declarados no cabecalho dos metodos
• Atributos sao declarados no corpo da classe
class Conta {
double saldo; Cliente titular; boolean ativa;
void encerrar( ) { }
void creditar( double valor ) { }
void debitar( double valor ) {
double debito = valor;
saldo = saldo – debito;
}
Conta( ) {
ativa = true;
}
Conta(Cliente cliente, double valor ) {
ativa = true;
saldo = valor;
titular = cliente;
}
}
2021.1
Exercicio 2
Termine a programação da classe Conta 
completando os métodos void encerrar() e 
void creditar(double valor)
2021.1
Exercício 3
Pergunta: de que forma podemos consultar o nome do 
titular de uma conta quando construimos objetos 
assim:
Cliente umCliente = new Cliente(“Flavia”);
LOGO DEPOIS…
Conta minhaConta = new Conta( umCliente , 2000);
2021.1
MODELO
COMPORTAMENTAL
48
2021.1
Programação Procedural
Programação procedural (ou programação procedimental)
• sinônimo de Programação Imperativa (Paradigma de
programação baseado em ordens/comandos)
• pode se referir a um paradigma de programação baseado em
chamadas a procedimento (en: procedure call).
• Os Procedimentos, também são conhecidos como rotinas e
sub-rotinas, com passos computacionais a serem executados e
reutilizados várias vezes, podendo ser reconfigurados.
2021.1
Programação OO
• Informações organizadas em Classes
• São identificadas as entidades e seus relacionamentos para 
compor um sistema.
• A computaçãoflui por meio de um mar de mensagens trocadas
entre os objetos.
2021.1
Anotações
• Introduzidas no Java 5
• São “decoradores” aplicados no nível das Classe e das Variáveis
que definem os descritores relacionados à própria Classe.
• A partir do Java 5 as anotações tiveram um papel determinante
na contrução de aplicativos com acesso aos Bancos de Dados
através do uso de JPA (Java Persistence API)
• JPA permite a realização de mapeamentos entre tabelas de
bancos de dados relacionais e programas orientados a objetos
ORM (object-relational mapping)
2021.1
Anotações e ORM
2021.1
Anotações e ORM
2021.1
Anotações
Classe persistente simples, 
Employee, definida sem anotações
public class Employee {
private int id = 0;
private String nome = null;
…
}
Classe persistente simples, 
Employee, definida com anotações
@Entity
public class Employee {
private int id = 0;
private String nome = null;
…
}
• As anotações são concisas e permitem verificações imediatas de
tipos na compilação.
• Elas são decorações que viabilizam a administração eficiente dos
metadados
2021.1
Identificador
@Entity
public class Employee {
@Id
private int id = 0;
private String nome = null;
//O Hibernate utiliza o método para acessar o campo.
public int getId( ) {
return id;
}
...
}
Todas as entidades persistentes devem ter seus identificadores definidos; do
contrário, o Hibernate irá reclamar.
Desse modo, usamos a anotação @Id para indicar o identificador do
objeto ao framework. Em nossa classe Employee, a chave primária é declarada
como uma variável id, portanto decoramos id com a anotação relevante:
2021.1
Identificador ID
@Entity
public class Employee {
@Id
@Column(name=”EMPLOYEE_ID”)
private int id = 0;
private String nome = null;
public int getId( ) {
return id;
}
...
}
Quando usamos a anotação @Id na variável id, como no exemplo anterior, o Hibernate mapeia um
campo chamado ID de nossa tabela Employee à variável id da classe Employee.
Outro aspecto a ser observado: A maioria dos bancos de dados não nos permitirá criar um campo
chamado ID, pois ela é uma palavra-chave reservada. Em circunstâncias como essa, normalmente
alteramos o nome do campo – por exemplo, EMPLOYEE_ID no caso da tabela Employee anterior.
Como o campodo objeto e o nome da coluna não são iguais, devemos definir o nome da coluna
explicitamente usando uma anotação @Column adicional.
2021.1
Identificador ID
@Entity
public class Employee {
@Id
@Column(name=”EMPLOYEE_ID”)
private int id = 0;
private String nome = null;
public int getId( ) {
return id;
}
...
}
Quando usamos a anotação @Id na variável id, como no exemplo anterior, o Hibernate mapeia um
campo chamado ID de nossa tabela Employee à variável id da classe Employee.
Outro aspecto a ser observado: A maioria dos bancos de dados não nos permitirá criar um campo
chamado ID, pois ela é uma palavra-chave reservada. Em circunstÇancias como essa, normalmente
alteramos o nome do campo – por exemplo, EMPLOYEE_ID no caso da tabela Employee anterior.
Como o campo do objeto e o nome da coluna não são iguais, devemos definir o nome da coluna
explicitamente usando uma anotação @Column adcional.
2021.1
Reflexidade Computacional
Em ciência da computação, reflexão computacional (ou somente reflexão) é a
capacidade de um programa observar ou até mesmo modificar sua estrutura ou
comportamento. Tipicamente, o termo se refere à reflexão dinâmica (em tempo
de execução), embora muitas linguagens suportem reflexão estática (em tempo
de compilação).
O Reflection, em poucas palavras, serve para determinar métodos e atributos que
serão utilizados de determinada classe (que você nem conhece) em tempo de
execução. Há inúmeras utilidades para esse tipo de tarefa, podemos citar por
exemplo a instalação de plugins adicionais ao nosso software desenvolvido.
2021.1
O que é Reflexão?
• Em Java, a reflexão é mais introspecção, porque você não pode alterar a estrutura de
um objeto.
• A reflexão é comumente usada por programas que exigem a capacidade de examinar ou
modificar em tempo de execução o comportamento de aplicativos em execução na
máquina virtual Java.
2021.1
Quando deve ser utilizada?
Reflexão permite-nos:
• Examinar a classe de um objeto em tempo de execução;
• Construir um objeto para uma classe em tempo de execução;
• Examinar campo e método de uma classe em tempo de execução;
• Invocar qualquer método de um objeto em tempo de execução;
• Alterar a acessibilidade do construtor, método e campo; etc.
2021.1
Quando deve ser utilizada?
1. Recursos de extensibilidade 
Um aplicativo pode fazer uso de classes externas, que necessitam 
“aprimoramento”. 
2. Depuradores e ferramentas de teste
Depuradores precisa ser capaz de examinar as partes privadas de uma 
classes. Ferramentas de teste podem fazer uso de reflexão para chamar 
sistematicamente um conjunto de APIs definidos em uma classe, para 
garantir um alto nível de cobertura de código em um conjunto de testes.
3. Metaprogramação
Soluções para desenvolvimento de software; Refatoração. 
2021.1
Como utilizar? Exemplos
Exemplo 1: Receber o nome da classe de um objeto;
Exemplo 2: Invocar o método de um objeto desconhecido;
Exemplo 3: Criar objetos de uma instância de Classe;
Exemplo 4: Obter construtor e criar instância;
Exemplo 5: Alterar o tamanho de um Array através da reflexão; 
Exemplo 6: Acessar atributos privados.
2021.1
Reflexidade Computacional
Class<ClassDesconhecida> classe = ClassDesconhecida.class;
for (Field atributo : classe.getDeclaredFields()) {
System.out.println(atributo.getName());
}
Perceba no código acima que não sabemos quais os métodos e atributos da
“ClassDesconhecida”, para isso vamos utilizar as ferramentas oferecidas pelo
Reflection afim de descobrir essas informações em tempo de execução.
Veja que através do método “DeclaredFields” conseguimos capturar todos os
atributos da classe em questão, mesmo sem saber como ela foi construída.
2021.1
Reflexidade Computacional
Riscos do Java Reflection
Deve-se usar este recurso com muito cuidado, sempre atentando aos possíveis
riscos que podem ser causados pelo uso indevido do mesmo:
• Redução de Desempenho, pois se o código que esta sendo executado for
requerido com muita frequência, consequentemente acarretará em uma
redução de desempenho.
• Problemas por restrição de segurança, especialmente se executado em um
ambiente com regras específicas
• Exposição de estrutura interna dos objetos, pois utilizando este recurso temos
acesso a todos os métodos e atributos de determinado objeto, isso pode ser
um problema em se tratando de segurança.
2021.1
Reflexidade Computacional
Benefícios do Java Reflection
Além dos riscos temos também os benefícios que podem ser
aproveitados se usarmos o Java Reflection da forma correta e
adequada.
- Facilidade na manutenção
- Minimização de Erros
- Ganho de Produtividade
- Padronização
- Extensibilidade
2021.1
Reflexidade em java - exemplo
package model;
public class Cliente {
private Integer matricula;
private String nome;
public Cliente(Integer matricula, String nome) { // MÉTODO CONSTRUTOR COM PARÂMETROS
super();
this.matricula = matricula; this.nome = nome;
}
public Cliente() {//MÉTODO CONSTRUTOR SEM PARÂMETROS
super();
}
public Integer getMatricula() { // MÉTODOS GETTERS e SETTERS
return matricula;
}
public void setMatricula(Integer matricula) {
this.matricula = matricula;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
2021.1
Reflexidade em java - exemplo
package model;
import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map;
public class RefleccaoMapCliente {
public static Map<String, Object> getAttributesMap(Object obj) {
Map<String, Object> attributesMap = new HashMap<String, Object>();
Class<?> objClass = obj.getClass();
Method[] methods = objClass.getMethods();
for(Method method : methods) {
if(method.getName().startsWith("get") && method.getReturnType() != void.class) {
String attributeName = getAttributeName(method.getName());
try {
Object value = method.invoke(obj);
attributesMap.put(attributeName, value);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return attributesMap;
}
private static String getAttributeName(String name) {
return name.substring(2);
}
}
2021.1
Reflexidade em java - exemplo
package control;
import java.util.Map;
import model.Cliente;
import model.RefleccaoMap;
public class Principal {
public static void main(String args[]){
Cliente cli = new Cliente();
Class<Cliente> classe = Cliente.class;
// cli.setMatricula(1); //ATRIBUI VALOR PARA O ATRIBUTO MATRICULA
// cli.setNome(“Henrique Tavares"); //ATRIBUI VALOR PARA O ATRIBUTO NOME
Map<String, Object> attributes = RefleccaoMap.getAttributesMap(cli);
System.out.println("REFLEXIDADE EM JAVA");
System.out.println("PROFESSOR: HENRIQUE TAVARES");
for(String key : attributes.keySet()) {
System.out.println(key + ": " + attributes.get(key));
}
}
}
2021.1
Material Extra
Livro:
Java Reflection in Action (In Action series) - Ira R. Forman, Nate Forman
Tutoriais:
• http://tutorials.jenkov.com/java-reflection/index.html
• https://www.javacodegeeks.com/2014/11/java-reflection-api-tutorial.html
2021.1
Exercícios
1 – Qual o conceito de anotações em uma classe java?
2 – O que as anotações definem em uma classe java?
3 – O as anotações representam em uma classe java?
4 – Defina em java a classe persistente simples Funcionario sem
anotação, composta com os atributos descritos abaixo.
id: inteiro, nome: String, logradouro : String, bairro: String,
cidade: String, uf: String, salario: Double.
5 – Defina em java a classe persistente simples Funcionario com
anotação, composta com os atributos descritos abaixo.
id: inteiro, nome: String, logradouro : String, bairro: String,
cidade: String, uf: String, salario: Double.
6 – Para que serve o uso da anotação @Id em uma classe java?
7 – Defina em java a classe persistente simples Funcionario com
anotação e um identificador, composta com os atributos
descritos abaixo.
id: inteiro, nome: String, logradouro : String, bairro: String,
cidade: String, uf: String, salario: Double.
2021.1
8 – Em uma classe java para queserve a anotação @Column? (pesquisar)
9 – Para que serve o Reflection em uma classe java?
10 – Quais os riscos do Java Reflection?
11 – Quais os benefícios do Java Reflection?
12 – Codifique um sistema que:
a) realize o processo de reflexidade para a classe Cliente com os
seguintes atributos: Matricula, Nome, Bairro e Cidade;
b) atribua via programa valores para os atributos da classe.
c) exiba na tela o valor dos atributos com seus respectivos conteúdos.
13 – Codifique um sistema que:
a) realize o processo de reflexidade para a classe Cliente com os
seguintes atributos: Matricula, Nome, Bairro e Cidade;
b) atribua via teclado valores para os atributos da classe, com uso da classe
JOptionPane.
c) exiba na tela o valor dos atributos com seus respectivos conteúdos.
Exercícios
2021.1
MODELO
COMPORTAMENTAL
72
2021.1
Coleção:
estrutura de
dados
Vários objetos Objeto de agregação
A fundação do framework de coleções do Java
Declaração de 
uma coleção Collection<String> colecao = new ArrayList();
Java Collection Framework
(Coleções)
2021.1
API Collections
• Interfaces
Manipulação independente dos detalhes da sua representação.
Interfaces
Collection
Implementações
Algoritmos
Java Collection Framework
(Coleções)
2021.1
API Collections - Collection
raiz da hierarquia de coleções
interface base para todas as coleções
manipular coleções com máxima generalidade
Define operações como:
Java Collection Framework
(Coleções)
• adição (add),
• remoção (remove);
• esvaziamento (clear);
• tamanho (size);
• conversão para array (toArray);
• iterador (iterator);
• verificações de existência 
(contains e isEmpty).
2021.1
Há ainda classes que implementam a interface Map ao invés da Collection,
mesmo assim, faz parte da API Collection.
API Collections - Implementações
concretas das coleções estruturas de dados reutilizáveis.são 
Java Collection Framework
(Coleções)
2021.1
API Collections - Algoritmos
Métodos
(Busca e Ordenação)
Implementar
Interfaces das
coleções
• Algoritmo shuffle
• Os algoritmos reverse, fill, copy, max, min
• Algoritmo binarySearch
• Algoritmos addAll, frequency, disjoint
Java Collection Framework
(Coleções)
2021.1
Set
<<interface>>
Set
HashSet LinkedHashSet TreeSet
<<interface>>
SortedSet
<<interface>>
Collection • Pesquisa de dados + rápida do que obj tipo 
List
• inserção de dados é mais lenta
• Não precisa especificar a posição para 
adicionar um elemento
• conjuntos que pode ser implementado 
como instâncias das classes:
HashSet ou TreeSet;
• Não aceita valores duplicados
• Os elementos não são ordenados, nem 
se mantém na ordem em que foram 
inseridos
Set<String> colecaoSet = new HashSet <String>();
colecaoSet.add(“Pelé");
colecaoSet.add(“Maradona");
colecaoSet.add(“Zico");
Sintaxe
Java Collection Framework
(Coleções)
2021.1
Set - Exemplo
package control; 
import java.util.HashSet;
import java.util.Set; 
public class TestandoSet {
public static void main(String[] args) {
Set<String> colecaoSet = new HashSet<String>();
colecaoSet.add(“Pele");
colecaoSet.add(“Zico");
colecaoSet.add(“Maradona");
//dados duplicados não são inseridos no Set
colecaoSet.add(“Zico");
colecaoSet.add(“Pele");
System.out.println("Tamanho coleção Set: "+colecaoSet.size());
int count = 0;
for(String valor : colecaoSet){
System.out.println(++count + " -> " + valor);
}
}
}
Java Collection Framework
(Coleções)
2021.1
List
<<interface>>
List
ArrayList Vector LinkedList
<<interface>>
Collection
Ordenada (sequência)
Elementos duplicados
Índice numérico
É como um array de tamanho variável
Métodos de inserção e remoção
Collection<String> nomes = new ArrayList();
nomes.add(“Maradona");
nomes.add(“Pele");
nomes.add(“Zico");
nomes.add(“Pele");
nomes.add(“Zico");
Sintaxe
Java Collection Framework
(Coleções)
2021.1
List - Exemplo
package package model;
import java.util.Collection; 
import java.util.ArrayList;
public class ColectionList {
public static void main(String[] args) { 
Collection<String> nomes = new ArrayList();
nomes.add(“Zico");
nomes.add(“Pele");
nomes.add(“Maradona");
nomes.add(“Pele");
nomes.add(“Maradona");
System.out.println("Lista de nomes: "+nomes);
}
}
Java Collection Framework
(Coleções)
2021.1
Queue (Fila)
<<interface>>
Queue
PriorityQueueLinkedList
<<interface>>
Collection
Operações: (Além das herdadas de Collection)
• inserção (offer);
• remoção (remove, pool);
• inspeção (peek: para retornar o <head> da fila).
...forma de visualizar uma List, acesso às operações
de “enfileirar” e “desenfileirar” alguma coisa.
Java Collection Framework
(Coleções)
2021.1
Queue (Fila) - Exemplo
package model;
import java.util.LinkedList;
import java.util.Queue;
public class QueueL {
public static void main(String[] args) {
Queue<String> objQueue = new LinkedList<>();
// ADICIONANDO ELEMENTOS NA LISTA
objQueue.add(“PELE");
objQueue.add(“ZICO");
objQueue.add(“MARADONA");
System.out.println("ELEMENTOS DA LISTA " + objQueue);
System.out.println("Exibindo o Elemento frontal = " + 
objQueue.peek());
System.out.println("REMOVENDO o Elemento frontal");
String nome = objQueue.remove(); //REMOVE O PRIMEIRO ELEMENTO DA 
LISTA
}
}
Java Collection Framework
(Coleções)
2021.1
Map
Não pode conter chaves duplicadas (= Set)
Os valores podem ser repetidos para chaves diferentes.
Cada chave mapeia para no máximo um valor.
não possui uma ordem definida para percorrimento.
Map<E> mapa = new Type();
Onde:
E - é o objeto declarado, podendo ser classes Wrappers ou tipo de coleção.
Type - é o tipo de objeto da coleção a ser usado.
Sintaxe
Java Collection Framework
(Coleções)
2021.1
Ordenação de Objetos (I)
ELEMENTOS (tipo) ORDEM
String alfabética
Date cronológica
ArrayList<String> obj = new ArrayList<String>(); 
obj.add(“PELE"); 
obj.add(“ZICO"); 
obj.add(“MARADONA"); 
obj.add(“RONALDO FENÔMENO"); 
obj.add(“ROBERTO CARLOS"); 
Sintaxe
Collections.sort(obj); ordem crescente
Collections.sort(obj, Collections.reverseOrder()); ordem decrescente
Java Collection Framework
(Coleções)
2021.1
Ordenação de Objetos (II)
Automaticamente
Ordenação natural dos objetos de seu tipo
Java Collection Framework
(Coleções)
2021.1
Escrevendo tipos comparáveis
public interface Comparable<T>{
public int comparableTo(T o);
}
Estrutura
possíveis retornos
inteiro negativo: se objeto recebido como parâmetro < objeto atual;
compareTo()
zero: se o objeto recebido como parâmetro = objeto atual;
inteiro positivo: se recebido como parâmetro > objeto atual
Se objeto atual não puder ser comparado com o objeto passado como 
parâmetro, o método lança uma exceção.
A classe que implementar a interface
Comparable precisa 
implementar o método 
compareTo( ).
Java Collection Framework
(Coleções)
2021.1
Ordenando tipos comparáveis - Exemplo
//Criar a classe Aluno
package control;
public class Aluno {
int matricula; 
String nome, cidade; 
// MÉTODO CONSTRUTOR
public Aluno(int matricula, String nome, String cidade) 
{ 
this.matricula = matricula; 
this.nome = nome; 
this.cidade = cidade; 
} 
public String toString() 
{ 
return this.matricula + " " + this.nome + " " + 
this.cidade; 
} 
}
Java Collection Framework
(Coleções)
2021.1
//Criar a interface InterfaceOrdena
package control;
import java.util.Comparator;
public class InterfaceOrdena implements Comparator<Aluno> 
{ 
// ORDENA POR MATRICULA DO ALUNO EM ORDEM CRESCENTE 
public int compare(Aluno a, Aluno b) 
{ 
return a.matricula - b.matricula; 
} 
}
Ordenando tipos comparáveis - Exemplo
Java Collection Framework
(Coleções)
2021.1
//Criar a classe TestaCliente
package model; import control.Aluno; import control.InterfaceOrdena;
import java.util.ArrayList; import java.util.Collections;
public class TestaCliente {
public static void main (String[] args) { 
ArrayList<Aluno> alu = new ArrayList<Aluno>(); 
alu.add(new Aluno(1172, “PELE",“SANTOS")); 
alu.add(new Aluno(1171, “ZICO", “FLAMENGO")); 
alu.add(new Aluno(1173, “ROBERTO CARLOS", “PALMEIRAS")); 
alu.add(new Aluno(1170, “MARADONA", “BOCA JUNIORS")); 
System.out.println("LISTA NÃO ORDENADA"); 
for (int i=0; i<alu.size(); i++) 
System.out.println(alu.get(i)); 
Collections.sort(alu, new InterfaceOrdena()); 
System.out.println("\nLISTA ORDENADA POR MATRICULA DO 
ALUNO EM ORDEM CRESCENTE "); 
for (int i=0; i<alu.size(); i++) 
System.out.println(alu.get(i)); 
} 
}
Ordenando tipos comparáveis - Exemplo
Java Collection Framework
(Coleções)
2021.1
Ordenação não natural (I)
objetos que não implementam Comparable?
objetos de uma forma diferente da sua ordenação natural?
Comparator
(Objetos que implementam esta interface encapsulam uma ordenação)
public interface Comparator<T>{
int compare(T o1, T o2);
}
Estrutura
Java Collection Framework
(Coleções)
2021.1
Ordenação não natural (II)
compare()
seus dois argumentos
retorna
inteiro negativo: se o primeiro 
objeto < segundo objeto
inteiro positivo: se o primeiro 
objeto > segundo objeto
zero: se o primeiro objeto = 
segundo objeto
Se algum dos objetos for de um 
tipo inapropriado para
o Comparator, o método 
lança uma exceção
Java Collection Framework
(Coleções)
2021.1
Ordenação não natural (II) - Exemplo
//Criar a classe Aluno
package control;
public class Aluno {
int matricula; String nome, cidade; 
public Aluno(int matricula, String nome, String cidade) 
{ this.matricula = matricula; 
this.nome = nome; 
this.cidade = cidade; 
} 
public Integer getMatricula() {
return matricula;
}
public void setMatricula(Integer matricula) {
this.matricula = matricula;
}
public String toString() 
{ 
return this.matricula + " " + this.nome + " " + this.cidade; 
} 
}
Java Collection Framework
(Coleções)
2021.1
Ordenação não natural (II) - Exemplo
//Criar a interface InterfaceOrdena
package control;
import java.util.Comparator;
public class InterfaceOrdena implements Comparator<Aluno> 
{ 
// ORDENA POR MATRICULA DO ALUNO EM ORDEM CRESCENTE 
public int compare(Aluno a, Aluno b) 
{ 
return a.matricula - b.matricula; 
} 
}
Java Collection Framework
(Coleções)
2021.1
Ordenação não natural (II) - Exemplo//Criar a classe TestaCliente
package model; import control.Aluno;
import control.InterfaceOrdena;
import java.util.ArrayList;
import java.util.Collections;
public class TestaCliente {
public static void main (String[] args) {
ArrayList<Aluno> alu = new ArrayList<Aluno>(); 
alu.add(new Aluno(1172, “PELE", “SANTOS")); 
alu.add(new Aluno(1171, “ZICO", “FLAMENGO")); 
alu.add(new Aluno(1173, “ROBERTO CARLOS", “PALMEIRAS")); 
alu.add(new Aluno(1170, “MARADONA", “BOCA JUNIORS")); 
System.out.println("LISTA NÃO ORDENADA"); 
for (int i=0; i<alu.size(); i++) 
System.out.println(alu.get(i)); 
Collections.sort(alu, new InterfaceOrdena()); 
System.out.println("\nOrdenação não natural"); 
System.out.println("\nLISTA ORDENADA POR MATRICULA DO ALUNO EM ORDEM CRESCENTE 
"); 
for (int i=0; i<alu.size(); i++) 
System.out.println(alu.get(i)); 
} 
} 
Java Collection Framework
(Coleções)
2021.1
SortedSet
elementos ordenados
em ordem ascendente.
Conjunto mantém
ordem natural ou de acordo com 
um Comparator
fornecido na criação do 
SortedSet
Além das operações normais 
de um Set, disponibiliza 
operações para:
Intervalo (subconjuntos);
Pontos extremos;
Acesso ao Comparator.
Não precisa especificar a posição para adicionar
um elemento
Não aceita valores duplicados
Os elementos não são ordenados, nem se
mantém na ordem em que foram inseridos
Set
Sintaxe: SortedSet set = new TreeSet();
Java Collection Framework
(Coleções)
2021.1
Ordenação SortedSet - Exemplopackage model;
import java.util.Iterator; import java.util.SortedSet; import java.util.TreeSet;
public class OrdenaSet {
public static void main(String[] args) {
SortedSet set = new TreeSet();
set.add("MELANCIA"); set.add("TANGERINA"); set.add("ABACATE"); 
set.add("CAJÚ");
Iterator iterator = set.iterator();
System.out.println("ORDENAÇÃO E MANIPULAÇÃO DE COLEÇÃO SortedSet");
System.out.println(“MELHOR DO MUNDO: PELÉ\n");
System.out.println("EXIBIR TODOS OS ELEMENTOS EM ORDEM CRESCENTE");
while(iterator.hasNext()){
System.out.print(iterator.next().toString()+" ");
}
System.out.println("\n\nEXIBIR O SUBSET DE ABACATE ATÉ O ELEMENTO ANTES DE TANGERINA");
System.out.println(set.subSet("ABACATE","TANGERINA"));
System.out.println("EXIBIR TODOS OS ELEMENTOS A PARTIR DO ELEMENTO - CAJÚ");
System.out.println(set.tailSet("CAJÚ"));
System.out.println("EXIBIR TODOS ELEMENTOS ATÉ A POSIÇÃO - 1 DO ELEMENTO CAJÚ");
System.out.println(set.headSet("CAJÚ"));
System.out.println("\nEXIBIR O PRIMEIRO ELEMENTO DO SET");
System.out.println(set.first());
System.out.println("\nEXIBIR O ULTIMO ELEMENTO DO SET");
System.out.println(set.last());
}
}
Java Collection Framework
(Coleções)
2021.1
SortedMap
Mantém chaves Ordenadas
Ascendentemente
ordenação natural
ou de acordo com um 
Comparator
fornecido no momento 
de sua criação
A interface do SortedMap
é análoga à interface do
SortedSet.
Sintaxe:
SortedMap<Integer, String> map = new TreeMap<Integer, String>();
Java Collection Framework
(Coleções)
2021.1
SortedMap - Métodos
subMap (K deKey, K toKey): Retorna uma visualização da parte deste Mapa cujas chaves 
variam de fromKey, inclusive, a toKey, exclusivo.
headMap (K toKey): Retorna uma vista da parte deste Mapa cujas chaves são estritamente 
menores que toKey.
tailMap (K fromKey): Retorna uma visualização da parte deste Mapa cujas chaves são maiores 
ou iguais a fromKey.
firstKey(): Retorna a primeira chave (mais baixa) atualmente neste mapa.
lastKey(): Retorna a última chave (mais alta) atualmente neste mapa.
comparator(): Retorna o Comparador usado para ordenar as chaves neste Mapa, ou null se 
este Mapa usa a ordenação natural de suas chaves.
values ​​(): Retorna uma visualização Collection dos valores contidos neste mapa.
keySet (): Retorna uma visualização Set das chaves contidas neste mapa.
entrySet (): Retorna uma visualização Set dos mapeamentos contidos neste mapa.
Java Collection Framework
(Coleções)
2021.1
SortedMap - Exemplopackage model;
import java.util.Iterator; import java.util.Map; import java.util.Set; 
import java.util.SortedMap; import java.util.TreeMap; 
public class OrdenaMap {
public static void main(String[] args) 
{ SortedMap<Integer, String> map = new TreeMap<Integer, String>(); 
//CRIA UMA COLEÇÃO MAP COM SUAS CHAVES DESORDENADAS (FORA DE ORDEM)
map.put( new Integer( 2 ), “ZICO" ); map.put( new Integer( 3 ), 
“RONALDO FENÔMERO" ); 
map.put( new Integer( 4 ), “MARADONA" ); 
map.put( new Integer( 1 ), “PELÉ" );
//Retorna uma visualização Set dos mapeamentos contidos neste mapa
Set s = map.entrySet(); 
Iterator i = s.iterator(); // Usando o iterador no SortedMap
// SAÍDA ORDENADA POR CHAVE DO MAP. 
while (i.hasNext()) 
{ Map.Entry m = (Map.Entry)i.next(); 
int key = (Integer)m.getKey(); 
String value = (String)m.getValue(); 
System.out.println( "Chave : " + key + " Valor : " + value); 
} 
} 
} 
Java Collection Framework
(Coleções)
2021.1
Implementações
- Classes que implementam as interfaces do framework de
coleções.
Java Collection Framework
(Coleções)
2021.1
Interfaces auxiliares (Iterator e ListIterator) 
-Iterator
Interface que define as operações básicas para o
percorrimento dos elementos da coleção.
Java Collection Framework
(Coleções)
2021.1
- iterar sobre os elementos de uma coleção
Pode-se usar o comando for e o Iterator da coleção:
package model;
import java.util.Arrays;
import java.util.List;
public class ForTeste {
public static void main(String[] args) {
List<Integer> itens = Arrays.asList( 30, 8, 40, 5, 11 );
for(Integer item : itens){
System.out.println(item);
}
}
}
USO DO COMANDO FOR
Interfaces auxiliar (Iterator) 
Java CollectionFramework
(Coleções)
2021.1
• Iterator – (Listando os elementos de um ArrayList - Exemplo
package model;
import java.util.ArrayList;
import java.util.Iterator;
public class TestaIterator {
public static void main(String args[]) {
ArrayList al = new ArrayList();
al.add(“PELÉ"); al.add(“ZICO");
al.add(“RONALD FENÔMENO"); System.out.print("USANDO O Iterator DA 
COLEÇÃO");
System.out.println(); System.out.print(“PELÉ É MELHOR QUE MARADONA"); 
System.out.println(); System.out.print(" "); System.out.println();
// Usamos o iterator para mostrar o conteúdo do ArrayList
System.out.print("ELEMENTOS ORIGINAIS DO ARRAYLIST: ");
Iterator itr = al.iterator();
while(itr.hasNext()) {
Object element = itr.next();
System.out.print(element + " ");
}
System.out.println(); 
}
}
USO DO Iterator DA COLEÇÃO
Java Collection Framework
(Coleções)
2021.1
Interface auxiliar - ListIterator
Interface que estende Iterator, 
adicionando funções
específicas para coleções
do tipo List.
Java Collection Framework
(Coleções)
2021.1
Java Collection Framework (Coleções)
Interface auxiliar – ListIterator (exemplo)
package model;
import java.util.ArrayList; import java.util.Iterator;
import java.util.ListIterator; public class TestaListIterator {
public static void main(String args[]) {
ArrayList al = new ArrayList();
al.add(“PELÉ"); al.add(“ZICO"); al.add(“MARADONA");
System.out.print("ELEMENTOS DO ARRAYLIST ORDEM ORIGINAL");System.out.println();
Iterator itr = al.iterator();
while(itr.hasNext()) {
Object element = itr.next();
System.out.print(element + " "); }
System.out.println(); System.out.println(); 
// Modify objects being iterated
ListIterator litr = al.listIterator();
while(litr.hasNext()) {
Object element = litr.next();
litr.set(element + " ");
}
System.out.print("ELEMENTOS DO ARRAYLIST ORDEM INVERTIDA");
System.out.println();
while(litr.hasPrevious()) {
Object element = litr.previous();
System.out.print(element + " ");
}
System.out.println(); 
}
}
2021.1
Java Collection Framework
(Coleções)
for-each
- Novidade do Java 5 e Java 8
- Variação do comando for com sintaxe simplificada para 
iterar nos elementos de uma coleção.
❖ A partir do Java 5
List<Integer> itens = Arrays.asList( 10, 8, 50, 1, 30 );
for (Integer item : itens)
System.out.println(item);
❖ A partir do Java 8
List<Integer> itens = Arrays.asList( 10, 8, 50, 1, 30 );
itens.forEach(item->System.out.println(item));
2021.1
• for-each (Listando os elementos de uma lista - Exemplo
package model;
import java.util.Arrays;
import java.util.List;
public class ForEachTeste {
public static void main(String[] args) {
List<Integer> itens = Arrays.asList( 10, 8, 50, 1, 30 );
itens.forEach(item->System.out.println(item));
}
}
Java Collection Framework
(Coleções)
2021.1
Exercícios
1 – Codifique um programa usando Collection List em que:
a – Crie um Array, atribuindo os nomes de cinco pessoas;
b – Exiba na tela a:
b1 – o Array com todos seus elementos;
b2 – elemento por elemento do Array.
2 - Codifique um programa usando Collection Set em que:
a – seja informado via teclado com uso da classe Scanner cinco nomes de frutas em 
uma coleção;
b – exiba na tela a:
b1 – os elementos os elementos da coleção;
b1 – mensagem informando se foram informados nomes repetidos ou não na 
coleção.
3 – Codifique um programa usando o comando for-each para listar os elementos de 
uma Lista:
Obs. Os elementos da lista deverão ser informados via teclado com uso da classe 
Scanner.
2021.1
4 – Codifique um programa em java que:
a – Crie uma Lista, atribuindo via teclado o primeiro nome de cinco pessoas;
b – Use a classe Scannerpara a entrada dos dados.
5 – Codifique um programa em java que:
a – Crie uma Lista, atribuindo via teclado o primeiro nome de cinco pessoas;
b – Use a classe Scanner para a entrada dos dados.
c – Após todos os nomes armazenados na lista, exiba-os na tela
6 – Codifique um programa em java que:
a – Crie uma Lista, atribuindo via teclado cinco números tipo inteiros;
b – Use a classe Scanner para a entrada dos dados.
c – Após todos os números armazenados na lista, exiba-os na tela
7 – Codifique um programa em java que:
a – Crie uma Lista, atribuindo via teclado cinco números tipo inteiros;
b – Use a classe Scanner para a entrada dos dados.
c – Após todos os números armazenados na lista, exiba-os na tela usando o
comando for-each
Exercícios
2021.1
8 – Codifique um programa em java que:
a – Crie uma Lista, atribuindo via teclado cinco números tipo inteiros;
b – Use a classe Scannerpara a entrada dos dados.
c – Após todos os números armazenados na lista, exiba-os na tela usando o comando for
9 – Codifique um programa em java que:
a – Crie uma Lista, atribuindo via teclado o primeiro nome de cinco pessoas;
b – Use a classe Scanner para a entrada dos dados.
c – Após todos os nomes armazenados na lista, exiba-os na tela usando o comando 
for-each.
10 – Codifique um programa em java que:
a – Crie uma Lista, atribuindo via teclado o primeiro nome de cinco pessoas;
b – Use a classe Scanner para a entrada dos dados.
c – Após todos os nomes armazenados na lista, exiba-os na tela usando o comando for
11 – Codifique um programa usando Collection QUEUE em que: 
a – atribua via programa os nomes de dez frutas em uma coleção.
b – exiba os dados inseridos na coleção.
Exercícios
2021.1
12 - Codifique um programa usando Collection QUEUE em que: 
a – atribua via programa os números 100, 150 e 200 em uma coleção.
b – exiba os números inseridos na coleção.
13 – Quais as características da interface Set?
14 - Codifique em Java, as linhas de códigos para criar uma Coleção List e adicionar dois 
elementos na lista criada.
Exercícios
2021.1
Bancos de Dados
113
❑ Middleware
❑ Consulta e manipulação
de dados com JDBC
2021.1
Middleware
• É o software de computador que fornece serviços para softwares aplicativos 
além daqueles disponíveis pelo sistema operacional. 
• Pode ser descrito como "cola de software".
2021.1
Middleware
O middleware também pode ser 
utilizado para processamento
distribuído com ações que ocorrem
em tempo real em vez de envio e 
recebimento repetitivo de dados.
2021.1
Utilidade do 
Middleware
Facilitar o desenvolvimento de 
aplicações, tipicamente as distribuídas, 
assim como facilitar a integração de 
sistemas legados ou desenvolvidos de 
forma não integrada automática.
2021.1
Middleware de 
Banco de Dados
É qualquer conjunto de APIs que 
facilita a comunicação com um 
banco de dados, seja de um 
aplicativo ou entre bancos de dados, 
usado por desenvolvedores para 
extrair informações de bancos de 
dados locais ou remotos. 
2021.1
Middleware de 
Servidor de 
Aplicativos
• API padronizada para acesso
• Uma implementação para o 
modelo de arquitetura
• Uma ou mais interfaces de 
gerenciamento
2021.1
Middleware Orientado a Mensagens
• Um cliente pode enviar e receber mensagens de forma assíncrona 
de qualquer outro cliente, conectados a um agente especial que 
fornece facilidades para criar, enviar, receber e ler mensagens.
2021.1
Middleware 
Web
• Dono do Recurso (Resource Owner): uma entidade capaz de 
conceder acesso à um recurso protegido (pode ser o usuário 
final).
• Servidor do Recurso (Resource Server): o servidor que hospeda 
os recursos protegidos. O acesso a ele é feito através de tokens.
• Cliente (Client): uma aplicação requisitando recursos protegidos, 
através da autorização do dono.
• Servidor de Autorização (Authorization Server): servidor que 
emite tokens de acesso ao cliente, depois de sua autenticação e 
obtenção de autorização.
2021.1
Middleware Web - Exemplo
2021.1
Monitores de 
Processamento 
de Transações
• comunicação entre plataformas e aplicações
• uso de API bem definida e aberta
• uso de protocolos bem definidos e abertos
• ser utilizadas em múltiplas plataformas
• manter separação de camadas para segurança e portabilidade• recuperar dados e consolidar a partir de múltiplas fontes
• fornecer acesso a tecnologias distintas
2021.1
O Middleware pode 
abranger uma variedade 
de tipos de Software
• Interface de programação de aplicações (API)
• Servidor de aplicações
• Integração de aplicações
• Integração de dados
• Processamento de transações (TP)
• Chamada de procedimento remoto (RPC)
2021.1
API JDBC
A biblioteca JDBC
define o 
MiddlewareJava
para acesso a 
qualquer tipo de 
banco de dados, 
permitindo o 
manuseio das 
informações com um 
pequeno conjunto de 
classes, pertencentes
ao pacote: 
java.sql.*
2021.1
JDBC
Java Database
Connectivity
• É um conjunto de classes e interfaces (API) escritas 
em Java que fazem o envio de instruções SQL para 
qualquer banco de dados relacional
• API de baixo nível e base para API’s de alto nível
• Amplia o que você pode fazer com Java
• Possibilita o uso de Bancos de Dados já instalados
2021.1
JDBC tipo 1:
Ponte JDBC-ODBC
Esta ponte é 
normalmente usada 
quando não há um 
driver puro-Java 
(tipo 4) para 
determinado banco 
de dados, pois seu 
uso é desencorajado 
devido à 
dependência de 
plataforma.
2021.1
JDBC Tipo 2:
Driver API-Nativo
Traduz as chamadas 
JDBC para as 
chamadas da API 
cliente do banco de 
dados usado. Como 
a Ponte JDBC-ODBC, 
pode precisar de 
software extra 
instalado na 
máquina cliente.
2021.1
JDBC tipo 3: 
Puro Java
Converte as chamadas JDBC 
diretamente no protocolo do 
banco de dados utilizado. 
Implementado em Java, 
normalmente é 
independente de plataforma 
e escrito pelos próprios 
desenvolvedores. É o tipo 
mais recomendado para ser 
usado.
2021.1
JDBC Tipo 4: 
Protocolo de Rede
Traduz a chamada 
JDBC para 
um protocolo de rede 
independente do 
banco de dados 
utilizado, que é 
traduzido para o 
protocolo do banco de 
dados por um servidor.
2021.1
Java DB (Derby)
2021.1
Java DB (Derby)
NetBeans IDE Versão Java EE 7.2, 7.3, 7.4, 8.0
JDK (Java Development Kit) Versão 7 ou 8
Java DB Versão 10.4.x, 10.5.x
• O Java DB é instalado quando o JDK 7 ou JDK 8 é instalado
(com exceção do Mac OS X)
• Se estiver usando Mac OS X é possível fazer o download e 
instalar o Java DB manualmente ou usar o Java DB que é 
instalado pela versão do Java EE do instalador do 
NetBeans IDE.
2021.1
Configurando o
Banco de Dados
Se você tem o GlassFish Server Enterprise registrado na instalação NetBeans IDE, o Java DB já estará
registrado. Portanto, é possível pular para Iniciando o Servidor.
Se fizer download do GlassFish Server separadamente e necessitar de ajuda ao registrar no NetBeans IDE, 
consulte Registrando uma Instância do GlassFish Server no Conteúdo de Ajuda IDE (F1).
Se você tiver submetido o Java DB a download, siga as etapas a seguir.
1. Execute o arquivo de autoextração. Uma pasta denominada 'javadb' será criada no mesmo local do 
arquivo. Se você tiver apenas submetido o Java DB a download e desejar que o servidor de banco de 
dados fique em um local diferente de onde ele foi extraído, deverá realocá-lo agora.
2. No sistema, crie um novo diretório para ser utilizado como diretório home para as instâncias individuais do
servidor de banco de dados. Por exemplo, é possível criar esta pasta no diretório-raizJava DB (javadb)
ou em qualquer outra localização.
Antes de prosseguir, é importante compreender os componentes encontrados no diretório raiz do Java DB:
O subdiretório demo contém os programas de demonstração.
O subdiretório bin contém os scripts para executar utilitários e configurar o ambiente.
O subdiretório javadoc contéma documentação da API que foi gerada de comentários de código-fonte.
O subdiretório docs contém a documentação do Java DB.
O subdiretório lib contém os arquivos jar do Java DB.
2021.1
Conexão JDBC com o Banco de Dados
• Conexão do banco de dados (MySQL)
String url = "jdbc:mysql://localhost:3306/Banco01“;
String user = “estacio“;
String password = “estacio";
• Conexão do banco de dados derby (Java DB)
DriverManager.getConnection(
"jdbc:derby://localhost:1527/Banco01",“estacio", “estacio“
);
2021.1
Criar Novo Projeto 
NetBeans
Arquivo >
Novo Projeto... > 
Escolher Projeto...
2021.1
Criar Novo Projeto 
NetBeans
Arquivo >
Novo Projeto... > 
1. Escolher Projeto...
2. Nome e Localização...
2021.1
Projeto “Biblioteca” com um “controlador” criado
2021.1
Registrando o Banco de 
Dados no NetBeans IDE
Na janela Serviços, clique 
com o botão direito do 
mouse no nó do Banco 
de Dados Java DB e 
escolha Propriedades
para abrir a caixa de 
diálogo das Definições do 
JavaDB
2021.1
Registrando o Banco de Dados 
no NetBeans IDE
No campo de texto Instalação de Java DB, insira o caminho para o 
diretório-raiz de Java DB (javadb) especificado na etapa anterior
2021.1
Registrando o Banco de Dados no 
NetBeans IDE
• Para a Localização do Banco de Dados, use o local default se um local já foi 
fornecido. Clique em OK
• Por exemplo, a localização default pode parecer com C:\Documents and
Settings\username\.netbeans-derby em um computador Windows.
2021.1
Iniciando o 
Servidor
Na janela Serviços, 
clique com o botão 
direito do mouse no 
nó Java DB e escolha 
Iniciar Servidor. 
Observe a seguinte 
saída na janela de 
Saída, indicando 
que o servidor foi 
iniciado:
2021.1
Saída – Processo do Banco de Dados JavaDB
Wed Oct 16 10:00:42 BRT 2019 : DRDA_SecurityInstalled.I
Wed Oct 16 10:00:42 BRT 2019 : Apache Derby Servidor de Rede -
10.10.2.0 - (1582446) iniciado e pronto para aceitar conexões na 
porta 1527 em {3}
2021.1
Criando um Banco 
de Dados
Clique com o botão 
direito do mouse no 
nó do Java DB e 
escolha Criar Banco 
de Dados para abrir 
a caixa de diálogo 
de criação do Banco 
de Dados do 
Java DB.
2021.1
Criando um 
Banco de Dados
2021.1
Banco de Dados Criado
2021.1
Estabelecendo 
Conexão com o 
Banco de Dados
Na janela Serviços do IDE 
você pode realizar as 
seguintes tarefas comuns 
em estruturas de banco de 
dados:
• criação, exclusão, 
modificação de tabelas
• preenchimento de tabelas 
com dados
• exibição de dados tabulares
• execução de consultas e 
instruções SQL
2021.1
Usando a Caixa de 
Diálogo Criar Tabela
1 - Expanda o nó de 
conexão BD de 
Contato e observe que 
existem vários subnós
do esquema. O esquema 
app é o único esquema 
que se aplica a este 
tutorial. Clique com 
o botão direito do 
mouse no nó APP e 
escolha Definir como 
Esquema Default. 
2021.1
Usando a Caixa de 
Diálogo Criar Tabela
2 - Expanda o nó APP e 
observe que existem 
três subpastas: 
Tabelas, Views e 
Procedimentos. 
2021.1
Usando a Caixa de 
Diálogo Criar Tabela
3 - Clique com o 
botão direito no nó 
Tabelas e escolha 
Criar Tabela para 
abrir a caixa de 
diálogo Criar 
Tabela.
2021.1
Usando a Caixa de Diálogo 
Criar Tabela
4 - No campo de texto Nome da Tabela, digite AUTORES. 
2021.1
Adicionar Coluna
Chave Índice Nulo Exclusiva
Nome da 
coluna
Tipo de dados Tamanho
[marcada] [marcada] [marcada] id INTEIRO 0
[marcada] NOME VARCHAR 20
[marcada] SOBRENOME VARCHAR 20
2021.1
Adicionar Coluna
Chave Índice Nulo Exclusiva
Nome da 
coluna
Tipo de dados Tamanho
[marcada] [marcada] [marcada] id INTEIRO 0
[marcada] NOME VARCHAR 20
[marcada] SOBRENOME VARCHAR 20
2021.1
Usando o 
Editor SQL
• Na janela Serviço, 
clique com o botão 
direito no nó de 
conexão BD de 
AUTORESou no nó 
Tabelas embaixo e 
escolha o Comando 
Executar. 
• Uma tela em branco 
é aberta no Editor 
SQL na janela 
principal.
2021.1
Insira a seguinte 
consulta no 
Editor SQL:
CREATE TABLE “EDITORES" (
"ID" INTEGER not null primary key, 
"NOME" VARCHAR(30),
"EMAIL" VARCHAR(60)
); 
2021.1
Adicionando
Dados na 
Tabela
INSERT INTO EDITORES VALUES(1, 'EDITORA ÉRICA' ,'contato@erica.com.br');
INSERT INTO EDITORES VALUES(2, 'NOVATEC EDITORA' ,'contato@novatec.com.br');
INSERT INTO EDITORES VALUES(3, 'EDITORASARAIVA' ,'contato@saraiva.com.br');
INSERT INTO EDITORES VALUES(4, 'EDITORA VIENA' ,'contato@viena.com.br');
INSERT INTO EDITORES VALUES(5, 'EDITORA CIÊNCIA MODERNA','contato@cm.com.br');
INSERT INTO EDITORES VALUES(6, 'EDITORA SENAC' ,'contato@senac.com.br');
INSERT INTO EDITORES VALUES(7, 'EDITORA FTD' ,'contato@ftd.com.br');
2021.1
DAO – Data Access Object
2021.1
Exemplo
DAO – Data Access Object
2021.1
Criando Conexão com JDBC
2021.1
Classe “AutorDAO”: SQLINSERT
2021.1
Classe “AutorDAO”: SQLUPDATE
2021.1
Classe “AutorDAO”: SQLDELETE
2021.1
Classe “AutorDAO”: 
consultaUmAutor()
2021.1
Classe “AutorDAO”: 
consultaListaAutores()
2021.1
Exercício 1
Criar as classes de negócio acima….
2021.1
Exercício 2
Criar as tabelas: EDITORES, REVISTAS, LIVROS, ARTIGOS e 
ASSUNTOS
2021.1
Exercício 3
Criar as classes DAO para: EDITORES, REVISTAS, LIVROS, 
ARTIGOS e ASSUNTOS
2021.1
PROFESSOR: HENRIQUE TAVARES
PROGRAMAÇÃO II
CCT0695

Outros materiais