Escolar Documentos
Profissional Documentos
Cultura Documentos
Computadores
Prof. Marcio Poffo
Indaial – 2020
1a Edição
Copyright © UNIASSELVI 2020
Elaboração:
Prof. Marcio Poffo
P745p
Poffo, Marcio
ISBN 978-65-5663-085-4
CDD 005.1
Impresso por:
Apresentação
As primeiras linguagens de programação não possuíam muitos
recursos como as atuais, sendo utilizadas mais exclusivamente para rotinas
batch ou, ainda, para desenvolvimento de simples telas de cadastros. Com
o passar do tempo, novos recursos surgiram com as novas linguagens de
programação, como a possibilidade de desenvolvimento de telas mais
amigáveis para o usuário, com vários recursos interativos, assim como a
comunicação dos programas via internet.
III
utilizar para uma aplicação web, por exemplo. Para o desenvolvimento
web, você aprenderá apenas uma das tecnologias do Java que permite o
desenvolvimento desse tipo de aplicação, conceitualmente e na prática,
aplicando recursos no desenvolvimento de uma aplicação, que servirá de
início para seu sucesso nessa linguagem.
Por fim, no contexto deste livro são apresentados alguns dos recursos
disponibilizados pela plataforma Java, na qual você aprenderá e compreenderá
desde a criação dos tipos de variáveis e constantes, assim como utilizá-los,
seguido da configuração completa do ambiente de desenvolvimento Java,
para que você consiga praticar todos os exemplos apresentados. Logo após são
apresentados os comandos básicos da linguagem de programação Java, isto
é, os operadores lógicos, aritméticos, relacionais, os quais são essenciais para
o desenvolvimento de qualquer software, implementando regras de negócios
e auxiliando o fluxo dos programas através dos comandos de controle de
fluxos e laços de repetição. Você também aprenderá o conceito da orientação
a objetos, assim como a implementação prática de exemplos, e no decorrer
dos tópicos, a utilização de algumas tecnologias de desenvolvimento.
IV
NOTA
Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para
você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há
novidades em nosso material.
O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova
diagramação no texto, aproveitando ao máximo o espaço da página, o que também
contribui para diminuir a extração de árvores para produção de folhas de papel, por exemplo.
Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas
institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa
continuar seus estudos com um material de qualidade.
LEMBRETE
Acesse o QR Code, que levará ao AVA, e veja as novidades que preparamos para seu estudo.
V
VI
Sumário
UNIDADE 1 – LINGUAGEM DE PROGRAMAÇÃO JAVA.............................................................1
VII
5 INSTALAÇÃO E CONFIGURAÇÃO DO SERVIDOR DE APLICAÇÃO TOMCAT
NO ECLIPSE...........................................................................................................................................51
5.1 APPLICATION SERVER E SERVLET CONTAINER.....................................................................52
5.2 CONHECENDO MELHOR O TOMCAT......................................................................................52
5.3 BAIXANDO O TOMCAT.................................................................................................................53
5.4 CONFIGURAÇÃO DO TOMCAT NO ECLIPSE.........................................................................53
6 CRIANDO UMA APLICAÇÃO PARA EXECUTAR NO TOMCAT............................................57
7 AMBIENTE DE DESENVOLVIMENTO NETBEANS...................................................................60
7.1 INSTALAÇÃO E CONFIGURAÇÃO DO NETBEANS..............................................................61
7.2 CONFIGURAÇÃO DO NETBEANS..............................................................................................62
7.3 JANELAS PARA VISUALIZAÇÕES NO NETBEANS................................................................65
RESUMO DO TÓPICO 2........................................................................................................................66
AUTOATIVIDADE..................................................................................................................................67
VIII
4 TRATAMENTO DE EXCEÇÕES EM JAVA DO TIPO CHECKED............................................122
5 CLASSE THROWABLE......................................................................................................................126
6 REALIZANDO O LANÇAMENTO DE EXCEÇÕES....................................................................127
7 CRIANDO AS PRÓPRIAS EXCEÇÕES..........................................................................................131
8 CLÁUSULA FINALLY.........................................................................................................................132
RESUMO DO TÓPICO 2......................................................................................................................134
AUTOATIVIDADE................................................................................................................................135
IX
TÓPICO 3 – DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET.........................239
1 INTRODUÇÃO....................................................................................................................................239
2 JSP (JAVA SERVER PAGES)..............................................................................................................239
3 APLICAÇÃO CLIENTE COM JSP...................................................................................................244
4 TECNOLOGIA SERVLET..................................................................................................................247
5 EXEMPLO DE APLICAÇÃO UTILIZANDO SERVLET E JSP...................................................248
LEITURA COMPLEMENTAR..............................................................................................................264
RESUMO DO TÓPICO 3......................................................................................................................266
AUTOATIVIDADE................................................................................................................................268
REFERÊNCIAS........................................................................................................................................270
X
UNIDADE 1
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade
você encontrará autoatividades com o objetivo de reforçar o conteúdo
apresentado.
CHAMADA
1
2
UNIDADE 1
TÓPICO 1
1 INTRODUÇÃO
Antes de ingressar na atividade de programação propriamente dita, é
interessante compreender um pouco da história da plataforma Java, o que facilita
o entendimento do porquê esta linguagem de programação obter sucesso, e,
atualmente, a maioria das organizações a utilizam, direta ou indiretamente.
2 HISTÓRIA DO JAVA
A SUN Microsystems foi criada em 1985 por quatro estudantes da
universidade de Stanford, devido a isso tem o nome SUN (Stanford University
Network), a qual iniciou no mercado de desktops utilizando processadores
Motorola, logo depois começou a desenvolver os processadores utilizados
(CAMPOS; CAMPOS, 2018). Para Campos e Campos (2018), a SUN passou a
trabalhar com equipamentos para servidores e comprou o MySQL em 2008.
3
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
Uma das criações da SUN foi o Java, em 1991, o qual possuía a finalidade de
ser compatível com diversas plataformas que rodavam em diversos dispositivos,
assim, o Java foi criado para utilização em dispositivos eletrônicos e não para
computadores (CAMPOS; CAMPOS, 2018).
Com o passar dos anos, novas tecnologias do Java para web surgiram,
como Servlets e JSPs, os quais serão estudados neste livro, JSF, Java FX, entre
outros, e consequentemente os applets deixaram de serem utilizados.
FONTE: O autor
4
TÓPICO 1 | APRESENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO JAVA
5
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
A Máquina Virtual Java (Java Virtual Machine), abreviada por JVM, executa
aplicações escritas na linguagem de programação Java, neste caso, possuindo
todos os recursos necessários para proteger aplicações distribuídas com
segurança através do framework java.security, o qual possui diversas bibliotecas
para garantir requisições seguras, por exemplo (SOMERA, 2006).
6
TÓPICO 1 | APRESENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO JAVA
DICAS
7
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
5 VERSÕES DO JAVA
O Java 1.0 e 1.1 são as primeiras versões do Java, muito antigas, as quais
possuíam algumas bibliotecas muito utilizadas, como o JDBC e o java.io. Através
de melhorias do Java, a partir da versão 1.2, o tamanho da API tornou-se muito
grande, devido a isso foi trocada a nomenclatura para Java2, com o objetivo de
diminuir confusões entre Java e Javascript.
8
TÓPICO 1 | APRESENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO JAVA
NOTA
System.out.println("Olá mundo!");
9
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
10
TÓPICO 1 | APRESENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO JAVA
E
IMPORTANT
FONTE: O autor
Lembrando que a máquina virtual não compreende o código java, mas sim
um código de máquina específico, sendo este código gerado por um compilador
Java, como o javac, utilizado no comando a seguir.
FONTE: O autor
11
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
12
TÓPICO 1 | APRESENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
13
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
14
TÓPICO 1 | APRESENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
15
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
• boolean (booleano);
• char (caractere);
• byte (byte);
• short (inteiro curto);
• int (inteiro);
• long (inteiro longo);
• float (ponto flutuante);
• double (ponto flutuante de dupla precisão).
Tipo de Memória
Valor Mínimo Valor Máximo
Dado Consumida
byte 1 byte -128 127
short 2 bytes -32.768 32.767
int 4 bytes -2.147.483.648 2.147.483.647
long 8 bytes -9.223.372.036.854.775.808 9.223.372.036.854.775.807
float (6-7 dígitos) 4 bytes -3,4028E + 38 3,4028E + 38
double (15 dígitos 8 bytes -1,7976E + 308 1,7976E + 308
FONTE: O autor
Conforme você for analisando as atividades práticas deste livro, você vai
se familiarizando com os tipos primitivos de dados, anteriormente citados.
16
TÓPICO 1 | APRESENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
17
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
10.2 CONSTANTES
Após você entender o que é uma variável e seus tipos primitivos, temos
o conceito chamado constante, que também é uma área de memória para
armazenar um dado, porém seu conteúdo, o dado armazenado nela, não é
permitido alterar durante a execução do programa (CADENHEAD; LEMAY,
2005). Para declarar uma constante, é utilizada a palavra reservada final para
indicar que a variável é inicializada uma única vez durante a execução da
aplicação, e após a palavra final é informado o tipo de dado, por último, o nome
da constante. Exemplo de declaração de constante:
FONTE: O autor
18
TÓPICO 1 | APRESENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
DICAS
FONTE: O autor
19
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
20
TÓPICO 1 | APRESENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
21
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
ATENCAO
Caso ainda não tenha instalado o editor Notepad++, você pode baixá-lo em
https://notepad-plus-plus.org/downloads/.
22
TÓPICO 1 | APRESENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
12 OPERADORES DA LINGUAGEM
Na linguagem de programação Java, assim como em outras, existem os
operadores de atribuição, aritméticos, relacionais e lógicos, os quais permitem
o desenvolvimento de lógicas para atendimento de necessidades do software,
através de comparação entre valores de variáveis, por exemplo, ou cálculos
matemáticos.
23
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
Descrição Operador
Operador de adição +
Operador de subtração -
Operador de multiplicação *
Operador de divisão /
Operador que retorna resto da divisão (módulo) %
FONTE: O autor
FONTE: O autor
24
TÓPICO 1 | APRESENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO JAVA
Descrição Operador
Maior que (utilizado para saber se um valor à esquerda é maior
>
que o outro à direita)
Maior ou igual que (utilizado para saber se um valor à esquerda é
>=
maior ou igual que o outro à direita)
Menor que (utilizado para saber se um valor à esquerda é menor
<
que o outro à direita)
Menor ou igual que (utilizado para saber se um valor à esquerda é
<=
menor ou igual que o outro à direita)
Diferente (utilizado para verificar se um valor à esquerda é
!=
diferente do valor à direita)
FONTE: O autor
FONTE: O autor
25
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
Descrição Operador
Utilizado quando a condição necessita que as duas expressões
&&
testadas sejam verdadeiras
Utilizado quando a condição necessita que uma das expressões
||
testadas sejam verdadeiras
FONTE: O autor
FONTE: O autor
FONTE: O autor
26
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:
27
AUTOATIVIDADE
28
a) ( ) O método System.out.print permite imprimir String no terminal
pulando uma linha em cada impressão.
b) ( ) O método System.out.printf permite imprimir String no terminal
pulando uma linha em cada impressão.
c) ( ) Os métodos de impressão de Strings do objeto System.out podem ser
utilizados apenas no terminal do prompt de comando, mas na IDE
Eclipse não funciona.
d) ( ) Este objeto permite a impressão de Strings no console da IDE ou no
terminal.
a) ( ) Uma variável declarada com o tipo int pode receber um valor do tipo
char, desde que seu conteúdo seja um inteiro válido.
b) ( ) Uma variável declarada no início de uma classe apenas pode ter valor
atribuído neste ponto do código-fonte, sendo que nos demais locais seu
valor pode ser apenas utilizado.
c) ( ) Uma variável declarada com o tipo char pode receber um valor do tipo
char ou então do tipo int, pois seu tamanho é equivalente.
d) ( ) Uma variável declarada com o tipo int não pode receber um valor do
tipo double.
29
30
UNIDADE 1
TÓPICO 2
1 INTRODUÇÃO
Como vimos no Tópico 1, o Java pode ser entendido por ser uma
linguagem de programação, além de ser uma plataforma que roda aplicações
nesta linguagem, lançada pela Sun Microsystems na década de 1990. Atualmente,
existem muitas aplicações e sites, incluindo aplicativos de celular, que rodam
em diversos dispositivos diferentes, os quais necessitam do Java instalado no
dispositivo. Neste contexto, o Java é utilizado tanto em notebooks como em
datacenters, consoles de jogos, supercomputadores, smartphones e muitos outros
dispositivos, sendo utilizado em muitas aplicações de pequenos como de grande
porte.
Neste contexto, o JRE está incluso na instalação do JDK, sendo este o que
precisamos para desenvolvimento de aplicações por possuir todas as bibliotecas
necessárias, o qual está apresentado no Subtópico 2 deste tópico. Além do JDK,
este tópico apresenta os passos para baixar e configurar a IDE Eclipse, sistema
gerenciador de banco de dados MySQL, assim como o servlet container Tomcat
e, por último, a IDE NetBeans, a qual utilizaremos neste livro apenas para
desenvolvimento desktop.
31
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
NOTA
Neste livro, a IDE Eclipse será mais utilizada para desenvolvimento dos
exercícios práticos, embora será possível também utilizar a IDE NetBeans, a qual
também é apresentada neste tópico. Uma IDE (Integrated Development Environment)
pode ser entendida por ser um ambiente integrado de desenvolvimento, com
várias ferramentas que auxiliam o desenvolvedor, como a facilidade de configurar
um banco de dados, por exemplo (FURGERI, 2015). Além disso, uma IDE de
desenvolvimento permite a alteração segura de nomes de classes, métodos,
variáveis, realizando refactoring, além de geração de código automaticamente,
buscar por referências a um determinado elemento selecionado, debug passo
a passo a um determinado código-fonte, entre outras facilidades. Todas essas
vantagens em utilizar uma IDE faz com que o desenvolvedor aproveite seu tempo
nas implementações de lógicas para funcionamento das aplicações, motivando seu
uso em projetos de pequeno, médio e grande porte, auxiliando a produtividade.
E
IMPORTANT
32
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
Rolando a tela mais para baixo, você deve selecionar a opção para aceitar a
licença do Java, que neste caso, em inglês, é a opção “Accept License Agreement”,
conforme ilustrado na Figura 30.
33
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
34
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
FONTE: O autor
35
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
36
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
DICAS
TUROS
ESTUDOS FU
37
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
38
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
Por fim, banco de dados relacional pode ser entendido por um conjunto
de tabelas relacionadas (CARVALHO, 2015).
DICAS
39
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
Com o mesmo usuário criado para baixar o JDK é possível utilizá-lo para
realizar o download do MySQL. Após acesso com o usuário, uma tela parecida
com a da figura a seguir é apresentada, bastando você selecionar uma das opções
desejadas, podendo ser a mais completa do instalador, a qual possui alguns
recursos e aplicações utilitárias a mais, ou a versão com tamanho menor, que
possui unicamente o instalador do MySQL.
40
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
FONTE: O autor
Se você optou por baixar a versão mais completa, será apresentada uma
tela em que pode ser selecionada a opção MySQL apenas, assim como outros
aplicativos que o complementam. Após a instalação do MySQL concluída,
será apresentada uma tela, ilustrada na Figura 40, em que é possível alterar as
configurações de execução do Mysql, como a porta que ele utilizará, por exemplo.
O ideal é deixar a configuração padrão, mas caso a porta 3306 já esteja sendo
utilizada por outra aplicação, então você pode alterar para uma de sua preferência,
lembrando que quando for configurada a conexão do banco de dados no projeto
Java, você deverá utilizar essa mesma porta.
41
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
42
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
FONTE: O autor
FONTE: O autor
43
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
44
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
45
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
Após o arquivo ter sido baixado, conforme ilustrado na Figura 49, basta
descompactar em seu diretório preferido, para que então possamos configurar o
Eclipse.
FONTE: O autor
46
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
E
IMPORTANT
47
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
48
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
49
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
4.2.2 Editor
Essa janela apresenta o editor de textos, isto é, nesse campo são escritos
os códigos-fonte da aplicação, desde códigos na linguagem de programação Java,
assim como HTML, Javascript e qualquer outra linguagem sendo programada,
ou ainda arquivos XML, XHTML, entre outros (BURNETTE, 2005).
FONTE: O autor
50
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
FONTE: O autor
51
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
52
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
FONTE: O autor
Clique no botão “Add” para que você possa importar o Tomcat no Eclipse
e selecione a versão do Tomcat que você baixou, que no nosso caso é a versão 9,
conforme apresentado na Figura 60.
53
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
54
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
Após fechar a tela ilustrada na Figura 61, pressione o botão “Apply and
Close” na tela que estiver aberta. Com este passo, o Tomcat está configurado no
Eclipse, bastando adicioná-lo ao clicar com o botão direito do mouse dentro da
guia “Servers”, apresentado na Figura 62, selecionar as opções “New” e então
selecionar a opção “Server”.
FONTE: O autor
FONTE: O autor
55
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
56
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
57
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
58
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
FONTE: O autor
59
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
60
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
• permite configurar cores para códigos-fonte Java, XML, HTML e para outras
linguagens;
• componente para verificar o código-fonte;
• componente para navegação da aplicação;
• ferramenta de Debbug;
• integração com controlador de versão, como o CVS;
• diálogos que auxiliam o desenvolvedor em seu trabalho.
61
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
Após o passo anterior, será aberta a página para selecionar o link para
download, na qual é possível selecionar a opção “netbeans-11.1-bin.zip”, que
possui o executável, ou “netbeans-11.1-source.zip”, que possui também os
códigos-fonte. Para a utilização deste livro, você pode selecionar a opção “bin”,
apenas para executarmos o NetBeans.
FONTE: O autor
62
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
FONTE: O autor
63
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
64
TÓPICO 2 | INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO
FONTE: O autor
DICAS
65
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:
66
AUTOATIVIDADE
67
3 Para o desenvolvimento de aplicações utilizando a linguagem de
programação Java podem ser utilizados diferentes ambientes de
desenvolvimento, como o Eclipse e o NetBeans. Além disso, pode ser
utilizado qualquer banco de dados relacional, como o Oracle e MySQL,
e estes são configuráveis na IDE de desenvolvimento para permitir a
persistência dos dados. Neste contexto, assinale a alternativa CORRETA:
68
UNIDADE 1
TÓPICO 3
1 INTRODUÇÃO
Nos tópicos anteriores, você aprendeu os conceitos básicos sobre a
linguagem de programação Java, como a sua história, versões, o que é a JVM, JDK
e a JRE. Você aprendeu também o que são variáveis primitivas, como declará-las
e utilizá-las, além dos operadores utilizados nessa linguagem. Outros assuntos
importantes que você aprendeu foi como instalar e configurar o ambiente de
desenvolvimento, baixando a IDE Eclipse e NetBeans, instalar e configurar
o sistema gerenciador de banco de dados MySQL, assim como o servidor de
aplicação Tomcat, os quais utilizaremos nos exercícios práticos deste livro.
69
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
FONTE: O autor
70
TÓPICO 3 | CASTING, CONTROLE DE FLUXO E LAÇOS DE REPETIÇÃO
FONTE: O autor
FIGURA 83 – ERRO NA CONVERSÃO DE UM CONTEÚDO DO TIPO STRING PARA INT NÃO VÁLIDO
FONTE: O autor
FONTE: O autor
71
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
Ressaltando que como são objetos, esses tipos de dados possuem métodos,
os quais podem ser utilizados para resolver muitos problemas, como o método
“Integer.parseint()”, apresentado na Figura 84, por exemplo. Esses tipos serão
tratados mais adiante, mas o importante neste momento é você saber que a
variável String, assim como Integer, Double, Boolean, entre outras, recebem o
mesmo valor das variáveis primitivas, porém são objetos que possuem métodos.
FONTE: O autor
72
TÓPICO 3 | CASTING, CONTROLE DE FLUXO E LAÇOS DE REPETIÇÃO
Para a criação de uma classe, sobre a pasta src (source) que está dentro do
projeto criado, clique com o botão direito do mouse sobre esta e selecione a opção
“New”, e então a opção “Class”, informando o nome da classe na tela que abrir.
FONTE: O autor
73
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
74
TÓPICO 3 | CASTING, CONTROLE DE FLUXO E LAÇOS DE REPETIÇÃO
FONTE: O autor
75
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
76
TÓPICO 3 | CASTING, CONTROLE DE FLUXO E LAÇOS DE REPETIÇÃO
FONTE: O autor
77
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
FONTE: O autor
78
TÓPICO 3 | CASTING, CONTROLE DE FLUXO E LAÇOS DE REPETIÇÃO
FONTE: O autor
79
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
Entenda um bloco de código como sendo o código que está dentro das
chaves, como a abertura de chaves no final da linha 8 do código da Figura 95
que inicia um bloco, sendo fechado na linha 19 com o fechamento das chaves,
antes do comando else. Você pode analisar a Figura 95, na qual entre as linhas 8
e 10 existe um bloco de código do comando if dentro de um bloco de código do
comando for.
80
TÓPICO 3 | CASTING, CONTROLE DE FLUXO E LAÇOS DE REPETIÇÃO
FONTE: O autor
81
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
82
TÓPICO 3 | CASTING, CONTROLE DE FLUXO E LAÇOS DE REPETIÇÃO
FONTE: O autor
83
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
FONTE: O autor
84
TÓPICO 3 | CASTING, CONTROLE DE FLUXO E LAÇOS DE REPETIÇÃO
LEITURA COMPLEMENTAR
Java é uma linguagem de programação que está em toda parte, seja no seu
PC, no seu smartphone, em veículos, em pequenos robôs de automação residencial
e em máquinas industriais. Em todos os lugares existe um dispositivo rodando
Java. Muitos programadores escolhem aprendê-la justamente porque é comum
que as empresas a prefiram para um desenvolvimento novo em detrimento de
outras linguagens.
Todo mundo gosta de coisas grátis, não é mesmo? Como o custo é um fator
importante para pessoas e empresas, quando um programador quer aprender
uma linguagem nova ou uma organização quer passar a usar uma tecnologia, a
escolha por Java é justificada.
Não sendo preciso pagar nada para se criarem aplicativos Java, a gratuidade
se mostra como um dos fatores que mais ajudou a popularizar a linguagem entre
os programadores individuais e grandes organizações.
85
UNIDADE 1 | LINGUAGEM DE PROGRAMAÇÃO JAVA
Esta é uma das principais razões que levam as pessoas a aprenderem Java,
ou considerá-la como a melhor linguagem de programação entre todas. Se você
tem uma curva de aprendizagem íngreme, seria difícil obter resultados em um
curto espaço de tempo em outra linguagem.
Java é uma das poucas linguagens perto de serem 100% orientadas a objetos.
Com ela também são promovidos os princípios de design sólido e orientação a
objeto em forma de projetos de código aberto, como o Spring, que certifica a boa
gestão de um código utilizando o princípio de injeção de dependência.
86
TÓPICO 3 | CASTING, CONTROLE DE FLUXO E LAÇOS DE REPETIÇÃO
FONTE: <https://www.impacta.com.br/blog/2017/04/03/entenda-a-importancia-de-se-
aprender-java/>. Acesso em: 22 out. 2019.
87
RESUMO DO TÓPICO 3
Neste tópico, você aprendeu que:
• Além dos tipos de dados primitivos, existem tipos que são objetos, por exemplo,
String, o qual recebe qualquer conteúdo alfanumérico.
• Comando switch pode ser utilizado quando existem várias condições para
uma mesma variável, evitando vários comandos if e else.
• Escopo de uma variável é o local onde a variável é visível e pode ser utilizada.
CHAMADA
88
AUTOATIVIDADE
89
5 O comando for é um dos laços de repetição da linguagem de programação
Java, o qual permite repetir determinadamente um trecho de código-
fonte. Neste sentido, implemente um programa escrito em Java, em que o
usuário informe um número inteiro, sendo a quantidade de vezes em que
a mensagem no console “Esta é a iteração número x” é executada, através
do objeto System.out. Para o usuário informar a quantidade de vezes de
iterações do loop, utilize a biblioteca JOptionPane.
90
UNIDADE 2
CONCEITOS DE ORIENTAÇÃO A
OBJETOS, PACOTES JAVA.LANG E
JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade você
encontrará autoatividades com o objetivo de reforçar o conteúdo.
CHAMADA
91
92
UNIDADE 2
TÓPICO 1
1 INTRODUÇÃO
Agora que você já conhece os conceitos básicos da linguagem de
programação Java, suas variáveis, constantes, conversões, comandos de controle,
como instalar e configurar o ambiente de desenvolvimento, chegou o momento
de estudarmos um padrão diferente de programação: o paradigma da orientação
a objetos.
93
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
De acordo com Allan (2013), objeto pode ser entendido pela representação
da abstração de algo no contexto do problema da aplicação a ser desenvolvida, o
qual reflete as funcionalidades e recursos da aplicação.
94
TÓPICO 1 | CONCEITOS DE ORIENTAÇÃO A OBJETOS
95
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
O método main é chamado pela Java Virtual Machine (JVM) toda vez que
ela inicia, e este é implementado na classe principal de uma aplicação Java, sendo
público, estático, sem retorno (void), com nome “main” e receber como argumento
um array do tipo String, mas não se preocupe com estas definições neste momento,
pois você aprenderá a seguir cada uma delas.
96
TÓPICO 1 | CONCEITOS DE ORIENTAÇÃO A OBJETOS
FONTE: O autor
FONTE: O autor
97
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
98
TÓPICO 1 | CONCEITOS DE ORIENTAÇÃO A OBJETOS
FONTE: O autor
FONTE: O autor
99
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
100
TÓPICO 1 | CONCEITOS DE ORIENTAÇÃO A OBJETOS
FONTE: O autor
FONTE: O autor
101
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
Analise agora a Figura 10, na qual você pode notar que na Linha 6 está
sendo criado um objeto do tipo Cliente, chamado de “objetoCliente”. Além
disso, você pode notar que na Linha 11 foi atribuído o objeto “objetoCliente”
como valor para o atributo do objeto “objetoConta”. Neste sentido, na Linha 13
é apresentado um exemplo de delegação, em que o objeto “objetoConta” delega
o objeto “objetoCliente” invocando o valor do atributo “nome”. Note na parte
inferior da Figura 10, na guia “Console” do Eclipse, o resultado da execução da
classe “ProgramaConta”.
FONTE: O autor
102
TÓPICO 1 | CONCEITOS DE ORIENTAÇÃO A OBJETOS
5 ENCAPSULAMENTO
O termo encapsulamento (data hidding) é uma das características da
orientação a objetos, sendo um mecanismo para restringir acesso a variáveis e
métodos de uma classe. Segundo Furgeri (2015), com o encapsulamento, os
detalhes da implementação de uma classe se tornam ocultos ao usuário (código
que invoca o código oculto) da classe, e, com isso, o usuário utiliza serviços
da classe sem conhecer como o processo é realizado internamente, sendo
liberadas ao usuário algumas funcionalidades. Ainda segundo Furgeri (2015), o
encapsulamento pode ser chamado de acessibilidade, pois ele define o que está
acessível na classe.
103
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
6 MODIFICADORES DE ACESSO
Os modificadores de acesso são palavras-chave reservadas pelo Java que
fazem o controle de acesso às classes, interfaces, métodos, variáveis de instância
e variáveis de classe, tornando o acesso mais restritivo (FINEGAN; LIGUORI,
2018). Assim como outras palavras reservadas, não podem ser usadas como
nomes de métodos, classes ou atributos.
FONTE: O autor
104
TÓPICO 1 | CONCEITOS DE ORIENTAÇÃO A OBJETOS
FONTE: O autor
FONTE: O autor
105
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
7 HERANÇA
A característica herança, na orientação a objetos, significa justamente o que
o próprio nome sugere, a herança de algo, no caso entre as classes (FURGERI, 2015).
Neste sentido, a herança ocorre quando uma classe herda métodos e atributos de
uma outra classe, a qual é conhecida por superclasse (FURGERI, 2015).
FONTE: O autor
Note que na classe Pessoa, apresentada na Figura 16, para permitir acesso
aos atributos da classe, como eles possuem o modificador private, as boas práticas
dizem que devem ser criados dois métodos, set e get para cada atributo, sendo
que o método set de um atributo atribui valor a ele, e o método get serve para
pegar seu valor.
FONTE: O autor
107
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:
108
• São quatro tipos de motificadores de acesso: public, private, default e protected.
109
AUTOATIVIDADE
110
c) ( ) Em uma classe, não é permitido declarar uma variável fora de um
bloco, isto é, diariamente no escopo da classe.
d) ( ) Em um objeto, é permitido declarar uma variável apenas fora de um
bloco e não diretamente no escopo da classe.
111
112
UNIDADE 2 TÓPICO 2
1 INTRODUÇÃO
Agora que você já conhece os tipos primitivos de variáveis, assim como
alguns tipos de classes, comandos básicos para controle de fluxo, laços de
repetição, e compreende a orientação a objetos, é o momento de você aprender
como controlar erros durante a execução de programas.
113
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
Neste sentido, assim que o usuário tentar realizar o saque e não conseguir
executar a ação, o sistema precisa ao menos informá-lo do motivo da negação do
saque.
FONTE: O autor
114
TÓPICO 2 | EXCEÇÕES E CONTROLE DE ERROS
FONTE: O autor
FONTE: O autor
115
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
116
TÓPICO 2 | EXCEÇÕES E CONTROLE DE ERROS
FONTE: O autor
117
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
118
TÓPICO 2 | EXCEÇÕES E CONTROLE DE ERROS
FONTE: O autor
Analise a Figura 23, onde na Linha 20 foi incluído o comando try, e entre
as linhas 22 e 24 o comando catch e seu controle. Note que a variável “media”
teve que ser declarada no início do método, fora do tratamento de erro para
poder ser visualizada pelo comando return do método, pois se fosse declarada
apenas dentro do comando try, seu escopo seria apenas dentro deste, e não
poderia ser utilizada fora do tratamento de erros. Ainda na Figura 23, analise
o console apresentado como resultado da execução do programa, em que você
pode perceber na quarta linha do log, que o erro foi tratado e a mensagem “Erro
ocorrido” impressa.
119
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
120
TÓPICO 2 | EXCEÇÕES E CONTROLE DE ERROS
FONTE: O autor
121
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FIGURA 26 – EXEMPLO DE EXCEÇÃO CAUSADA POR ACESSO A OBJETO NULL, PORÉM TRATADA
FONTE: O autor
Outro erro que poderia ocorrer seria erros de conversões entre tipos de
dados, isto é, quando um cast é realizado errado, como a conversão de um caracter
alfanumérico para tipo number, por exemplo. Esses tipos de exceções, as quais
podem ser tratáveis pelo programador, o compilador não verifica se as validações
estão sendo realizadas, e, com isso, o java não obriga a implementar o try/catch, as
quais são chamadas de exceções de unchecked.
122
TÓPICO 2 | EXCEÇÕES E CONTROLE DE ERROS
FONTE: O autor
FONTE: O autor
123
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
Após clicar no “X”, conforme Figura 29, será apresentada uma caixa que
permite selecionar duas opções de tratamento, sendo uma delas a “Add throws
declaration”, que inclui o tratamento no método atual, sendo que o erro pode ser
tratado pelo código que o invocou.
FONTE: O autor
124
TÓPICO 2 | EXCEÇÕES E CONTROLE DE ERROS
FONTE: O autor
FONTE: O autor
125
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
5 CLASSE THROWABLE
É interessante você conhecer a classe Throwable, a qual é a superclasse para
tratamento de todos os erros e exceções que podem ocorrer em um programa
desenvolvido com a linguagem Java. Neste sentido, somente objetos que são
instâncias desta classe, isto é, uma de suas subclasses, podem ser lançados
pela JVM (Java Virtual Machine), ou ainda podem ser lançados pelo comando
Java throw. Com isso, essa classe ou uma de suas subclasses pode ser o tipo
de argumento para o tratamento em uma cláusula catch. Assim, para fins de
verificação de exceções em tempo de compilação, a classe Throwable, assim como
suas subclasses, e que também não seja uma subclasse de RuntimeException ou
Error, é considerada exceção verificada (checked).
Uma classe throwable pode conter uma cadeia de mensagens, que fornecem
mais informações sobre o erro, assim como sua causa, facilitando a identificação
para o tratamento e correção. Neste sentido, a essas informações que formam
uma cadeia dá-se o nome de recurso de exceção encadeada, pois o motivo pode
ter uma causa, levando a uma cadeia de exceções, sendo uma causada por outra.
Para você entender melhor esta cadeia de exceções, pense em um erro que
pode ter uma causa em uma determinada linha de um método, o qual é invocado
por outro método que recebe um valor como retorno, por exemplo. Como o
último método, onde realmente ocorreu o problema, retornou um objeto null,
então o método que o invocou também terá o ocasionamento de uma exceção,
pois ao utilizar o objeto com valor null, ocorrerá outro erro, e assim se formam
as cadeias de exceções. Neste sentido, a classe que lança a exceção é construída
sobre uma abstração em camadas inferiores, e uma operação na camada superior
falha devido a uma falha na camada inferior.
126
TÓPICO 2 | EXCEÇÕES E CONTROLE DE ERROS
FONTE: O autor
Para evitar que seja esquecido de realizar uma condição (comando if)
para validar se o retorno do método “sacarDinheiro” teve sucesso, é possível
lançar uma exceção (Exception), garantindo que caso a validação não seja
implementada, o processo seja abortado.
127
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
128
TÓPICO 2 | EXCEÇÕES E CONTROLE DE ERROS
FONTE: O autor
129
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
FONTE: O autor
130
TÓPICO 2 | EXCEÇÕES E CONTROLE DE ERROS
FONTE: O autor
FONTE: O autor
131
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
8 CLÁUSULA FINALLY
Este bloco serve para executar comandos, garantindo que estes sejam
executados mesmo que ocorra alguma exceção durante o processo anterior a este
bloco. Por exemplo, em um método existe a conexão com o banco de dados aberta,
um objeto chamado "conn" do tipo Connection, que você estudará mais adiante
neste livro e dentro deste método existe o tratamento de exceção (try/catch), e
em alguma linha dentro do bloco tratado, ocorra uma exceção, então a execução
passará para o bloco da cláusula catch, e, em seguida, obrigatoriamente para a
finally, realizando o fechamento da conexão com o banco de dados, realizando
a execução do comando "close" do objeto "conn". Neste sentido, assim que uma
exceção é lançada, e for preciso que um determinado comando seja realizado, é
utilizada a cláusula finally. Salienta-se que o método printStackTrace é fornecido
pela classe Throwable, que é útil para manipular exceções (SCHILDT, 2015).
FONTE: O autor
132
TÓPICO 2 | EXCEÇÕES E CONTROLE DE ERROS
FONTE: O autor
133
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:
134
AUTOATIVIDADE
135
c) ( ) O bloco finally deve ser utilizado para realizar a captura das mensagens
de erro de exceções ocorridas durante a execução de um programa,
sendo tratado pelo bloco try.
d) ( ) Durante a execução de um programa, quando ocorre alguma exceção,
seja por uma validação realizada ou por algum erro, ao se capturar o
erro dentro da cláusula catch, é possível saber apenas em qual classe
ocorreu o problema, não sendo especificada a linha do código-fonte
desta classe.
136
UNIDADE 2 TÓPICO 3
1 INTRODUÇÃO
Até esse ponto, você aprendeu os conceitos básicos de orientação a
objetos, isto é, como criar classes, atributos e métodos, e implementar aplicações
com estes conceitos. Além disso, você também aprendeu a criar tratamentos de
exceções dentro de programas, controlando exceções ou erros, assim como criar
suas próprias exceções. Agora que você já conhece todos esses conceitos, além
dos conhecimentos básicos da linguagem de programação Java adquiridos na
unidade anterior, este tópico apresenta alguns dos principais pacotes utilizados
no desenvolvimento de aplicações Java: java.lang e java.io.
2 PACOTE JAVA.LANG
Até este momento, você já utilizou muitas vezes as classes String e System,
sendo a classe System um tipo utilizado para variáveis, que na verdade são objetos
deste tipo, e a classe System, utilizada várias vezes para a invocação do método
“System.out.print” para impressão de mensagens no console. Em nenhuma
utilização das classes deste pacote foi necessário realizar a importação manual
do pacote, pois é o único pacote que automaticamente é realizada a importação.
137
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
DICAS
Um dos métodos que você pode utilizar muitas vezes, como já deve
ter utilizado em exercícios práticos anteriores, é o System.out.println, utilizado
frequentemente para rastrear a execução de um programa, imprimindo valores
ou passos executados, por exemplo.
138
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
FONTE: o autor
Isso é possível, pois quando é criada uma classe, ela é obrigada a realizar
herança de uma outra classe, ou seja, para toda classe criada, esta nova classe
herda de uma superclasse. Neste sentido, o println aceita qualquer objeto passado
para ele por parâmetro. No entanto, até agora, na maioria dos exemplos deste
livro, não foram criadas muitas classes que herdam de uma superclasse, ou classe
mãe, como no código-fonte apresentado na Figura 42, por exemplo.
139
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
140
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
FONTE: O autor
141
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
142
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
FONTE: O autor
3 O PACOTE JAVA.IO
143
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
DICAS
4 CLASSE FILE
Segundo Friesen (2015), uma determinada instância da classe File possui
o objetivo de selecionar um arquivo ou diretório do sistema, disponibilizando
vários comandos para realizar a manipulação do recurso solicitado. Ainda
segundo Friesen (2015), os construtores da classe File são:
• File(File parent, String child): cria uma nova instância de um objeto do tipo File
com o caminho informado pelo parâmetro parent concatenado com o valor do
parâmetro child.
• File(String pathname): cria uma nova instância de um objeto do tipo File com o
caminho informado no parâmetro do tipo String, sendo o caminho completo
até o arquivo.
• File(String parent, String child): cria uma nova instância de um objeto do tipo
File com o caminho informado no parâmetro parent do tipo String, concatenado
com o valor do parâmetro child, também do tipo String.
• File(URI uri): cria uma nova instância de arquivo convertendo o URI do arquivo
especificado no parâmetro em um nome de caminho abstrato.
144
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
DICAS
Para conhecer mais sobre a classe File do pacote java.io, acesse https://docs.
oracle.com/javase/7/docs/api/java/io/File.html.
FONTE: O autor
145
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
5 CLASSE FILEINPUTSTREAM
A classe FileInputStream, disponibilizada no pacote java.io, representa a
classe abstrata InputStream, e, neste caso, a classe FileInputStream é derivada da
classe InputStream, a qual realiza a leitura de bytes de um arquivo, e a entrada
de um arquivo pode ser pelo nome de um arquivo. Segundo Jana (2005), a classe
FileInputStream realiza a leitura de um arquivo, através de seus bytes, podendo
ser qualquer arquivo, como uma imagem por exemplo. A classe FileInputStream
possui os seguintes construtores:
146
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
DICAS
FONTE: O autor
147
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
148
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
FONTE: O autor
6 CLASSE FILEOUTPUTSTREAM
Agora que você já aprendeu a realizar a leitura de um arquivo qualquer,
assim como imprimir o conteúdo lido, faltou você aprender a realizar a gravação
de um arquivo, isto é, ler um arquivo qualquer e sobrescrever seu conteúdo.
149
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
DICAS
150
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
FONTE: O autor
FONTE: O autor
151
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
Como você pode analisar a Figura 54, que apresenta o arquivo sobrescrito
pelo código-fonte da Figura 53, a String foi gravada em duas linhas, isso porque
entre as duas linhas foi incluído o caracter “\n”, que no Java significa saltar linha.
7 ARRAYS
Array é um vetor conhecido na linguagem de programação Java, sendo
uma estrutura de dados, a qual é constituída de uma lista de itens de dados de
mesmo tipo, e está contida no pacote java.util na coleção da API do Java. Arrays
são listas de objetos de mesmo tipo que possuem um número fixo de valores,
cujo tamanho é estabelecido quando criado, sendo que após a sua criação, seu
tamanho é fixo (BUELL, 2013).
152
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
FONTE: O autor
Segundo Buell (2013), arrays são objetos que ocupam espaço na memória,
e todos os objetos em Java devem ser alocados dinamicamente utilizando o
operador new, o qual você já utilizou para instanciar classes.
FONTE: O autor
153
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
Ainda de acordo com Buell (2013), para declarar um array, deve ser
especificado o tipo dos elementos do array, e, em seguida, a quantidade de
elementos que este terá. Você pode analisar o código-fonte da Figura 56, no
qual, na linha 7 está sendo criado o array ilustrado na Figura 55, onde você pode
perceber que foi especificado o tipo int, em seguida o nome do array “c[]”, seguido
do sinal de igual, e então o operador new seguido do tipo com a quantidade entre
colchetes. Ainda referente ao código-fonte da Figura 56, analise a saída do console
após a execução da classe, em que você pode perceber que cada elemento do array
possui valor zero. Isso porque quando é criado um array do tipo int, inicialmente
todos os elementos possuem valor zero.
FONTE: O autor
154
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
cada um dos arrays devido ao tipo ser um objeto (String). Neste caso, cada elemento
é criado como null até ser atribuído um objeto do tipo String. Esta regra vale para
qualquer outro tipo que é um objeto, como Double ou Integer, por exemplo.
FONTE: O autor
FONTE: O autor
155
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
Agora que você já conhece arrays, existe mais uma forma de se trabalhar
com estas estruturas de dados: utilizar comando de loop para acessar seus índices
automaticamente. Conforme ilustrado no código-fonte da Figura 60, você pode
analisar que foi criado um array do tipo String, com tamanho máximo de 5
elementos, tais elementos estão recebendo um valor do tipo String, entre as linhas
8 e 12. Na Linha 14 deste código-fonte, foi utilizado o comando de repetição for,
o qual, conforme você já aprendeu, repete algum código até que a sua condição
seja satisfeita, sendo que neste caso, a quantidade de iterações é a quantidade de
elementos do array, sendo pega pela propriedade length do array.
FONTE: O autor
Ainda referente à Figura 60, você pode analisar a saída do console, onde
foram impressos o valor de cada elemento do array.
156
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
FONTE: O autor
8 ARRAYS MULTIDIMENSIONAIS
Agora que você já compreendeu o que são arrays e como utilizá-los, você
aprenderá o que são arrays multidimensionais, os quais podem ser entendidos
por ser um tipo de array, porém declarado com duas dimensões, normalmente
utilizado para representar tabelas de valores, possuindo seus dados organizados
em linhas e colunas (SCHILDT, 2015).
157
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
Ao ser analisada a Figura 62, você pode perceber que está sendo apresentada
uma tabela com três linhas e quatro colunas, sendo um array destas proporções.
Neste sentido, na primeira linha (Linha 0), o primeiro subscrito (índice) possui
o valor zero, justamente por referenciar a linha zero, isto é, a primeira linha do
array. Na segunda linha apresentada nesta figura (Linha 1), consequentemente o
primeiro subscrito possui valor 1.
FONTE: O autor
158
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
FONTE: O autor
159
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
FONTE: O autor
FONTE: O autor
160
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
LEITURA COMPLEMENTAR
161
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
162
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class Exemplo {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
// [ A ] declarando e instanciando uma agenda de contatos
0 ArrayList<String> agenda = new ArrayList();
1 // [ B ] usando o método add() para gravar 4 contatos na
agenda
2 agenda.add("Juca Bala;11 1111-1111");
agenda.add("Marcos Paqueta;22 2222-2222");
3 agenda.add("Maria Antonieta;33 3333-3333");
agenda.add("Antônio Conselheiro;44 4444-4444");
4
int i;
5
// [ C ] mostrando os "n" contatos da agenda (usando o
6 índice)
// número de elementos da agenda: método size()
7 System.out.printf("Percorrendo o ArrayList (usando o
índice)\n");
8 int n = agenda.size();
for (i=0; i<n; i++) {
9 System.out.printf("Posição %d- %s\n", i, agenda.get(i));
}
0
System.out.printf("\nInforme a posição a ser excluída:\n");
1 i = ler.nextInt();
2 try {
// [ D ] remove o i-ésimo contato da agenda
3 agenda.remove(i);
} catch (IndexOutOfBoundsException e) {
4 // exceção lançada para indicar que um índice (i)
// está fora do intervalo válido (de 0 até agenda.size()-1)
5 System.out.printf("\nErro: posição inválida (%s).",
e.getMessage());
6 }
163
UNIDADE 2 | CONCEITOS DE ORIENTAÇÃO A OBJETOS, PACOTES JAVA.LANG E JAVA.IO, VETORES UNIDIMENSIONAIS
E MULTIDIMENSIONAIS
164
TÓPICO 3 | PACOTES JAVA.LANG, JAVA.IO E VETORES
EXECUTANDO A APLICAÇÃO
FONTE: <https://www.devmedia.com.br/explorando-a-classe-arraylist-no-java/24298>.
Acesso em: 17 fev. 2020.
CHAMADA
165
RESUMO DO TÓPICO 3
Neste tópico, você aprendeu que:
• Uma das classes mais utilizadas do pacote java.lang é a System, a qual possui
vários métodos necessários para muitas soluções, como o println, por exemplo.
• Array pode ser entendido como sendo uma estrutura de dados, constituída por
uma lista de itens de dados de mesmo tipo.
• Cada item de um array é conhecido por elemento, o qual é acessado pelo seu
índice.
• Arrays bidimensionais são arrays que possuem dois subscritos, isto é, dois
índices para acessar um elemento, pois um deles indica a linha e o segundo a
coluna.
166
AUTOATIVIDADE
167
4 Em certas aplicações, é necessário armazenar em memória vários valores,
por exemplo, uma lista de notas de um aluno para que depois seja realizado
o cálculo da média, o que pode ser facilitado com a utilização de arrays.
Referente ao array na linguagem de programação Java, assinale a alternativa
CORRETA:
168
UNIDADE 3
TECNOLOGIAS DE
DESENVOLVIMENTO JAVA
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade você
encontrará autoatividades com o objetivo de reforçar o conteúdo apresentado.
CHAMADA
169
170
UNIDADE 3
TÓPICO 1
INTERFACES GRÁFICAS
1 INTRODUÇÃO
Agora que você já conhece os conceitos básicos da linguagem de
programação Java, suas variáveis, constantes, conversões, comandos de controle,
conceitos da orientação a objetos, arrays e a trabalhar com arquivos, chegou
o momento de você avançar nesta linguagem de programação e, com isso,
programar telas gráficas mais agradáveis, ao invés de apenas utilizar mensagens
no console.
171
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
172
TÓPICO 1 | INTERFACES GRÁFICAS
3 CLASSE JFRAME
A classe JFrame, disponibilizada pelo pacote swing, será utilizada para
a criação de frames nos exemplos deste livro. A classe JFrame serve para criar
uma janela com uma barra de título, bordas e ainda pode ter outros componentes
visuais em seu interior (SCHILDT, 2015). Com isso, a aplicação a ser desenvolvida
neste tópico será do tipo MDI (Multiple Document Interface), na qual as telas do
software são apresentadas dentro de uma única janela.
4 CLASSE JLABEL
A classe JLabel permite que seja definido um texto para servir como título
de outro componente, isto é, na frente de um campo de entrada de texto, por
exemplo, especificar o nome do campo ou qual sua finalidade (BURD, 2014). São
várias as propriedades que podem ser personalizadas para esse campo da tela,
como seu alinhamento, o tipo de fonte, tamanho da fonte, a cor do texto, entre
outros. A Figura 1 apresenta um exemplo para a sintaxe de declaração e criação
de um objeto do tipo JLabel.
FONTE: O autor
173
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
5 CLASSE JTEXTFIELD
Esta classe permite a criação de uma caixa de texto na tela, a qual funciona
como entrada de texto pelo usuário, e, além disso, esta classe também possui
várias propriedades cujos conteúdos podem ser modificados, como tipo de fonte,
cor, tamanho etc. (BURD, 2014). A Figura 2 apresenta um exemplo para a sintaxe
de declaração e criação de um objeto do tipo JTextField.
FONTE: O autor
6 CLASSE JPASSWORDFIELD
A classe JPasswordField é parecida com a classe JTextField, porém na
JPasswordField, ao ser digitados caracteres, eles são substituídos (visualmente)
por outro caractere para ocultar o que está sendo digitado, isto é, a senha digitada
é ocultada. O caractere padrão utilizado para esta ocultação é o asterisco “*”,
embora seja possível alterá-lo através do setEchoChar. A declaração e criação de
um objeto deste tipo (classe) é apresentado na Figura 3.
174
TÓPICO 1 | INTERFACES GRÁFICAS
FONTE: O autor
7 CLASSE JBUTTON
A classe JButton serve para realizar a criação de botões a serem utilizados
em outros componentes gráficos, como em frames e painéis, podendo ser criado
com um texto ou um ícone. A declaração e criação de um objeto deste tipo (classe)
é apresentado na Figura 4.
FONTE: O autor
175
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FIGURA 5 – TELA DE ACESSO PARA USUÁRIO INFORMAR SEUS DADOS PARA EFETUAR LOGIN
176
TÓPICO 1 | INTERFACES GRÁFICAS
FONTE: O autor
177
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
Segundo Furgeri (2015), outras constantes que podem ser utilizadas neste
método são:
DICAS
178
TÓPICO 1 | INTERFACES GRÁFICAS
FONTE: O autor
FONTE: O autor
Com isso, basta criar um objeto do tipo JMenu para a definição deste
na barra de menus, pois apenas com a criação do objeto apresentado na Figura
6, a janela teria uma barra de menus vazia, sem menus para serem clicados.
Conforme a Linha 33 da Figura 8, onde está sendo criado o objeto com nome
179
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
FONTE: O autor
180
TÓPICO 1 | INTERFACES GRÁFICAS
FONTE: O autor
181
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
FONTE: O autor
182
TÓPICO 1 | INTERFACES GRÁFICAS
FONTE: O autor
10 CLASSE JPANEL
A classe JPanel serve para a criação de objetos do tipo painel ou
container, o qual serve para abrigar outros componentes, como botões e campos
de entrada de texto, permitindo algumas melhorias de layout, como estilos de
bordas e cores, além de melhor organização de telas e código (FURGERI, 2015).
Neste sentido, a Figura 14 apresenta a implementação de nossa classe para a
criação de painel ou container para a inclusão de outros botões.
183
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
184
TÓPICO 1 | INTERFACES GRÁFICAS
FONTE: O autor
FONTE: O autor
11 CLASSE JCHECKBOX
A classe JCheckBox permite a criação de caixas de opção, isto é, uma caixa
na tela para selecionar, podendo ser sinalizada para ativada, que possui valor true,
ou desativada, que possui valor false (FURGERI, 2015). Ainda segundo Furgeri
(2015), caixas de opção são componentes que permitem ao usuário selecionar
nenhuma ou várias opções.
185
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
Neste sentido, analise a tela na Figura 17, que possui as caixas de opção,
onde o usuário pode selecionar um ou vários cursos.
FONTE: O autor
186
TÓPICO 1 | INTERFACES GRÁFICAS
FONTE: O autor
FONTE: O autor
FONTE: O autor
187
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
188
TÓPICO 1 | INTERFACES GRÁFICAS
FONTE: O autor
189
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
setSelected, deixando os três campos desmarcados (valor false). Por último, entre
as linhas 73 e 87, são verificados os três campos, através do método isSeleted, e
caso este método retornar valor true, pelo motivo dos objetos do tipo JCheckBox
estarem selecionados, então é atribuído o nome do curso a variável para então
no final ser apresentada a mensagem.
12 CLASSE JRADIOBUTTON
A classe JRadioButton serve para a criação de campos de seleção,
conhecidos por botões de rádio, que permite apenas uma das várias opções ser
selecionada pelo usuário (FURGERI, 2015). Ainda segundo Furgeri (2015), botões
de rádio devem ser criados em um agrupamento, utilizando o componente da
classe ButtonGroup, isso para cada conjunto de botões de rádio de um painel.
Segundo Furgeri (2015), através do componente ButtonGroup é definida a
regra para que o usuário possa selecionar apenas um dos botões de rádio do
mesmo grupo, e caso criados os botões de rádio fora de um ButtonGroup, estes
funcionarão como o JCheckBox, permitindo a seleção de várias opções.
Como será criada nova classe para novo painel, inclua na classe
GuiAcessoInterno mais um item de menu, declarando o objeto de
“itemOpcaoPeriodo”, conforme Linha 20 da Figura 22.
FONTE: O autor
FONTE: O autor
190
TÓPICO 1 | INTERFACES GRÁFICAS
FONTE: O autor
191
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
192
TÓPICO 1 | INTERFACES GRÁFICAS
FONTE: O autor
13 CLASSES JLIST
A classe JList permite a criação de um componente tipo lista, no qual o
usuário pode selecionar uma ou várias opções (FURGERI, 2015). O Quadro 4
apresenta os métodos disponibilizados pela classe JList.
Como será criada nova classe para novo painel, inclua na classe
GuiAcessoInterno mais um item de menu, declarando o objeto de
“itemOpcaodisciplina”, conforme Linha 20 da Figura 27.
FONTE: O autor
193
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
FONTE: O autor
FONTE: O autor
FONTE: O autor
195
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
14 CLASSES JCOMBOBOX
Da mesma forma que componente da classe JList, um componente da
classe JComboBox funciona parecido, permitindo selecionar um ou mais itens
(FURGERI, 2015). O Quadro 5 apresenta os métodos disponibilizados pela classe
JComboBox.
196
TÓPICO 1 | INTERFACES GRÁFICAS
197
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
198
TÓPICO 1 | INTERFACES GRÁFICAS
FONTE: O autor
199
RESUMO DO TÓPICO 1
• A classe JFrame permite a criação de uma janela com uma barra de título,
bordas e cores.
200
• Um painel (container) serve para abrigar outros componentes, o qual pode ser
criado através da classe JPanel.
201
AUTOATIVIDADE
203
204
UNIDADE 3
TÓPICO 2
1 INTRODUÇÃO
Agora que você já sabe como desenvolver aplicações desktop em Java,
existe mais um passo para tornar suas aplicações mais úteis: realizar consulta
e manutenção de dados em um banco de dados, permitindo que uma tela de
cadastro, por exemplo, insira os dados da tela em uma tabela do banco de dados,
podendo ser recuperado posteriormente. Neste sentido, este tópico apresenta
os principais fundamentos para manipulação de dados em Java, inclusive
apresentando alguns exemplos básicos de comandos SQL, necessários para o
desenvolvimento destas funcionalidades.
205
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
DICAS
Segundo Fain (2011), o Java possui dois pacotes com classes que são
necessárias para trabalhar com banco de dados: o java.sql e o javax.sql. O pacote
java.sql possui classes normalmente utilizadas, como Connection, Statement e
ResultSet, as quais você verá o uso nos exemplos. Já o pacote javax.sql é utilizado
para oferecer suporte à conectividade do banco de dados no lado do servidor,
possuindo classes como DataSource e RowSet.
• Driver Tipo 1: este funciona como uma ponte entre o JDBC e o ODBC,
permitindo que programas Java manipulem dados através de banco de dados
utilizando drivers ODBC da Microsoft. No entanto, dentre as desvantagens
de utilização de drivers ODBC é o fato de serem mais lentos que os demais,
além de terem de ser instalados e configurados na máquina de cada usuário,
sendo executados apenas em máquinas Windows. Este tipo de driver JDBC
raramente é usado.
• Driver Tipo 2: este driver possui classes Java que funcionam em conjunto com
drivers nativos fornecidos pelo fornecedor do SGBD. Estes drivers possuem
a vantagem de funcionarem mais rápido que os drivers do Tipo 1, porém
requerem instalação e configuração na máquina onde os programas Java são
executados.
• Driver Tipo 3: este driver, também chamado de middleware, pode ser fornecido
por fornecedores de servidores de aplicativos, sendo consistido por duas
partes: a parte do cliente executa uma chamada SQL, e esta é convertida em
um protocolo DBMS específico pela parte do servidor do driver.
206
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
• Criação do banco de dados: este passo você realizou na Unidade 1 deste livro.
• Inclusão do driver de conexão JDBC na aplicação ou dentro do diretório lib do
servidor de aplicação Tomcat.
• Definição do endereço de conexão com o banco de dados: realizada no momento
de configuração do banco de dados, sendo normalmente em um computador
de teste, é localhost mais a porta.
• Desenvolvimento da aplicação que realizará a manipulação de dados no SGBD.
207
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
• Access: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”).
• MySQL: Class.forName(“com.mysql.jdbc.Driver”).
• Oracle: Class.forName(“oracle.jdbc.driver.OracleDriver”).
• Microsoft SQL Server 2000: Class.forName(“com.microsoft.jdbc.sqlserver.
SQLServerDriver”).
• Sysbase: Class.forName(“com.sybase.jdbc2.jdbc.SybDriver”).
• PostgreSQL: Class.forName(“org.postgresql.Driver”).
FONTE: O autor
208
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
FONTE: O autor
FONTE: O autor
Com o arquivo .jar baixado, é necessário que ele seja importado para
dentro do projeto, o que, conforme descrito anteriormente, é uma das formas
de se utilizar o conector Java com o banco de dados. Neste sentido, clique com
o botão direito do mouse sobre o projeto, conforme apresentado na Figura 38, e
então selecione “Build Path” e “Configure Build Path”.
209
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
FONTE: O autor
FONTE: O autor
210
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
E
IMPORTANT
FONTE: O autor
DICAS
Caso você tenha dúvidas de comandos SQL básicos, acesse o artigo: https://
www.devmedia.com.br/primeiros-passos-no-mysql/28438.
211
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
212
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
FONTE: O autor
213
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
• first(): método que posiciona o cursor no primeiro registro retornado pelo SQL.
Exemplo: “resultSet.first()”;
• last(): método que posiciona o cursor no último registro retornado pelo SQL.
Exemplo: “resultSet.last()”;
214
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
FONTE: O autor
4 PADRÃO DAO
O padrão de projeto DAO foi desenvolvido pela necessidade de realizar
a separação da lógica de negócios de uma aplicação com a lógica de persistência
de dados (acesso a dados de uma tabela de banco de dados) (SONI, 2015). Uma
das vantagens da utilização deste padrão é a possibilidade de alterar a forma de
persistência, podendo alterar um comando SQL por exemplo, sem influenciar em
códigos-fonte da lógica de negócio, e, além disso, torna as classes mais legíveis,
pois o acesso aos dados de uma tabela estarão em uma classe DAO específica
(LUCKOW; MELO, 2010).
Neste contexto, uma classe DAO referencia a uma única tabela do banco
de dados, como no caso da aplicação de cadastro de cliente, será utilizada a
tabela Cliente, então será desenvolvida uma classe ClienteDAO (SONI, 2015).
Também deve ser criada uma classe entidade, isto é, uma classe que representa
a tabela, possuindo todos os campos da tabela em atributos na classe, pois um
objeto do tipo da classe entidade que é retornada em uma consulta, conforme
você aprenderá.
215
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
Para isso, crie uma nova package (pacote) no projeto, chamado “br.com.
entidade”, na qual devem ser criadas classes ‘entidade’ dentro dela. Neste sentido,
crie a classe Cliente, apresentada na Figura 46, a qual você pode perceber que que
possui a estrutura da tabela Cliente.
FONTE: O autor
216
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
217
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
218
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
FONTE: O autor
219
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
220
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
• Entre as linhas 108 e 130, está implementado o método alterar, o qual também
recebe por parâmetro um objeto do tipo Cliente, sendo utilizados seus atributos
para atribuir seus valores para os parâmetros do objeto “preparedStatement”
entre as linhas 116 e 119. Analise o comando SQL na Linha 113, o qual é
constituído do comando “UPDATE”, que indica alteração, mais o nome da
tabela “CLIENTE”, seguido do comando “SET”, e então os campos da tabela a
serem alterados, sendo que cada nome de campo da tabela é seguido do sinal
de igual com uma interrogação, indicando a sequência de parâmetro. Na Linha
114, existe a cláusula where “WHERE CODIGO = ?”, o que indica que somente
o registro com este código de cliente será alterado, sendo especificado o cliente
na Linha 119. Entre as linhas 121 e 123 está implementada uma validação, e
caso a quantidade de registros alterados for diferente de um, então é causada
uma exceção para abortar o processo que solicitou esta alteração.
• Por último, entre as linhas 132 e 152, está implementado o método excluir, que
da mesma forma que o método alterar, recebe por parâmetro um objeto do tipo
Cliente, mas na linha 137 está implementado o comando SQL “DELETE FROM”
seguido do nome da tabela “CLIENTE”, que exclui registros da tabela cliente.
Na Linha 138 está implementada a continuidade do comando de exclusão
de registro, sendo a cláusula where “WHERE CODIGO = ?”, o que permite
que apenas o registro que contenha o código especificado no parâmetro seja
excluído. Entre as linhas 142 e 145 está implementada a validação que caso
a quantidade de registros excluídos seja diferente de um, então é causada
exceção no trecho de código que invocou o método excluir.
221
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
222
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
223
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
224
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
FONTE: O autor
225
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
226
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
227
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
228
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
229
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
230
TÓPICO 2 | MANIPULAÇÃO DE DADOS: UTILIZANDO JDBC PARA DESKTOP
FONTE: O autor
231
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
DICAS
Caso você tiver dúvida sobre transação em banco de dados, acesse os artigos:
https://www.devmedia.com.br/java-jdbc-melhorando-o-desempenho-de-aplicacoes-
java/31976 e https://www.devmedia.com.br/transacoes-no-oracle-commit-rollback-e-save
point/349.
232
RESUMO DO TÓPICO 2
• Dois pacotes do Java necessários para trabalhar com banco de dados são: o
java.sql e o javax.sql.
• Caso uma aplicação Java que estiver solicitando conexão com um banco de
dados ser executada, e o driver não for localizado, então será ocasionada a
exceção ClassNotFoundException.
233
• A classe Connection serve para receber a conexão com o banco de dados.
234
AUTOATIVIDADE
235
4 O JDBC é uma API (Aplication Program Interface) que permite programas
desenvolvidos pela linguagem de programação Java realizarem a
manipulação de dados em SGBDs. Referente ao JDBC e seus tipos, assinale
a alternativa CORRETA:
236
237
238
UNIDADE 3
TÓPICO 3
1 INTRODUÇÃO
Até este ponto da Unidade 3, você aprendeu a desenvolver aplicações
na linguagem de programação Java utilizando a tecnologia Swing, com intuito
de aplicações desktop, além dos conceitos básicos já estudados anteriormente.
Agora que você já conhece todos estes conceitos, além de programação desktop, é
o momento de você aprender uma das tecnologias do Java para desenvolvimento
de aplicações para web. Neste contexto, este tópico apresenta a tecnologia JSP e
Servlet, as quais permitem o desenvolvimento dinâmico de aplicações web.
239
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
Além do HTML e código Java, uma página JSP pode ter outras tecnologias
associadas, como CSS (Cascating Style Sheets), Javascript., os quais permitem o
desenvolvimento de páginas web dinâmicas e mais amigáveis ao usuário.
240
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
FONTE: O autor
Com isso, o projeto será criado, e para a criar uma nova página JSP, basta
clicar com o botão direito do mouse sobre a pasta “WebContent” do projeto,
conforme apresentado na Figura 53, e então selecionar as opções “New” e então
“JSP File”, e será aberta uma janela para informar o nome do arquivo JSP, e, neste
caso, informe “index.jsp”, para que seja a página inicial do projeto.
241
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
FONTE: O autor
242
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
Para executar a página JSP, apresentada na Figura 54, deve ser incluída
a aplicação web ao servidor de aplicação Tomcat, bastando clicar com o botão
direito do mouse sobre o servidor de aplicação Tomcat, conforme ilustrado na
Figura 55, selecionar a opção “Add and Remove...”, e então adicionar a aplicação
web para a lista direita.
FONTE: O autor
243
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
FONTE: O autor
244
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
DICAS
245
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
FONTE: O autor
246
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
FONTE: O autor
4 TECNOLOGIA SERVLET
Servlets podem ser entendidos como objetos Java que estão armazenados
em um servidor, e seu nome, em inglês, significa Serv (Servidor) e let (pequeno),
pois é considerado um pequeno servidor, ou seja, servidores Java são também
conhecidos por contêineres de aplicações (FURGERI, 2015). Neste contexto, assim
como para uma página em JSP ser executada, uma Servlet também necessita da
utilização de um servidor de aplicação.
• Servlet é apenas uma classe em Java, e páginas JSP pode ter código Java, HTML
CSS, Javascript.
• Servlets possuem a extensão “.java” e arquivos JSP possuem a extensão “.jsp”.
• Servlets, quando no servidor, são arquivos compilados (.class), enquanto
que uma página JSP quando acessada pela primeira vez, é gerado uma
Servlet correspondente para ela, e a partir do segundo acesso, sua Servlet
correspondente já existirá no servidor e não é recriada.
• Servlets são indicadas para controlar aplicações, e páginas JSP são mais
indicadas para conter conteúdo a ser disponibilizado ao usuário (HTML, CSS,
Javascript).
247
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
248
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
FONTE: O autor
Será aberta uma tela para informar o nome da Servlet, e, neste caso,
informe “LoginServlet” e, novamente, pressione o botão “Finish”. Com este passo,
será criada a classe LoginServlet, a qual é apresentada na Figura 62. Ressaltando
que para um projeto web utlizando Servlet e JSP é necessária a importação da
biblioteca “servlet.jar”, conforme você pode observar na Figura 62, onde na pasta
lib que está dentro da pasta “WEB-INF” do diretório do projeto, existe o arquivo
da biblioteca.
FONTE: O autor
249
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
250
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
FONTE: O autor
251
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
FONTE: O autor
252
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
Note na Figura 66, que além das classes Cliente e ClienteDAO, foram
criadas as classes Usuario e UsuarioDAO, cujos códigos-fonte são apresentados a
seguir, porém, deve ser criada a tabela USUARIO no banco de dados, conforme
apresentados os comandos SQL na Figura 67, isto é, o comando “connect
Uniasselvi” para conectar ao banco de dados “UNIASSELVI”, e o comando
“CREATE TABLE USUARIO (EMAIL VARCHAR(200), SENHA VARCHAR (10)
)”o qual cria a tabela no banco de dados conectado. Execute também o comando
INSERT, o qual também está sendo apresentado na Figura 67, pois será utilizado
este usuário para os testes na aplicação.
FONTE: O autor
FONTE: O autor
253
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
FONTE: O autor
255
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
256
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
FONTE: O autor
257
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
258
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
FONTE: O autor
259
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
260
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
FONTE: O autor
261
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
FONTE: O autor
262
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
FONTE: O autor
263
UNIDADE 3 | TECNOLOGIAS DE DESENVOLVIMENTO JAVA
LEITURA COMPLEMENTAR
Para remover um pouco do código Java que fica na página JSP, a Sun
desenvolveu uma linguagem chamada Expression Language que é interpretada
pelo servlet container.
Como fazer isso? Simples, existe uma variável chamada param que, na
expression language, é responsável pelos parâmetros enviados pelo cliente. Para
ler o parâmetro chamado idade basta usar ${param.idade}. Para ler o parâmetro
chamado dia devemos usar ${param.dia}.
<html>
<body>
Digite sua idade e pressione o botão:<br />
<form action="mostra-idade.jsp">
Idade: <input type="text" name="idade"/> <input type="submit"/>
</form>
</body>
</html>
<html>
<body>
Testando seus parâmetros:<br />
A idade é ${param.idade}.
</body>
</html>
264
TÓPICO 3 | DESENVOLVIMENTO DE APLICAÇÃO WEB: JSP E SERVLET
FONTE: <https://www.caelum.com.br/apostila-java-web/javaserver-pages/#exerccios-
parmetros-com-a-expression-language>. Acesso em: 19 fev. 2020.
265
RESUMO DO TÓPICO 3
• O JSP (Java Server Pages) pode entendido por ser um arquivo que possui
conteúdo HTML, scriptlet (código na linguagem de programação Java), além
de CSS e Javascript, permitindo a desenvolvimento de páginas web dinâmicas.
266
• Servlet e JSP possuem funcionalidades parecidas, mas existem algumas
diferenças, como: a extensão dos arquivos; Servlet é uma classe Java e possui
somente código Java, enquanto JSP pode ter código Java, HTML, Javascript e
CSS; Servlets são indicadas para controlar aplicações, e JSPs são mais indicadas
para ter conteúdo HTML, e, neste caso, deve ser evitado utilização de código-
fonte Java dentro do JSP, tornando o código mais legível, e todas as regras de
negócios devem ser feitas em Servlets.
• Uma Servlet pode ter um método doGet (método GET do HTTP), o qual recebe
requisições para envio de dados e um método doPost (método POST do HTTP),
o qual recebe dados de formulários.
CHAMADA
267
AUTOATIVIDADE
2 Um sistema web permite que, por exemplo, um usuário possa realizar suas
operações dentro do sistema, em uma filial da empresa em que ele trabalha,
por exemplo. Além disso, outro tipo de aplicação web muito utilizado
atualmente são sites de e-commerce, os quais permitem a venda direta a
consumidores finais pela internet, tornando o negócio mais abrangente.
Referente à tecnologia JSP (Java Server Pages), assinale a alternativa
CORRETA:
268
d) ( ) Um arquivo JSP é o local mais apropriado para conter código-fonte
HTML, Javascript e CSS, pois esta é solicitada pelo cliente (navegador
de internet), o qual receberá a página web dinâmica, e é neste arquivo
que devem ser implementadas as regras de negócios de uma aplicação.
a) ( ) JSP (Java Server Pages) e Servlets são a mesma tecnologia, não havendo
diferenças entre elas, pois ambas permitem a geração de páginas web
dinâmicas, utilizando código Java, HTML, Javascript e CSS.
b) ( ) Servlet pode ser descrita por ser uma classe Java que permite o controle
de aplicações web, recebendo requisições HTTP do tipo GET e POST.
c) ( ) Servlet pode ser entendida por ser um objeto Java que permite o controle
de aplicações web, recebendo apenas requisições HTTP do tipo GET.
d) ( ) Servlet pode ser entendida por ser um objeto Java que permite o controle
de aplicações web, recebendo apenas requisições HTTP do tipo POST.
269
REFERÊNCIAS
ALLAN, A. Aprendendo Programação IOS. São Paulo: Novatec, 2013.
ANJOU, J. D’. et al. The Java Developer’s Guide to Eclipse. Boston, MA:
Pearson Education, 2005.
270
CAMPOS, A. L. N.; CAMPOS, A. F. Java Start. Rio de Janeiro: Digitaliza, 2018.
eBook. Disponível em: https://www.amazon.com.br/Java-Start-Andr%C3%A9-
Campos-ebook/dp/B07D5LDT85. Acesso em: 9 nov. 2019.
FINEGAN, E.; LIGUORI, R. OCA Java SE 8: guia de estudos para o exame 1Z0-
808. Porto Alegre: Bookman, 2018.
FRIESEN, J. Java I/O, NIO and NIO 2.0. New York: Apress, 2015.
FRIESEN, J. Learn java for Android Development. New York: Apress, 2010.
271
MATTOS, É. C. T de. Programação de Software em Java. São Paulo: Digetati
Books, 2007.
MYATT, A. Pro NetBeans IDE 5.5 Enterprise Edition. New York: Apress, 2007.
NARTOVICH, A. et al. IBM Technology FOR Java Virtual Machine in IBM i5/
OS. New York: International Business Machines Corporation, 2008.
272