Вы находитесь на странице: 1из 91

Conhea mais em

http://www.feltex.com.br

https://www.facebook.com/feltex.br
https://www.youtube.com/user/andrefelixbr/
http://feltex.com.br/moodle

Sumrio
1.

Introduo ao Java............................................................................................................................................................ 1

1.1.

Sobre o material ............................................................................................................................................................ 1

1.2.

Diviso dos captulos .................................................................................................................................................... 2

2.
2.1.

Mundo do Java .................................................................................................................................................................. 3


A Linguagem .................................................................................................................................................................. 4

Ento se divirta com o Java! ................................................................................................................................................... 4


2.2.

O que uma IDE? ........................................................................................................................................................ 6

2.3.

A sopa de letras do Java.............................................................................................................................................. 6

2.4.

Configurando o ambiente ............................................................................................................................................. 7

2.5.

O meu Al Mundo ......................................................................................................................................................... 9

2.6.

Formas de Entrada de dados .................................................................................................................................... 10

2.7.

Exibindo minhas mensagens .................................................................................................................................... 10

2.8.

Exerccios resolvidos .................................................................................................................................................. 12

2.9.

Exerccios propostos .................................................................................................................................................. 13

3.

Conveno e padres .................................................................................................................................................... 14

3.1.

Padro de nomenclatura ............................................................................................................................................ 15

3.7.

Exerccios resolvidos .................................................................................................................................................. 28

3.8.

Exerccios propostos .................................................................................................................................................. 29

4.

Estrutura de Dados e Colees .................................................................................................................................... 30

4.1.

Arrays ............................................................................................................................................................................ 31

4.2.

Maps .............................................................................................................................................................................. 34

4.3.

Colees ....................................................................................................................................................................... 35

4.4.

Set ................................................................................................................................................................................. 37

5.

Orientao a Objeto ........................................................................................................................................................ 40

5.1.

O que so objetos? ..................................................................................................................................................... 41

5.2.

Instncias da Classe................................................................................................................................................... 42

5.3.

Atributos da Classe ..................................................................................................................................................... 43

5.4.

Diagrama de Classes ................................................................................................................................................. 43

5.5.

Atributos Estticos ...................................................................................................................................................... 43

5.6.

Construtores da Classe .............................................................................................................................................. 44

6.
6.1.
7.

Tratamento de exceo.................................................................................................................................................. 45
O que uma exceo ................................................................................................................................................ 45
Mais um pouco de Orientao a Objetos .................................................................................................................... 46

7.1.

Herana ........................................................................................................................................................................ 47

7.2.

Mais um pouco de Orientao a Objetos Overriding (sobrescrita) ..................................................................... 53

7.3.

Overloading (Sobrecarga).......................................................................................................................................... 54

www.feltex.com.br

7.4.

Referenciando atributos da classe atual ................................................................................................................. 56

7.5.

Referenciando atributos da classe superior............................................................................................................ 57

7.6.

Polimorfismo ................................................................................................................................................................ 57

7.7.

Classes Abstratas ....................................................................................................................................................... 57

7.8.

Mtodos Abstratos ...................................................................................................................................................... 57

7.9.

Interfaces ...................................................................................................................................................................... 58

8.

Classes Utilitrias ............................................................................................................................................................ 60

8.1.

Pacote java.lang .......................................................................................................................................................... 61

8.2.

Classe String ................................................................................................................................................................ 61

8.3.

Classe Math ................................................................................................................................................................. 62

8.4.

Locale ............................................................................................................................................................................ 63

8.5.

DateFormat .................................................................................................................................................................. 64

8.6.

Formatao de Nmero ............................................................................................................................................. 66

9.

Manipulao de Arquivos ............................................................................................................................................... 67

9.1.

Classe File .................................................................................................................................................................... 67

9.2.

Lendo e Gravando Dados em Arquivos................................................................................................................... 68

9.3.

Classes Scanner e PrintWriter .................................................................................................................................. 69

9.4.

Escrita de Dados na Sada Padro .......................................................................................................................... 70

10.

Banco de Dados (JDBC) ............................................................................................................................................ 71


Introduo................................................................................................................................................................. 72

10.1.
10.1.1.

Estabelecendo a Conexo ................................................................................................................................. 73

10.1.2.

Trabalhando com Instrues SQL .................................................................................................................... 75

10.1.3.

Para criar uma tabela: ........................................................................................................................................ 75

10.1.4.

Para incluir um registro na tabela ..................................................................................................................... 76

10.1.5.

Para listar os registros existentes na tabela ................................................................................................... 76

10.1.6.

Para alterar um registro na tabela .................................................................................................................... 76

10.1.7.

Para excluir um registro na tabela .................................................................................................................... 76

10.2.

Apresentao ........................................................................................................................................................... 79

10.3.

Cdigo de Exemplo ................................................................................................................................................. 79

10.4.

Entidade Aluno ........................................................................................................................................................ 80

10.5.

Cadastro de Aluno .................................................................................................................................................. 82

10.5.1.

Classe DAO.......................................................................................................................................................... 82

10.5.2.

AlunoDAO ............................................................................................................................................................. 82

11.

Exerccios proposto .................................................................................................................................................... 86

11.1.

Executar o exemplo completo ............................................................................................................................... 86

11.2.

Alterao do exemplo ............................................................................................................................................. 86

www.feltex.com.br

Verso: 1.0

Isaac Newton

1. Introduo ao Java
1.1.

Sobre o material

Aps mais de 8 anos em sala de aula como professor de informtica em especial Java decidi fazer uma apostila que
ajudasse meus alunos a entenderem um pouco mais dessa poderosa linguagem de programao. Os livros sempre
possuem mais contedos do que deve ser lecionado em blocos de 50 ou 60 horas de aula. Eles so bons como
material de apoio complementar.
Esta apostila no vem a ser um material para esgotar o assunto. Serve mais para estudantes que querem seguir
uma linha prtica e objetiva de estudos para conseguirem entrar no mercado de trabalho com Java.
O material tambm para aqueles que querem consolidar os conhecimentos da linguagem fazendo exerccios,
atualizando o que aprenderam, revisando alguns assuntos e utilizando nossas referncias para aprofundamento no
conhecimento do Java.
Tambm feita muita referncia s mdias criadas no blog www.feltex.com.br como vdeo aulas, tutoriais e
aplicaes completas, cursos em nosso site.

Isaac Newton

1.2.

Diviso dos captulos

Os captulos seguiro o seguinte padro:


cone

Descrio
Metas do captulo O que ser abordo.
Contedo Material explicativo do assunto
abordado.
Exerccios Lista de tarefas que devem ser feitas
para avaliar a compreenso do leitor.
Dicas do autor links, explicaes e mais detalhes
sobre o assunto.
Desafios Exerccios que com exigem maior
dedicao estudos dos alunos.
Pare e revise H algo de errado com o cdigo.
Vamos revis-lo.

Euclides

2. Mundo do Java
Metas do captulo

Conheceremos uma breve histria do Java, seus criadores e como utilizado hoje.
O que JRE, JDK, JSE, JEE, JME.
Faremos a configurao do ambiente de desenvolvimento.
Criaremos nosso primeiro programa Java.
Aprenderemos a ler e exibir dados em um programa Simples.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

2.1.

A Linguagem

Java uma linguagem de programao e plataforma de computao lanada pela Sun Microsystems em 1995. H
muitos aplicativos e sites que s funcionam quando voc tem o Java instalado em seu computador.

Java rpido, seguro e confivel. De laptops, datacenters, consoles de jogo, supercomputadores cientficos,
telefones celulares e claro at na Internet, Java est em toda parte!
Hoje a tecnologia faz parte da nossa vida diria. Por causa do Java temos dispositivos digitais mais inteligentes, mais
funcionais, e de bem mais divertidos.

No incio da dcada de 90, estendendo-se o poder da computao em rede para as atividades da vida cotidiana era
uma viso radical. Em 1991, um pequeno grupo de engenheiros da Sun chamado "Green Team" acreditou que a
prxima onda na computao seria a unio de dispositivos de consumo digitais e computadores. Liderado por James
Gosling, a equipe trabalhou duramente e criou a linguagem de programao que iria revolucionar o nosso mundo
Java.

A Equipe Verde, em traduo livre, demonstrou a sua nova linguagem em um handheld controlador de uma casa de
entretenimento interativo que foi originalmente voltado para o setor de televiso a cabo digital. Infelizmente, o
conceito era muito avanado para a eles naquele momento. No entanto era o ideal para a Internet, que estava
apenas comeando a decolar. Em 1995, a equipe anunciou que o navegador de Internet Netscape Navigator iria
incorporar a tecnologia Java.

Nos anos seguintes a linguagem foi se espalhando em diversos sistemas operacionais e dispositivos.

Hoje, Java no s permeia a Internet, mas tambm a fora invisvel por trs de muitas das aplicaes e
dispositivos que alimentam nossas vidas. A partir de telefones mveis para dispositivos portteis, jogos e sistemas
de navegao para E-Business, sistemas embarcados em televises, carros, geladeiras e equipamentos da
indstria. H Java est em toda parte!
Uma das caractersticas mais marcantes do Java que ele multiplataforma, ou seja, o mesmo cdigo que voc
cria em Windows poder ser rodado sem alterao em Sistemas Operacionais como Linux, Mac OS, Solaris ou
Solaris. O que torna isso possvel que devemos sempre instalar uma JVM Mquina Virtual Java no Sistema
Operacional para que possamos rodar os programas em Java.
Ento se divirta com o Java!

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

Linguagem de programao
Uma linguagem de programao uma linguagem artificial projetado para enviarmos instrues a uma
mquina, especialmente um computador. Linguagens de programao podem ser utilizadas para criar os
programas que controlam o comportamento de uma mquina e/ou para expressar algoritmos comandos
encandeados para um fim comum.
Um programa escrito como uma srie de instrues de computador compreensveis por humanos que
podem ser lidos por um compilador e traduzidos em cdigo de mquina, de modo que um computador possa
entender e executar.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

2.2.

O que uma IDE?

IDE (Integrated Development Environment), ou Ambiente de Desenvolvimento Integrado, um software com a


finalidade de facilitar e nos auxiliar na construo de programas de computador. As principais caractersticas
desses softwares so: interface grfica para criao de componentes, formatao do texto em um padro prdefinido, autocompletar de texto ao digitar, pr-compilao antes da execuo e possibilidade de realizar
depuraao de cdigo execuo passo-a-passo do programa para anlise.

2.3.

A sopa de letras do Java

O Java possui vrios acrnimos para as divises internas na linguagem. A maioria dos nomes dessas partes
iniciada com J de Java. Isso costuma causar grandes dvidas nos programadores iniciantes. Veja que na
imagem abaixo a linguagem Java tem vrias divises lgicas (definidas por clulas e agrupadas por cores).

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides
Linguagem Java e seus mdulos: http://www.oracle.com/technetwork/java/javase/tech/index.html

Explicaremos o que significam as siglas mais utilizadas no dia-a-dia de um programador. Os outros itens
veremos ao longo dos captulos.
Sigla
JVM

Significado
Java Virtual Machine

JRE
JDK
JSE
JEE

Java Runtime
Envireoment
Java Development Kit
Java Standart Edition
Java Enterprise Edition

JME

Java Micro Edition

2.4.

Descrio
Programa bsico para a execuo do Java em qualquer sistema
operacional.
Programa necessrio para executar programas Java.
Programa necessrio para desenvolvermos programas na linguagem Java.
a verso do Java para desenvolvimento de aplicaes bsicas.
a verso do Java para desenvolvimento de aplicaes Web e
corporativas.
a verso do Java para desenvolvimento de aplicativos mveis.

Configurando o ambiente

Para iniciarmos o desenvolvimento de Java precisamos instalar as ferramentas adequadas no nosso computador.
Existe o que chamamos de Java Development Kit Kit de desenvolvimento Java. Esse o conjunto de
ferramentas

que

possibilita

nossa

criao

de

programa

nessa

linguagem.

Acesse

Link:

http://www.oracle.com/technetwork/java/javase/downloads/index.html e faa o download da verso JDK.


Ao concluir o download faa a instalao seguindo o winzard do programa. Ao final voc j ter o Java
instalado e ento dever fazer a instalao do Eclipse. Eclipse a ferramenta que utilizaremos para criar nossos
programas.
Considere que para criar um arquivo .doc precisamos utilizar o MS Word. Em paralelo a essa viso
utilizamos a IDE Eclipse para criar os arquivos java.
O Eclipse assim como o Java uma ferramenta gratuita. Acesse o site http://www.eclipse.org/downloads/.
Selecione a verso do Eclipse Standard adequada para o seu Sistema Operacional (32 ou 64 bits). Aps o trmino
do download basta descompactar o Eclipse e executar o programa no caso do Windows eclipse.exe.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

Vdeo aula
Deixamos disponvel em nosso canal no youtube uma vdeo-aula de como configura o ambiente Java completo.
Acreditamos que isso ajudar bastante! http://youtu.be/njSO8oxyNvU
Segue um post em nosso blog sobre configurao do Eclipse:

http://www.feltex.com.br/felix/configurando-o-eclipse-keppler/.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

2.5.

O meu Al Mundo

Agora chegou a hora de fazermos o nosso primeiro programa. Ser um exemplo bem simples. Ele exibir uma
mensagem de saudao na console do Eclipse.

1. Voc deve abrir o seu Eclipse. Acessar File >> New >> Project. No campo Wizard digite: Java Project
Aperte Next >> Digite o nome AloMundo. Pressione Finish.
2. Acessar File >> New >> Classs.
No campo nome digite: AloMundo.
No campo package digite: br.com.feltex.alomundo.
3. Pronto. Agora digite o valor abaixo na sua classe.

1.
2.
3.
4.
5.
6.
7.
8.

package br.com.feltex.alomundo;
public class AloMundo {
public static void main(String[] args) {
System.out.println("Alo Mundo!!!");
}
}

Aps isso clique com o boto direito na sua Classe AloMundo. Acesse Run >> Run As Java Application.

Sada
"Alo Mundo!!!"

Altere o programa anterior e faa a impresso da mensagem: Batatinha quando nasce!.


Exemplo disponvel em: http://www.feltex.com.br/felix/hello-world/

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides
Pare e revise
Seu cdigo no funcionou? Veja o que pode ter ocorrido.
Mensagem
Syntax error, insert "}" to complete
ClassBody
Syntax error on token ""Alo Mundo!!!"",
delete this token
The public type Alomundo must be
defined in its own file

2.6.

Soluo
Esqueceu o ltimo fechamento de chaves. Adicione } no final da
classe.
O cdigo System.out.println("Alo Mundo!!!"); foi adicionado fora do
mtodo public static void main(String[] args) {
O nome da classe est diferente do arquivos. O Java Case
Sensitive. Alomundo diferente de AloMundo.

Formas de Entrada de dados

Podemos utilizar vrias formas de entrada de dados em Java. As mais comuns so a classe Scanner e
JOptionPane.

Uma das tarefas mais comuns na programao solicitar ao usurio alguns dados de entrada. Imagine um
sistema que realiza o cadastro de alunos. Nesse sistema necessrio que haja uma interface onde possamos
informar matrcula, nome, endereo, telefone, e-mail, data de nascimento entre outros dados do aluno.

Para isso precisamos de classes especficas que nos permitam realizar essas tarefas to simples.

Vamos realizar a leitura do nome de um usurio:

package br.com.feltex.jse.lista1;
import javax.swing.JOptionPane;

No se esquea da assinatura
correta do mtodo main.

public class Nomes {


public static void main(String[] args) {
String nome = "";
nome = JOptionPane.showInputDialog("Digite o nome:");
System.out.println("O nome digitado foi: " + nome);
}
}

2.7.

Exibindo minhas mensagens

H 2 formas bsicas de exibirmos dados para o usurios. Uma utilizando os seguintes comandos:

System.out.println(Minha mensagem);

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides
Comando que imprime a frase Minha mensagem e em seguida pula uma linha. Observe que o comando
println tem uma terminao em ln que significa line new(nova linha). O comando abaixo imprime um o
mesmo texto, contudo no criar uma nova linha.

System.out.print(Minha mensagem);

JOptionPane.showMessageDialog(null, "Minha Mensagem");


O comando acima exibir um formulrio modal1 com o texto Minha Mensagem;

Veja o exemplo de como isso funciona. Digite o cdigo abaixo no Eclipse e verifique os resultados.

Forma de exibio de tela que no permite ao usurio selecionar outras telas do sistema antes de fechar a visualizao atual.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

package br.com.feltex.jse.basico;
import javax.swing.JOptionPane;
public class AloMundo {

public static void main(String[] args) {


System.out.println("Minha mensagem");
System.out.print("Minha mensagem");
System.out.print("Minha mensagem");
JOptionPane.showMessageDialog(null, "Minha Mensagem");
}
12. }

2.8.

Exerccios resolvidos

Exerccios
Escreva programas para:
1. Ler nome, idade e telefone de uma pessoa.
2. Ler o endereo e e-mail.
3. Calcular a idade a partir do ano de nascimento.
4. Ao final de cada programa imprimir uma mensagem com o dado lido.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

2.9.

Exerccios propostos
Desafio

1. Crie um programa que desenhe na console2 um retngulo com a letra A.


AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
A
A
A
A
A
A
A
A
A
A
A
A
A
A
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
2. Crie um programa que desenhe na console um novo retngulo com a primeira e ltima letra do seu nome.
Sendo que as bases (linhas superior e inferior) use a primeira letra. Para as laterais use a ltima letra. Se as
letras forem iguais mude uma delas a seu critrio!

O que vimos...

Como est dividida a linguagem Java.


O Bsico do mundo java.
Forma de exibir os dados para o usurio.
Como criar programa na linguagem Java
Sintaxe bsica de um programa.

Tela de exibio de dados textuais do eclipse.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

3. Conveno e padres

Metas do captulo

Veremos a tratamento condicional, convenes da linguagem.


Principais tipos de dados.
Controles de fluxo.
Para que servem os Loops.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

3.1.

Padro de nomenclatura

O mais importante de sabermos como iniciante que Java Case Sensitive. Isto significa que ela diferencia
maiscula de minscula. Veja: Casa <> CASA <> CaSa <> cASA <> casa <> Casa <> casa
Escrevemos vrias vezes a palavra casa, mas para o Java so valores por terem letras maisculas e minsculas.

Temos convenes para nomear os componentes de nossos sistemas. Vamos s explicaes:

Classes os nomes de classe devem iniciar em maisculo. Se houver mais de uma palavra no nome da classe
cada primeira letra das novas palavras seguintes devem ser escritas em maisculo. Devemos utilizar substantivos.

Professor

Aluno

Cadastro

AcessoLogin

NomeMinhaClasse

Variveis os nomes de variveis devem iniciar em minsculo. Se houver mais de uma palavra no nome da
varivel cada primeira letra das novas palavras seguintes devem ser escritas em maisculo.

idade

nome

enderecoCobranca

marcaRegistrada

Constantes os nomes de constantes devem ser sempre em maisculo. Se houver mais de uma palavra no
nome da constante deve haver um _ entre as palavras.

PI

COMISSAO

NOME_APLICACAO

ALTURA_MAXIMA

Mtodos os nomes de mtodos seguem as convenes de variveis. A cada nova palavra a letra inicial deve
ser Maiscula. Devemos utilizar verbos, pois so aes que o nosso sistema executa.

fechar()

exibir()

calcularMedia()

abrirArquivo()

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

Evite utilizar acentuao. No podemos utilizar caracteres especiais com )(*&%$#@!,.{}^?:><+.


Procure fazer uso apenas de Letras e nmeros.

Site oficial
Existe um oficial com todas as convenes oficiais da linguagem Java. Inclusive at possvel fazer
download desse material.
http://www.oracle.com/technetwork/java/index-135089.html

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

3.2.

Comentrios

uma boa prtica quando estamos programando fazer alguns comentrios em nossas classes para que sejam
melhor entendidas por outros programadores ou at mesmo por ns em uma leitura futura.
No Java h 3 formas de comentrios:
//Comentrio de uma linha
/* Comentrio de vrias linhas
onde descrevemos o que a rotina faz.*/
/** Isso um JavaDoc. Esse um tipo
especial de comentrio que poder ser utilizado na gerao de um
documento. HTML com navegao, ndice de busca e referncias
cruzadas entre as pginas.*/

importante saber que quaisquer comentrios que so criados dentro de mtodos no so includos no
JavaDocs. Outra curiosidade interessante que ao gerar os arquivos compilados do Java, ou seja, os arquivos
.class os comentrios no so adicionados a esses arquivos.

3.3.

Tipos de dados as famosas variveis

Para construir programa precisamos de componentes onde guardemos os dados de entrada. Vamos considerar que
precisamos criar um cadastro de aluno. Precisaremos dos dados como Matrcula, nome, telefone, e-mail, endereo.
Chamamos cada componente que armazenar esses valores de variveis. O nosso programa ter no mnimo 5
variveis para guardar os dados de aluno. Toda varivel tem que ter um nome e um tipo.
Cada varivel tem um tipo especfico. Nome do tipo texto (Maria da Silva, Ana Paula) j Matrcula ser
numrica (22341, 334122) Endereo um tipo texto. Os campos texto so chamados de String e os campos inteiro
chamamos de int.
Basicamente precisamos de 2 tipos no nosso exemplo. Vamos escrever um cdigo para isso.
String nome1 = Maria da Silva;
String nome2 = Ana Paula;
int matricula1 = 2234;
int matricula2 = 334122;
Veja o exemplo de cdigo abaixo:

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides
package br.com.feltex.jse.basico;
public class AloMundo2 {
public static void main(String[] args) {
String nome1 = "Maria da Silva";
String nome2 = "Ana Paula";
int matricula1 = 2234;
int matricula2 = 334122;
System.out.println(nome1);
System.out.println(nome2);
System.out.println(matricula1);
System.out.println(matricula2);
}
}

Alm desses tipos temos outros que chamamos de primitivos. Os tipos de armazenamento mais simples. Existem
8 tipos que podem ser visto no quadro abaixo. Observe que String apesar de ser um tipo muito utilizado no se
enquadra nesta lista. Veja que todos os tipos primitivos iniciam com letra minscula. A palavra String comea
com letra Maiscula. Use essa dica para lembrar quais so os tipos primitivos.

Nome
byte
short
int
long
float
double
boolean
char

www.feltex.com.br

Tipo
Numrico
Numrico
Numrico
Numrico
Decimal
Decimal
Boleano
Caracter

Decimal
NO
NO
NO
NO
SIM
SIM
---

inicial
0
0
0
0
0.0f
0.0
false
/000

Tamanho
8 bits
16 bits
32 bits
64 bits
32 bits
64 bits
16 bits
16 bits

Captulo 3 Convenes e Padres

Euclides
Veja abaixo um programa com declarao de variveis de tipo primitivo:
package br.com.feltex.jse.basico;
public class AloMundo2 {
public static void main(String[] args) {
byte idade = 10;
short sala = 105;
int ano = 2013;
long total = 334532;
char letra = 'A';
boolean diaUtil = true;
float media = 2.3f;
double salario = 22000.52;
String nome = "Maria da Silva";
System.out.println("Alo mundo!");
System.out.println("Idade: " + idade);
System.out.println("Sala: " + sala);
System.out.println("Ano: " + ano);
System.out.println("Total: " + total);
System.out.println("letra: " + letra);
System.out.println("diaUtil: " + diaUtil);
System.out.println("media: " + media);
System.out.println("salario: " + salario);
System.out.println("nome: " + nome);
}
}

Classes Wrapper
Para cada tipo primitivo temos as chamadas classes Wrapper (tipo de referncia). Essas classes possuem mtodos
auxiliam na manipulao dos valores primitivos.

Primitivo
byte
short
Int
Long
float
double
boolean

Wrapper
Byte
Short
Integer
Long
Float
Double
Boolean

As principais funes dessas classes so:

Constantes (MAX_VALUE, MIN_VALUE)

Integer.MAX_VALUE, Integer.MIN_VALUE

valueof (transformam um valor String em no tipo desejado)

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

parse... (valida se um valor pode ser transformado no tipo desejado)

Ex: Integer.valueOf("10")

Ex: Integer.parse("10")

Transformaes Hex X Binrio X Octal

Ex.: System.out.println(Integer.toOctalString(10)); Sada = 12

System.out.println(Integer.toBinaryString(10)); Sada = 1010

Site oficial
Existe um site oficial com todas as convenes oficiais da linguagem Java. Inclusive at possvel fazer
download desse material. http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

Existem palavras reservadas para uso da linguagem Java que no podem ser utilizadas como identificadores dos
nossos programas (variveis, mtodos, classes, pacotes etc).

abstract

continue
default

***

assert
boolean
break
byte
case

do
double
else
****

enum
extends
final
finally

catch
char
class
const
*

No utilizadas

float
**

for
*

goto
if
implements
import
instanceof
int
interface
long
native

includa na verso 1.2

***

new
package

switch
synchronized

private
protected
public
return

this
throw
throws
transient

short
static

try
void
volatile

strictfp
super

**

Includa na verso 1.4

while
****

Includa na verso 5.0

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

3.4.

Operadores

Operadores so elementos da linguagem que executam aes com 2 ou mais operandos e retornam um
resultados. Temos os Operadores:

Matemticos (+, -, *, /, ++, --)

Operador
+
*
/
%
++
-

Descrio
Adiciona um valor a varivel

Exemplo
5 +5

Resultado
10

Adiciona um valor da varivel


Realizar a multiplicao de um valor
Realizar a diviso de um valor
Retorna o resto de uma diviso
Ps incremento/Pr Incremento
Ps Decremento/Pr Decremento

8 -2
2 *2
10 /2
(5 % 2)
X++ ou ++X
X-- ou X--

6
4
5
1
(X +1) ou X
(X -1) ou X

Relacionais (==,<, >, <=, >=, !=, !)


Operador
=
==
>
<
>=
<=
!=

Descrio
Atribuio de um valor
Comparao de valores
Relao de superioridade
Relao de inferioridade
Relao de superioridade ou igualdade
Relao de inferioridade
Relao de diferenas

Exemplo
X=5
5 == 5
6>5
2<5
6 >= 5
10 <= 5
6 != 5

Resultado
5
true
true
true
true
false
true

Descrio
Verifica se um dos operandos verdadeiro
Verifica se TODOS operandos so verdadeiro
Nega o valor da varivel booleana

Exemplo
true || true
true && true
!true

Resultado
true
true
false

Booleanos
Operador
||
&&
!

ou (||): Operador que resulta VERDADEIRO quando um dos seus operandos lgicos for verdadeiro.

e (&&): Operador que resulta VERDADEIRO somente se seus dois operandos lgicos forem verdadeiros.

no (!): Operador unrio de negao.


no VERDADEIRO = FALSO
no FALSO = VERDADEIRO

Tabela verdade

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

3.5.

Controle condicional

Existem momentos nos quais precisamos tomar decises a partir dos dados recebidos e mudar o fluxo normal de
nossa aplicao. Veja a imagem abaixo:

Os losangos representam tomadas de deciso.


Se a lmpada estiver enroscada ento...
Se a lmpada estiver fundida ento...

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides
Veja a o cdigo abaixo:
package br.com.feltex.jse.basico.instrucao;
public class InstrucaoIF {
public static void main(String[] args) {
int x = 10;
int y = 30;
if (x > y) {
System.out.println("Verdadeiro");
} else {
System.out.println("Falso");
}
}
}

Neste programa verificado se a varivel x que tem o valor de 10 unidades maior que o y que tem o valor de
30 unidades.
A sada Falso, pois 10 > 30

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides
Podemos ainda fazer o encadeamento de instrues IF com mais de uma condio.
package br.com.feltex.jse.basico.instrucao;
public class InstrucaoIF2 {
public static void main(String[] args) {
int x = 10;
int y = 30;
if (x > y) {
System.out.println("X maior que Y!");
} else if (x < y) {
System.out.println("X menor que Y!");
} else {
System.out.println("X igual a Y!");
}
}
}

Neste cdigo estamos verificando se X maior, menor ou igual a Y.

3.6.

Laos de repetio

Vamos falar cdigo que criamos para executar algumas instrues de cdigo por vrias vezes.
Existem 3 formas de fazermos isso: for, while e do While.
O for um caso de loop que utilizamos quando sabemos o nmero de iteraes devemos executar em nosso
programa.

package br.com.feltex.jse.basico.instrucao;
public class Loop1 {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println("O valor de i x:" + i);
}
}
}

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides
O comando while realiza uma validao boolean no incio de sua execuo e continuar suas repeties
enquanto a condio for verdadeira. O bloco interno ao while pode nunca ser executado se a condio inicial for
falsa.

package br.com.feltex.jse.basico.instrucao;
public class LoopWhile {
public static void main(String[] args) {
int i = 0;
while (i <= 10) {
System.out.println("Valor de i: " + i);
i++;
}
}
}

Por ltimo falaremos do loop do{ }while() a esse sempre executar as instrues dentro do lao, pelo menos
uma vez, pois a avaliao da condio de repetio s validada no final.

package br.com.feltex.jse.basico.instrucao;
public class LoopDoWhile {
public static void main(String[] args) {
int i = 0;
do {
System.out.println("Valor de i: " + i);
i++;
} while (i <= 10);
}
}

As instrues de Loop possuem 2 comando que nos auxiliam a mudar o fluxo natural do cdigo. So elas
continue e break.
O break realiza uma interrupo do lao e faz passa a ao para a primeira linha de cdigo fora do loop. Veja o
exemplo abaixo:

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

package br.com.feltex.jse.basico.instrucao;
public class LoopWhileBreak {
public static void main(String[] args) {
System.out.println("Inicio");
int i = 0;
while (i <= 5) {
System.out.println("Valor de i: " + i);
i++;
if (i == 3){
break;
}
System.out.print(" depois do break!!");
}
System.out.println("Fim");
}
}

Quando a varivel tiver o valor de 5 ser executado o comando break que far a quebra do lao de repetio e
prxima execuo ser a linha 15.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

Para saber mais...

Existe uma forma de fazer o for incrementar por um valor diferente de 1


Veja o exemplo a baixo e Observe que a varivel i receber a adio de 2 a cada iterao.

package br.com.feltex.jse.basico.loop;
public class LoopForStep {
public static void main(String[] args) {
for (int i = 0; i <= 20; i += 2) {
System.out.println("Valor i: " + i);
}
}
}

O comando continue faz com que a execuo volte para o incio do loop sem executar as linhas logo abaixo
dele.
package br.com.feltex.jse.basico.instrucao;
public class LoopWhileContinue {
public static void main(String[] args) {
System.out.println("Inicio");
int i = 0;
while (i <= 5) {
System.out.println("Valor de i: " + i);
i++;
if (i == 3){
continue;
}
System.out.print(" depois continue!!");
}
System.out.println("Fim");
}
}

3.7.

Exerccios resolvidos

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides
Exerccios
Escreva programas para:
1. Imprimir na console 10 vezes a palavra Java. No se esquea de pular linha em cada comando.
2. Exiba a estao do ano quando informado o nmero do ms.
3. Exiba se um nmero par ou mpar.
4. Exiba um nmero primo ou no.
5. Pare um loop quando o nmero da iterao for a metade do total do loop a

3.8.

Exerccios propostos
Desafio

1. Crie um programa que desenhe na console3 um retngulo com a letra A.


AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
A
A
A
A
A
A
A
A
A
A
A
A
A
A
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
2. Crie um programa que desenhe na console um novo retngulo com a primeira e ltima letra do seu nome.
Sendo que as bases (linhas superior e inferior) use a primeira letra. Para as laterais use a ltima letra. Se as
letras forem iguais mude uma delas a seu critrio!

O que vimos...

Neste ponto j devemos saber o que um if e quando utilizamos um else.


Uma alternativa simples ao if o switch
Sabemos que existem vrios tipos de loop: While, for, do While
Existe comando que alteram o fluxo do loop break e continue

Tela de exibio de dados textuais do eclipse.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

4. Estrutura de Dados e Colees


Metas do captulo

Conhecer as estruturas de colees de dados em Java.


Como o Java trabalha com Vetores (Arrays).
Conjuntos, listas, filas e mapas.
Aprenderemos a ler e exibir dados de um arquivo em um programa Simples.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

Neste captulo vamos trabalhar com as estruturas que armazenam vrios dados em um mesmo objeto. o que
podemos chamar de coleo.

4.1.

Arrays

Comearemos com um array.


Desde o nosso primeiro programa fizemos uso de Array, mas no fomos oficialmente apresentados. Ento agora
faremos as honras.
1. package br.com.feltex.jse.basico;
2. public class AloMundo {
3.
4.
5.
6.

public static void main(String[] args) {


System.out.println("Alo mundo!");
}
}

Observe que na linha 3, temos a declarao String[] args. O tipo definido String e observe que temos um par
de colchetes. Isso define que teremos um array de String.
Podemos ento
String[] arrayString = new String[5]; // Estamos criando um array de String com 5 posies
arrayString[0] = Felix;
arrayString[1] = Maria;
arrayString[2] = Joana;
arrayString[3] = Marta;
arrayString[4] = Flavia;
Nosso array fica preenchido assim:
Felix
0

Maria
1

Joana
2

Marta
3

Flavia
4

Atribuimos valores para todas as posies. Observe que comeamos o ndice do valor 0 (zero). Logo a
ltima posio vai ser 4 (quatro).

Vamos agora declarar um array de inteiros e um de double:


int[] arrayInteito = new int[3]; // Criao do array de inteiros
arrayInteito[0] = 10;
arrayInteito[1] = 27;
arrayInteito[2] = 4;
10
0

27

4
1

double[] arrayDouble = new double[3]; // Criao do array de double


arrayDouble [0] = 2.9;
arrayDouble [1] = 4.1;
arrayDouble [2] = 2.3;
2.9
www.feltex.com.br

4.1

2.3
Captulo 3 Convenes e Padres

Euclides
0

Existem ainda outras formas de declararmos um array. Veja a seguir:


int[] arrayNumero = {5, 7, 90, 334}; // Criao do array com 4 posies.
int arrayNumero [] = {5, 7, 90, 334}; //Observe que mudamos a posio do par de colchetes
Isso possvel porque o Java nos permite criar muitas variveis em uma mesma linha. Vejamos isso:

int arrayNumero[], x ; // Desta forma estamos declarando que arrayNumero um array de inteiros e que x um
nmero inteiro.
Int[] arrayNumero, x ; // Desta forma estamos declarando que tanto arrayNumero quanto x so arrays de
inteiro.

Viu como fcil trabalhar com arrays? Vamos fazer um exemplo.

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

package br.com.feltex.jse.basico.array;
public class Array01 {
public static void main(String[] args) {
String[] arrayString = new String[5]; // Estamos criando um array de String com 5 posies
arrayString[0] = "Felix";
arrayString[1] = "Maria";
arrayString[2] = "Joana";
arrayString[3] = "Marta";
arrayString[4] = "Flavia";
for (int i = 0; i < arrayString.length; i++) {
System.out.println(arrayString[i]);
}
}
}

Pare e revise
Seu cdigo no funcionou? Veja o que pode ter ocorrido.
Mensagem
Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: 0
at
br.com.feltex.jse.basico.array.Array01.main(Array01.java:14)

Soluo
Verifique se voc declarou o array certo dentro do
for
No pode ser este args[i] tem que ser

arrayString[i]
Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: 5
at
br.com.feltex.jse.basico.array.Array01.main(Array01.java:14)

Isto significa que est sendo procurada a posio


5 do Array. No existe a posio 5. Ele vai de
0...4. Verifique se seu for est assim:
for (int i = 0; i < arrayString.length; i++) {

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

4.2.

Maps

Agora vamos ao uso dos maps. Map uma estrutura no Java responsvel por guardar pares de chave e
valor. Ele tem uma estrutura parecida com a imagem abaixo:
21
11
83
31

Rio de
Janeiro
So Paulo
Joo Pessoa
Belo
Horizonte

Na tabela acima temos as chaves os DDDs e no valor correspondente o nome da cidade. Isso tambm poderia
ser utilizado para definir os meses do ano:
1
2
3
4

Janeiro
Fevereiro
Maro
Abril

No java declaramos os mas da seguinte forma4:

Map<tipoDaChave, tipoValor> meuMapa = new HashMap< >();


Map< Integer, String> meuMapa = new HashMap< >();
Map<String, String> meuMapa2 = new HashMap< >();
Map< Integer, Integer> meuMapa3 = new HashMap< >();
Das formas apresentadas. Segue um exemplo de como utilizar os mapas.
package br.com.feltex.jse.colecao;

import java.util.HashMap;
import java.util.Map;
public class MeuMapa {
public static void main(String[] args) {
Map<Integer, String> meuMapa = new HashMap<>();
meuMapa.put(21, "Rio de Janeiro");
meuMapa.put(11, "So Paulo");
meuMapa.put(83, "Joo Pessoa");
meuMapa.put(31, "Belo Horizonte");
// Nao existe nenhum registro com a chave 45
System.out.println(meuMapa.get(21));
System.out.println(meuMapa.get(45));
System.out.println(meuMapa.get(31));
}
}

Apenas a partir da verso do Java 7 possvel usar a sintaxe Map< Integer, String> meuMapa = new HashMap< >(); Antes era necessrio
informar o tipo de dados do lado direito do = Map<Integer, String> meuMapa = new HashMap<Integer, String >();

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

4.3.

Colees

Essas classes so diferentes dos Arrays por serem dinmicas, ou seja, podemos adicionar e remover itens
durante a execuo do nosso programa.
Na declarao de uma coleo no precisamos informar qual o tamanho da coleo. Vamos falar de uma
interface muito utilizada que a List.
Nela temos a definio dos mtodos mais importantes que precisamos: add e remove, que so responsveis pela
incluso e remoo de atributos respectivamente.
Veja um exemplo prtico:

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides
package br.com.feltex.jse.colecao;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MinhaListaArrayList {
public static void main(String[] args) {
List<String> lista = new ArrayList<>();
lista.add("Maria");
lista.add("Ana");
lista.add("Tatiana");
lista.add("Fernanda");
lista.add("Tatiana");
System.out.println(lista);
// Realiza a ordenao dos itens
Collections.sort(lista);
System.out.println(lista);
Collections.reverse(lista);
System.out.println(lista);
System.out.println(lista.get(1));
for (String item : lista) {
System.out.println(item);
}
for (int i = 0; i < lista.size(); i++) {
System.out.println(lista.get(i));
}
}
}

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

4.4.

Set

O set um tipo de coleo onde no h valores repetidos.


Veja o Exemplo abaixo onde adicionaremos nomes repetidos e o conjunto aceitar apenas uma entrada para os
valores em duplicidade.
package br.com.feltex.jse.colecao;
import java.util.HashSet;
import java.util.Set;
public class MeuSet {
public static void main(String[] args) {
Set<String> meuConjunto = new HashSet<>();
meuConjunto.add("Ana");
meuConjunto.add("Ana");
meuConjunto.add("Ana");
meuConjunto.add("Ana");
meuConjunto.add("Maria");
meuConjunto.add("Valeria");
meuConjunto.add("Fernanda");
System.out.println("Total de itens: " + meuConjunto.size());
for (String item : meuConjunto) {
System.out.println(item);
}
}
}

A sada ser assim:


Total de itens: 4
Fernanda
Maria
Valeria
Ana

Agora utilizaremos uma variao do Set que alm de no aceitar itens repetidos cria uma ordem natural para os
itens includos. Veja como funciona a classe SortedSet:

www.feltex.com.br

Captulo 3 Convenes e Padres

Euclides

package br.com.feltex.jse.colecao;
import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;
public class MinhaListaSortedSet {
public static void main(String[] args) {
// Set<String> meuConjunto = new HashSet<>();
SortedSet<String> meuConjunto = new TreeSet<>();
meuConjunto.add("Ana");
meuConjunto.add("Ana");
meuConjunto.add("Ana");
meuConjunto.add("Ana");
meuConjunto.add("Maria");
meuConjunto.add("Valeria");
meuConjunto.add("Fernanda");
//Iterator: Objeto especial que s navega para frente;
Iterator<String> i = meuConjunto.iterator();
while (i.hasNext()) {
String texto = i.next(); // leitura do texto
System.out.println(texto);
}
}
}

Observe que desta vez no utilizamos o foreach para navegar entre os itens da nossa coleo. Fizemos uso do
iterator.

O que vimos...

Quais o tipos de colees existentes no Java.


Qual a diferena entre um List e um Set.
A utilizao prtica de um MAP

www.feltex.com.br

Captulo 3 Convenes e Padres

Gottfried Leibniz

www.feltex.com.br

Captulo 4 Estrutura de Dados e Colees

Carl Gauss

5. Orientao a Objeto

Metas do captulo

Como trabalhar com objetos.


Conceitos de Classe, Interfaces, atributos.
Mtodos construtores.

www.feltex.com.br

Captulo 5 Orientao a Objeto

Carl Gauss

5.1.

O que so objetos?

uma de forma de criao de Sistemas pensando como a interao entre objetos no mundo real. Imagina a
situao de pagar uma conta. Existem vrios objetos envolvidos nesta situao: conta, pagador, recebedor, banco,
beneficirio. Alm disso temos tambm as aes (pagar, registrar, emitir comprovante,) e propriedades (data
vencimento, valor, juros). Isso tudo claro para o nosso dia-a-dia, mas para a programao uma das formas
diferente de abordar um problema.
Vamos dividir assim:
substantivos objetos
verbos mtodos
atributos estados
Tudo o que fazemos est relacionado aos objetos. Toda ao e todos os atributos esto ligados de uma
forma inseparvel. Os objetos tm estado.
Uma televiso, por exemplo, um objeto. Ela ter mtodos (aes) e estado (atributos). Pensando nas aes
da minha televiso: ligar, deligar, mudar canal, mudar volume, alterar contraste e muitos outros que podemos
lembrar. Mais ainda, o que definiria o estado dela aps cada ao? Seriam os estados (ligada ou desligada, canal
atual, volume atual)

Isso nos permite criar nossas aplicaes sempre com o foco na construo dos objetos.

www.feltex.com.br

Captulo 5 Orientao a Objeto

Carl Gauss

5.2.

Instncias da Classe

Vamos falar agora do conceito de classe. Elas so as definies bsicas para construo dos nossos objetos. As
classes so as definies de um objeto. Quando falamos que temos um carro. Sabemos exatamente o que um
carro, no precisamos necessariamente saber qual a marca e o modelo. Carros tm caractersticas especficas de
carro. Seriam elas: motor, volante, porta, rodas, assentos.

Ento classe apenas uma definio daquilo que pode ser um objeto. O objeto uma realizao da classe.

Planta baixa (Classe) Casa (Objeto)


Projeto Veculo (Classe) Carro (Objeto)

A cada arquivo que geramos de cdigo damos o nome de classe. A classe: Carro, Aluno, Professor, Conta. As
definies de cdigo so criadas nesses arquivos. Para usarmos essas classes em nossos sistemas criamos os
objetos. Em um sistema acadmico, por exemplo, temo apenas uma classe Aluno, mas teremos vrias instncias
(objetos) dessa classe.

www.feltex.com.br

Captulo 5 Orientao a Objeto

Carl Gauss

5.3.

Atributos da Classe

So os estados que as classes podem possuir. Em uma classe Aluno teremos vrios atributos (matrcula,
nome, data nascimento, e-mail e telefone). Essas caractersticas so os atributos.

5.4.

Diagrama de Classes
Na UML dizemos que so representaes grficas das relaes entre as classes.

5.5.

Atributos Estticos

So os atributos que no esto associados aos objetos e sim classe. Podemos tem vrias instncias
(objetos) de uma classe, mas os atributos estticos tero apenas um. No necessrio criar uma instncia de
uma classe de para utilizar um atributo esttico. Ele j estar disponvel assim que o seu programa for carregado
na memria.

Forma de declarao:
public static String nome;
www.feltex.com.br

Captulo 5 Orientao a Objeto

Carl Gauss
Alm de atributos tambm podemos ter mtodos estticos. Outros exemplos que j utilizamos so os

mtodos da classe JOptionPanel.


Mtodos que podem ser utilizados em criar instncia das classes. Vamos a um exemplo prtico:
Math.max(10,20);

No precisamos instanciar um objeto da classe Math para usar seus mtodos. Todos eles so estticos. Isso
tambm ocorre para o nossa classe JOptionPanel.

5.6.

showConfirmDialog Exibe uma janela com um pergunta e 3 botoes "yes/no/cancel"

showInputDialog

showMessageDialog Exibe uma mensagem de aviso.

Solicita um valor de entrada, sempre ser retornado como String.

Construtores da Classe

Construtores so mtodos utilizados para construir e ao mesmo tempo inicializar os atributos das classes.
Os construtores mais comuns que utilizamos so os construtores padres. H algumas regras para um mtodo ser
um construtor:

No podem ter retorno, nem mesmo a palavra void

Tem que ter o mesmo nome da classe

Se no for criado nenhum construtor o Java disponibiliza o construtor padro.


o

Se pelo menos um construtor for criado o Java no executar mais essa etapa.

Aluno aluno = new Aluno(); // Usando o construtor Padro


Aluno aluno = new Aluno(Maria da Silva); // Construtor com nome
Aluno aluno = new Aluno(1232); // Construtor com matrcula

www.feltex.com.br

Captulo 5 Orientao a Objeto

Leonhard Euler

6. Tratamento de exceo

Metas do captulo

Tratar erros na aplicao;


Diferencias erros negcio de erros de ambiente;
Tipos de exceo (obrigatrios e opcionais);
Validar entrada de dados

6.1.

O que uma exceo

Em nossos sistemas podemos ter ocorrncias fora do domnio desejado. Imagina para o nosso sistema
acadmico, imagine que solicitamos a matrcula que numrica e o usurio digita um valor textual. O que
aconteceria com o nosso sistema?

package br.com.feltex.jse.excecao;
import javax.swing.JOptionPane;
public class MinhaExceao01 {
public static void main(String[] args) {
Integer matricula = Integer.parseInt(JOptionPane
.showInputDialog("Digite sua matrcula"));
System.out.println("Matrcula digitada: " + matricula);
}
}

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler

7. Mais um pouco de Orientao a Objetos

Metas do captulo

O que herana?
Como fazer sobrecarga
Sobre escrita e suas vantagens
Polimorfismo

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler

7.1.

Herana

Existem muito objetos que compartilham caractersticas entre sim. Se pensarmos no reino animal podemos
verificar que os gatos tm semelhanas com os lees e que o cachorros tm comportamento e estados dos lobos. A
isso chamamos de herana. Onde um objeto recebe atributos que podemos classific-los.

Animal

Mamfero

Felino

Gato

Canino

Leo

Cachorro

Lobo

O gato um mamfero assim como o leo. Os 2 tambm so categorizados como felinos. Eles tem 4 patas, rabo
e garras. Essas so algumas semelhanas.
Alm disso, temos o que chamamos de especializao. O Leo tem um grande porte, possui muita fora e
selvagem. Os gatos so de menor porte, tem garras pequenas e so domesticados.
Em nosso sistema podemos fazer cadastros de tipo de pessoa. Uma pessoa sempre possui: nome, telefone,
endereo, e-mail. Vamos especializar e mostrar as diferenas: Pessoa Fsica (CPF, Sexo, RG, Estado Civil) Pessoa
Jurdica (CNPJ, Inscrio estadual, Inscrio Municipal). Veja a imagem abaixo:

Pessoa

Pessoa Fisica

Pessoa Juridica

Classe Pessoa

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler

package br.com.feltex.jse.oo.heranca;
import java.util.Date;
public class Pessoa {
private String nome;
private Date dataCadastro;
private int codigo;
public int getCodigo() {
return codigo;
}
public Date getDataCadastro() {
return dataCadastro;
}
public String getNome() {
return nome;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public void setDataCadastro(Date dataCadastro) {
this.dataCadastro = dataCadastro;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public String toString() {
return "Pessoa [nome=" + nome + ", dataCadastro=" + dataCadastro
+ ", codigo=" + codigo + "]";
}
}

As classes PessoaFisica e PessoaJurdica possuem todas as caractersticas de pessoa. Elas tambm trazem as
especializaes que no so atributos particulares. Analise as classes abaixo:

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler

Classe Pessoa Fsica


package br.com.feltex.jse.oo.heranca;
public class PessoaFisica extends Pessoa {
private String cpf;
private String sexo;
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getSexo() {
return sexo;
}
public void setSexo(String sexo) {
this.sexo = sexo;
}
}

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler

Classe PessoaJuridica
package br.com.feltex.jse.oo.heranca;
public class PessoaJuridica extends Pessoa {
private String cnpj;
private String nomeFantasia;
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
public String getNomeFantasia() {
return nomeFantasia;
}
public void setNomeFantasia(String nomeFantasia) {
this.nomeFantasia = nomeFantasia;
}
}

Preste ateno que as classes filhas de pessoa possuem a palavra extends na declarao da classe. Isso define que
a existe uma ligao de herana entre essas 2 classes.

Herana
Mltipla
Em algumas linguagens como C++ ou Python permitem que uma classe herde caractersticas de 2 os mais classes
ao mesmo tempo. Em Java isso no permitido! Existe apenas uma classe a qual podemos estender as
funcionalidades por vez!
Classe pai
importante saber que toda classe filha da classe padro Objetct.

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler

Outra situao de herana a relao entre Av, Pai e filho.

Av
Pai
Filho
O filho herdou as caractersticas do pai que herdou as caractersticas do av. Criamos um cdigo de exemplo
para deixar claro como isso funciona.
Av
package br.com.feltex.jse.oo.hierarquia;
public class Avo {
public Avo(){
System.out.println("Criando o AVO");
}
public String toString() {
return "Avo []";
}
}

Pai
package br.com.feltex.jse.oo.hierarquia;
public class Pai extends Avo{
public Pai(){
System.out.println("Criando o PAI");
}
@Override
public String toString() {
return "Pai []";
}
}

Filho
package br.com.feltex.jse.oo.hierarquia;
public class Filho extends Pai {
public Filho() {
System.out.println("Criando o FILHO");
}
public String toString() {
return "Filho []";

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler
}
}

Agora vamos instanciar a Classe filho para vermos como ser o comportamento do Java nessa situao.
package br.com.feltex.jse.oo.hierarquia;
public class ConstrucaoObjetos {
public static void main(String[] args) {
Filho meuFilho = new Filho();
System.out.println(meuFilho.toString());
}
}

A sada ser a seguinte:


Criando o AVO
Criando o PAI
Criando o FILHO
Filho []

Voc consegue entender por que isso acontece? Vamos l, pense no mundo real... 1, 2, 3 e EUREKA!

possvel um filho existir ser o pai ter nascido? A resposta : no! E da mesma forma necessrio o av ter
nascido para o par nascer! Ento, seguindo esse raciocnio lgico temos que sempre que criamos um objeto do
tipo filho teremos a criao de av e depois pai para somente em seguida ser criado o filho.

Tudo como funciona no mundo real!

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler

7.2.

Mais um pouco de Orientao a Objetos Overriding (sobrescrita)


Esse o caso de escrevermos o mtodo na classe filha para ter um comportamento diferente do
original. Imagine a classe animal. Todo animal emite um som. Ento teramos na classe animal o mtodo:
emitirSom(). Considerando que todo animal tem que ter um mtodo assim devemos
sobrescrever/reescrever esse mtodo para gato, leo, cachorro e lobo que so classe que herdam de
animal.

Felino
Gato

Leo

package br.com.feltex.jse.oo.hierarquia3;
public class Felino {
public void emitirSom() {
System.out.println("Felino ....");
}
}
package br.com.feltex.jse.oo.hierarquia3;
public class Gato extends Felino {
public void emitirSom() {
System.out.println("Miado!");
}
}
package br.com.feltex.jse.oo.hierarquia3;
public class Leao extends Felino {
public void emitirSom() {
System.out.println("Rugido!");
}
}

package br.com.feltex.jse.oo.hierarquia3;
public class MeuAnimal {
public static void main(String[] args) {
Felino felino1 = new Gato();
Felino felino2 = new Leao();
felino1.emitirSom();
felino2.emitirSom();
}
}

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler

O cdigo mostrado acima um exemplo de como o mtodo com a mesma assinatura emitirSom pode ter
funcionamento diferente a partir da implementao de cada classe. Isso a sobrescrita.

7.3.

Overloading (Sobrecarga)
A sobrecarga sempre foi um assunto que assusta muitos programadores que utilizam orientao a
objetos. Vamos pensar no nosso dia-a-dia. Quando ocorrem as seguintes situaes: houve uma sobre
carga eltrica na padaria da esquina ou aquele caminho est com sobrecarregado. O que entendemos
de sobrecarga nesses momentos? que foram passados mais carga aos objetos (mais carga eltrica
para a padaria e mais carga para o caminho). Se os 2 estiverem devidamente preparados eles
conseguiro trabalhar com as cargas normais e suportar as cargas extras.
Nos mtodos temos os mtodos que recebem 1 parmetro, recebem 2 parmetros, 3 ou mais
parmetros.

calcularSoma(10,4);
calcularSoma(3,3, 6);
calcularSoma(10,4, 6,2);

So mtodos que possuem o mesmo nome e mesmo tipo de retorno s que com numero e tipos de
parmetros diferentes.

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler
package br.com.feltex.jse.overloading;
public class SomaNumeros {
public static void main(String[] args) {
calcularSoma(10, 4);
calcularSoma(3, 3, 6);
calcularSoma(10, 4, 6, 2);
}
public static void calcularSoma(int a, int b) {
System.out.println(a + b);
}
public static void calcularSoma(int a, int b, int c) {
System.out.println(a + b + c);
}
public static void calcularSoma(int a, int b, int c, int d) {
System.out.println(a + b + c + d);
}
}

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler

7.4.

Referenciando atributos da classe atual

Palavra reservada this faz referncia a sua prpria instncia. Isso permite passar parmetros com todos os
seus valores a um mtodo. Ela muito utilizada nos construtores para inicializar as variveis de instncia.
package br.com.feltex.jdbc;
import java.io.Serializable;
public class Aluno implements Serializable {
private static final long serialVersionUID = -309513637403441918L;
private Long matricula;
private String nome;
private String telefone;
public Aluno() {
}
public Aluno(Long matricula) {
super();
this.matricula = matricula;
}
public Aluno(Long matricula, String nome) {
super();
this.matricula = matricula;
this.nome = nome;
}
public Long getMatricula() {
return matricula;
}
public String getNome() {
return nome;
}
public String getTelefone() {
return telefone;
}
public void setMatricula(Long matricula) {
this.matricula = matricula;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}

Observe a ocorrncia nos mtodos Set... e nos construtores. Nesses casos temos variveis com o mesmo
nome. Veja o exemplo de setMatricula(Long matricula) quando estamos dentro do mtodo a qual matrcula
estamos nos referindo (parmetro ou atributo de classe?). Quando utilizamos o nome simples ao parmetro
quando utilizamos a palavras this referncia ao atributo de classe

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler

7.5.

Referenciando atributos da classe superior


Palavra reservada super. Ela serve para fazer referncia ao objeto pai. Ela muito utilizada nos

construtores para chamar outros construtores da classe pai. Nas chamadas de construtores o super() deve
ser a primeira instruo de um mtodo construtor, caso contrrio teremos um erro de compilao.

public Aluno(Long matricula) {


super();
this.matricula = matricula;
}

7.6.

Polimorfismo

a caracterstica de um objeto poder ser transformado em outro. Existe uma velha histria do calar o sapato.
Uma criana consegue calar o sapato do pai, contudo o inverso no acontece. Isso bem claro, pois o spado de
um adulto maior que o de uma criana.

7.7.

Classes Abstratas
So classes que possuem alguns mtodos concretos como de qualquer outra classe e que tambm
possuem mtodos abstratos. Esses mtodos no possuem cdigo. Eles existe apenas para obrigar as
classes filhas, que so concretas, a implementar tais mtodos.
Uma classe abstrata no pode ser instanciada.

7.8.

Mtodos Abstratos

um tipo de mtodo que no tem corpo, apenas uma assinatura; Ok, tudo muito legal, tudo muito bom, mas
para que mesmo serve isso a?
public void emitirSom();
public void saltar();

O nosso exemplo da classe Felino, no precisaramos de implementao para o mtodo emitirSom(). Isso
deveria ficar a cargo das classes Gato e Leo. nesse caso que entram os mtodos abstratos:
A classe ficaria assim
package br.com.feltex.jse.oo.hierarquia3;
public abstract class Felino {
public abstract void emitirSom();
}

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler

Onde o mtodos emitirSom() tem apenas uma assinatura. Veja tambm que a classe passou a ser abstrata.
Quando h pelo menos um mtodo abstrato necessariamente a classe tem que ser abstrata! A saber: uma classe
abstrata tambm pode ter mtodos dinmicos. E uma classe abstrata no pode ser instanciada.

7.9.

Interfaces
No mundo real quando pensamos em interface nos remetemos automaticamente naquilo que visual:

as interfaces grficas. Tudo que est visvel e disponvel para ns. O que pensamos quando lemos a palavra
veculo? Seriam objetos que podemos utilizar para dirigir, buzinar, acender faris!

As interfaces so arquivos Java que criam conceitos de alto nvel. Elas definem as caractersticas e
aes que devem existir em uma classe, mas no detalham como devem ser implementadas.

Veculo

Carro

nibus

Caminhonete

package br.com.feltex.jse.oo.minhainterface;
public interface Veiculo {
public void dirigir();
public void buzinar();
public void passarMarcha();
}

Todos esses mtodos so comuns para as classes que implementam a interface veculo. Na prtica a interface
uma classe que possui apenas mtodos abstract. No possvel instanciar uma Interface.

package br.com.feltex.jse.oo.minhainterface;
public class MeuCarro implements Veiculo {
@Override
public void dirigir() {
System.out.println("Dirigir....");
}

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Leonhard Euler
@Override
public void buzinar() {
System.out.println("buzinar....");
}
@Override
public void passarMarcha() {
System.out.println("passarMarcha....");
}
}

www.feltex.com.br

Captulo 6 Mais um pouco de Orientao a Objetos

Louis leithold

8. Classes Utilitrias

Metas do captulo

Classe para manipulao de texto.


Mtodos especiais para operaes matemticas.
Internacionalizao.
Formatao de Datas e valores monettios.

www.feltex.com.br

Captulo 7 Classes Utilitrias

Louis leithold

8.1.

Pacote java.lang

O java.lang o pacote essencial do Java. No necessrio realizar a importao das classes nele contidas.
Classes como String, Integer, Double, Float, Boolean entre outras que esto disponveis nesse pacote.
Vamos dar destaque neste captulo para a classe String. Ela a grande estrela da manipulao de texto no Java. A
esta altura da apostila todos j sabem instanciar uma String.
Se no souber releia o captulo de Introduo ao Java para ter um melhor aproveitamento do material. Ento
conhea alguns mtodos:

8.2.

Classe String
package br.com.feltex.utilitarias;
public class MinhaString {
public static void main(String[] args) {
String meuTexto = "Batatinha quando nasce espalha a rama pelo chao!";
System.out.println(meuTexto.toUpperCase());
//BATATINHA QUANDO NASCE ESPALHA A RAMA PELO CHAO!
System.out.println(meuTexto.toLowerCase());
//batatinha quando nasce espalha a rama pelo chao!

System.out.println(meuTexto.substring(2));
//tatinha quando nasce espalha a rama pelo chao!
System.out.println(meuTexto.substring(2,10));
//tatinha
// Retorna verdadeiro se o texto terminar com a string informada
System.out.println(meuTexto.endsWith("chao!"));
// Retorna verdadeiro se o texto comear com a string informada
System.out.println(meuTexto.startsWith("Bata"));
}
}

Procure fazer uso apenas de Letras e nmeros para nomear uma varavel.

Operaes
Em java quando estamos fazendo uma operao (soma, subrao, diviso e um dos elementos for String o
resultado ser do tipo em String).

www.feltex.com.br

Captulo 7 Classes Utilitrias

Louis leithold

8.3.

Classe Math

Classe Math possui mtodos para realizarmos vrias operaes matemticas. Podemos destacar gerao de
nmeros raiz quadrada, maior e menor nmero, logaritmos, aleatrios, seno, cosseno, tangente, transformaes
de graus em radianos e o inverso.

package br.com.feltex.jse.util;
public class MeuMath {
public static void main(String[] args) {
double x = 9;
double y = 5;
System.out.println("Maior nmero: " + Math.max(x, y));
System.out.println("Menor nmero: " + Math.min(x, y));
System.out.println("Raiz quadrada: " + Math.sqrt(x));
System.out.println("Nmero Aleatrio: " + Math.random() * 100 );
System.out.println("Valor Absoluto: " + Math.abs(-222) );
System.out.println("Raz cbica: " + Math.cbrt(27) );
System.out.println("Eleva um nmero a potncia desejada: " + Math.pow(x,y) );
System.out.println("Log na base 2: " + Math.log(32) );
System.out.println("Log na base 10: " + Math.log10(1000) );
}
}

www.feltex.com.br

Captulo 7 Classes Utilitrias

Louis leithold

8.4.

Locale

Classe Locale nos ajuda a configurar informao como Idioma, configurao de moeda, data, hora, padro de
separadores de nmero (decimal e milhar). So muito utilizadas na formao de datas.
Essas classes so utilizadas em conjunto com as classes de manipulao de datas.

www.feltex.com.br

Captulo 7 Classes Utilitrias

Louis leithold

8.5.

DateFormat

DateFormat uma classe que auxilia na formatao de datas. Podemos fazer a conversar de padres como o
padro Brasileiro de Dada 20/05/2014 (DD/MM/YYYY) para o padro dos Estados Unidos da Amrica
05/20/2014 (MM/DD/YYYY). Veja os exemplos abaixo:
package br.com.feltex.jse.text;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MeuSimpleDateFormate {
public static void main(String[] args) {
Date minhaData = new Date();
DateFormat formatador = new SimpleDateFormat("dd/MM/yyyy EEEE");
System.out.println(formatador.format(minhaData));
formatador = DateFormat.getDateInstance(DateFormat.FULL);
System.out.println(formatador.format(minhaData));
formatador = DateFormat.getDateInstance(DateFormat.LONG);
System.out.println(formatador.format(minhaData));
formatador = DateFormat.getDateInstance(DateFormat.MEDIUM);
System.out.println(formatador.format(minhaData));
formatador = DateFormat.getDateInstance(DateFormat.SHORT);
System.out.println(formatador.format(minhaData));
}
}

package br.com.feltex.jse.text;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class MeuSimpleDateFormate2 {
public static void main(String[] args) {
Date minhaData = new Date();
Locale brasileiro = new Locale("PT", "br");
DateFormat formatador = new SimpleDateFormat("dd/MM/yyyy EEEE",
brasileiro);
System.out.println(formatador.format(minhaData));
Locale americano = new Locale("US", "en");
formatador = new SimpleDateFormat("MM//dd/yyyy EEEE", americano);
System.out.println(formatador.format(minhaData));
}
}

www.feltex.com.br

Captulo 7 Classes Utilitrias

Louis leithold

www.feltex.com.br

Captulo 7 Classes Utilitrias

Louis leithold

8.6.

Formatao de Nmero

www.feltex.com.br

Captulo 7 Classes Utilitrias

Robert Hooke

9. Manipulao de Arquivos
9.1.
Classe File
uma das classes mais bsicas para manipulao de arquivos. Temos nela os mtodos e propriedades que
nos auxiliam na manipulao de arquivos. Mtodos como o exists nos informam a existem ou no do arquivos.
Um fato importante a destacar que a classe fila no faz distino entre arquivos e diretrio, todos so File.
Para isso existe um mtodo chamado isDirectory que retorna true se o apontamento um diretrio e false no
caso contrrio.
package br.com.feltex.jse.io;
import java.io.File;
public class LeituraPropriedadesArquivo {
public static void main(String[] args) {
try {
// Este Path est definido para funcionar no Windows
File arquivo = new File("C:/relatorio.txt");
// Para uso no linux apenas descomente a linha abaixo.
// arquivo = new File("\\relatorio.txt");
System.out.println("Permite leitura: " + arquivo.canRead());
System.out.println("Permite escrita: " + arquivo.canWrite());
System.out.println("Permite Execuo: " + arquivo.canExecute());
System.out.println("Est oculto: " + arquivo.isHidden());
System.out.println(" um diretrio: " + arquivo.isDirectory());
System.out.println(" um arquivo: " + arquivo.isFile());
System.out
.println("Caminho Absoluto: " + arquivo.getAbsolutePath());
System.out.println("Diretrio pai: " + arquivo.getParent());
System.out.println("Tamanho em bytes: " + arquivo.length());
System.out.println("Cria um diretrio: " + arquivo.mkdir());
System.out.println("Cria um caminho de diretrios: "
+ arquivo.mkdirs());
} catch (Exception e) {
e.printStackTrace();
}
}
}

www.feltex.com.br

Captulo 8 Manipulao de Arquivos

Robert Hooke

9.2.

Lendo e Gravando Dados em Arquivos

Uma tarefa muito comum em programao quando precisamos realizar a leitura ou gravao de dados em um
arquivo texto.

package br.com.feltex.jse.io;
import java.io.BufferedReader;
public class AcessoArquivoTexto {
public static void main(String[] args) {
System.out.println("Inicio AcessoArquivoTexto");
// Escreve o contedo no arquivo Texto
escreverArquivo("Meu texto\n");
// Realiza a leitura do contedo do arquivo texto
lerArquivo();
System.out.println("Fim AcessoArquivoTexto");
}
public static void lerArquivo() {
try {
FileReader reader = new FileReader("C:/temp/meuArquivo.txt");
BufferedReader br = new BufferedReader(reader);
String linha = "";
while ((linha = br.readLine()) != null) {
System.out.println(linha);
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void escreverArquivo(String texto) {
try {
FileWriter writer = new FileWriter("C:/temp/meuArquivo.txt", true);
BufferedWriter bw = new BufferedWriter(writer);
bw.append(texto);
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

www.feltex.com.br

Captulo 8 Manipulao de Arquivos

Robert Hooke

9.3.

Classes Scanner e PrintWriter

Essas classes facilitam a leitura e escrita de arquivos com contedo textuais.

A classe Scanner pode ser utilizada para fazer iteraes por linhas considerando um delimitador. uma
classe muito aplicada para fazer a leitura linha a linha de um arquivo. Usamos tambm para ler a cada
delimitador como em arquivos csv que utilizam o ; como delimitar de cada campo.

package br.com.feltex.jse.io;
import java.io.File;
public class MeuScanner {
public static void main(String[] args) {
System.out.println("Inicio MeuScanner");
try {
File arquivo = new File( "C:/temp/meuArquivo.txt");
Scanner scanner = new Scanner(arquivo);
scanner.useDelimiter("\n");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Fim MeuScanner");
}
}

www.feltex.com.br

Captulo 8 Manipulao de Arquivos

Robert Hooke

9.4.

Escrita de Dados na Sada Padro


package br.com.feltex.jse.io;
import java.io.File;
public class MeuPrintWriter {
public static void main(String[] args) {
//Escreve uma linha em uma arquivo texto
System.out.println("Inicio MeuPrintWriter");
try {
File arquivo = new File("C:/temp/meuArquivo.txt");
PrintWriter pw = new PrintWriter(arquivo);
pw.append("Mensagem do Dia!!");
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Fim MeuPrintWriter");
}
}

Manipulando arquivos no Java


Existem vrios post no nosso site sobre o assunto de arquivos! Indicamos que vocs acessem para terem mais
contedos para estudarem e verem outros exemplos.
Publicamos semanal mente artigos sobre Java no blog: www.feltex.com.br
Segue o tutorial de manipulao de arquivos:
http://www.feltex.com.br/felix/manipulacao-de-arquivos/

www.feltex.com.br

Captulo 8 Manipulao de Arquivos

REN DESCARTES

10.

Banco de Dados (JDBC)

Metas do captulo

O que JDBC.
Comandos Bsicos de SQL (DDL e DML).
Classes e interfaces utilizadas para conectar com o Banco de Dados.
Vrios tipos de conexo com Banco de dados.
CRUD de uma entidade.

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES

10.1.

Introduo

Primeiro devemos saber do que estamos falando. O que seria um banco de dados? Imagine um sistema de
Controle de uma escola. necessrio realizar vrios cadastros (Alunos, Professores, Diretores, turmas). Ok,
entendido. Para isso precisamos de um local onde possamos armazenar isso. Para cada classe mencionada
criaremos uma tabela, que nada mais uma estrutura como linhas e colunas... uma matriz.
JDBC Java Database Connectivity. a tecnologia Java para conexo com banco de Dados
Tabela aluno:
Matrcula
1141
5541
4412

Nome
Jose da Silva
Maria da Silva
Antonia Ferreira

Telefone
2251-4471
4474-5563
7745-78844

Email
jose@feltex.com.br
maria@feltex.com.br
antonia@feltex.com.br

Simples assim. Para o conjunto dessas tabelas armazenadas em um software centralizados chamamos de
Banco de Dados.
Existem muitos Bancos de Dados famosos por a: Oracle, MySQL, SQL Server, PostgreSQL, IBM DB2 entre
outros.

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES

10.1.1.

Estabelecendo a Conexo

Nos nossos exemplos trabalharemos com o Banco de Dados MySQL. Ele um software free que podemos
baixar do site da Oracle.

Banco de dados

Existem muitos banco de dados no mercado. Acesse os links abaixo e veja mais informaes sobres eles:

MySQL http://dev.mysql.com/downloads/
PostgreSQL http://www.postgresql.org/download/
Oracle http://www.oracle.com/index.html
SQL Server: http://www.microsoft.com/

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES

Assista aos vdeos e configure seu banco de dados

MySQL (Instalao e Configurao do Banco de Dados MySQL) http://youtu.be/fLDv31U_fkw


PostGreSQL Instalao e Configurao do Banco de Dados PostGreSQL http://youtu.be/lXq_hzf1-yM

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES

10.1.2.

Trabalhando com Instrues SQL

10.1.3.

Para criar uma tabela:


CREATE TABLE tbaluno (
matricula INT NOT NULL ,
nome VARCHAR(45) NULL ,
telefone VARCHAR(45) NULL ,
email VARCHAR(45) NULL ,
datanascimento DATETIME NULL ,
tbalunocol VARCHAR(45) NULL );

Quando precisamos realizar uma incluso no banco de dados utilizamos comandos especficos. Vamos fazer
os comandos DML Data Manipulation Language (Linguagem de Manipulao de Dados). Esses comandos so
basicamente Consultar, Incluir, Alterar e Excluir registros na base de dados. Isso mais conhecido no mundo da
informtica como CRUD Create Read Update and Delete.(Criar, ler, atualizar e deletar).

Vejamos esses comandos bsicos

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES

10.1.4.

Para incluir um registro na tabela

insert into tbaluno (matricula,nome, telefone, email) values (1, 'maria da silva','55559887','maria.silva@feltex.com.br');
insert into tbaluno (matricula,nome, telefone, email) values (2, 'Jose da silva','22233222','jose.silva@feltex.com.br');
insert into tbaluno (matricula,nome, telefone, email)
values (3, 'Bruna silva','4412-2234','bruna.silva@feltex.com.br');

10.1.5.

Para listar os registros existentes na tabela

Select * from tbaluno;

10.1.6.

Para alterar um registro na tabela

update tbaluno set nome = 'Maria da Silva Pereira' where matricula = 1;

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE
that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Queries and
reconnect.
0.000 sec
Se voc receber essa mensagem de erro no MySQL Workbench

10.1.7.

Para excluir um registro na tabela

Delete from tbaluno where matricula = 1;

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES
Agora que j conhecemos os comandos bsicos vamos ver como utiliz-los em Java. Veja o passo a passo de
como ocorre a execuo de um Comando no banco de dados

Conexao

Comando
SQL

Execuo

Resultado

Figura 1gfdgsfgd

Connection

PreparedStatment

executeQuery

ResultSet

Figura 2asdasdasd

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES

Crie um novo projeto. Adicione uma classe chamada AlunoJDBC com o seguinte contedo:
package br.com.feltex.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class AlunoJDBC {
public static void main(String[] args) {
System.out.println("Inicio AlunoJDBC");
try {
String usuario = "root";
String senha = "";
// Aqui criada a conexo com o Banco de Dados
Connection conexao = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/bdacademicnet", usuario, senha);
//Criao de um objeto para executar o comando SQL
PreparedStatement pstm = conexao
.prepareStatement("select * from tbaluno");
// Ser retornada a lista de registros existentes no banco
ResultSet rs = pstm.executeQuery();
//Loop para ler cada registro
while (rs.next()) {
String nome = rs.getString("nome");
String telefone = rs.getString("telefone");
System.out.println("nome: " + nome + " telefone: " + telefone);
}
// necessrio fechar o PreparedStatement e a Conexo
pstm.close();
conexao.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Fim AlunoJDBC");
}
}

Conexo JDBC
H um tutorial sobre conexo com diversos Bancos de dados em nosso blog: Acesse
http://www.feltex.com.br/felix/tutorial-jdbc/

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES

Teremos como resultado as linhas registradas na nossa tabela. Veja a sada da console abaixo:
Inicio AlunoJDBC
nome: maria da silva telefone: 5555-9887
nome: Jose da silva telefone: 2223-3222
nome: Bruna silva telefone: 4412-2234
Fim AlunoJDBC

10.2.

Apresentao

Apostila com exerccios de Acesso a banco de dados em Java com JDBC. Ela um material de apoio para
apresentao em sala de aula. Tem como objetivo utilizar um cdigo fonte JAVA para fixar o contedo terico.

10.3.

Cdigo de Exemplo

Teremos um exemplo completo de como fazer um cadastro de aluno utilizando o Padro de Projeto DAO Data
Access Object.

Instciar Aluno
AlunoDAO

AlunoCRUD

Aluno
matricula
nome
telefone

CRUD
incluir
alterar

AlunoDAO

DAO

Executar SQL

Conexo Banco de
Dados

Comando

Veja o passo a passo a seguir. Faa a criao da entidade aluno que conter os atributos do aluno.

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES

10.4.

Entidade Aluno
package br.com.feltex.academicnet.entidade;
import java.io.Serializable;
import java.util.Date;
/**
*
* Classe de entidade que possui os atributos do aluno
*
*/
public class Aluno implements Serializable {
private static final long serialVersionUID = -309513637403441918L;
private Long matricula;
private String nome;
private String telefone;
private String email;
private Date dataCadastro;
public Aluno() {
}
public Aluno(Long matricula) {
super();
this.matricula = matricula;
}
public Aluno(Long matricula, String nome) {
super();
this.matricula = matricula;
this.nome = nome;
}
public Date getDataCadastro() {
return dataCadastro;
}
public String getEmail() {
return email;
}
public Long getMatricula() {
return matricula;
}
public String getNome() {
return nome;
}
public String getTelefone() {
return telefone;
}
public void setDataCadastro(Date dataCadastro) {
this.dataCadastro = dataCadastro;
}
public void setEmail(String email) {
this.email = email;

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES
}
public void setMatricula(Long matricula) {
this.matricula = matricula;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
@Override
public String toString() {
return "Aluno [matricula=" + matricula + ", nome=" + nome
+ ", telefone=" + telefone + ", email=" + email
+ ", dataCadastro=" + dataCadastro + "]";
}
}

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES

10.5.

Cadastro de Aluno

10.5.1.

Classe DAO

Esta classe contm o cdigo de acesso ao banco de dados. No nosso exemplo trabalharemos com o banco
de dados MySQL.
package br.com.feltex.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
/**
* Classe responsvel pela Conexo com o Banco de dados. utilizada por outras
* classes de persistncia de dados.
*
*/
public class DAO {
public Connection getConexao() {
Connection conexao = null;
String usuario = "root";
String senha = "teco01";
String nomeBancoDados = "bdacademicnet";
try {
conexao = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/" + nomeBancoDados, usuario,
senha);
} catch (Exception e) {
e.printStackTrace();
}
return conexao;
}
}

10.5.2.

AlunoDAO

Classe que far as aes de acesso a banco de dados o famoso CRUD. Observe que os objetos recebem
como parmetro um Aluno, objeto que contm todos os atributos que precisamos. Veja que tambm utilizamos
herana entre AlunoDAO e a classe DAO.
package br.com.feltex.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class AlunoDAO extends DAO{
public void alterar(Aluno aluno) {
try {
Connection conexao = getConexao();
PreparedStatement pstmt = conexao
.prepareStatement("Update tbaluno SET nome = ?, telefone = ?, email = ?, datacadastro = ?"
+ " WHERE matricula = ? ");
pstmt.setString(1, aluno.getNome());
pstmt.setString(2, aluno.getTelefone());

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES
pstmt.setString(3, aluno.getEmail());
pstmt.setDate(4, new java.sql.Date(aluno.getDataCadastro().getTime()));
pstmt.setLong(5, aluno.getMatricula());
pstmt.execute();
pstmt.close();
conexao.close();
} catch (Exception e) {
e.printStackTrace();
}
}

public void excluir(Aluno aluno) {


try {
Connection conexao = getConexao();
PreparedStatement pstm =
conexao.prepareStatement("Delete from tbaluno where matricula = ? ");
pstm.setLong(1, aluno.getMatricula());
pstm.execute();
pstm.close();
conexao.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean existe(Aluno aluno) {
boolean achou = false;
try {
Connection conexao = getConexao();
PreparedStatement pstm =
conexao.prepareStatement("Select * from tbaluno where matricula =
pstm.setLong(1, aluno.getMatricula());
ResultSet rs = pstm.executeQuery();
if (rs.next()) {
achou = true;
}
pstm.close();
conexao.close();
} catch (Exception e) {
e.printStackTrace();
}
return achou;
}

?");

public void inserir(Aluno aluno) {


try {
Connection conexao = getConexao();
PreparedStatement pstm =
conexao.prepareStatement("Insert into tbaluno (matricula, nome, telefone, email, datacadastro) values
(?,?,?,?,?)");
pstm.setLong(1, aluno.getMatricula());
pstm.setString(2, aluno.getNome());
pstm.setString(3, aluno.getTelefone());
pstm.setString(4, aluno.getEmail());
pstm.setDate(5, new java.sql.Date(aluno.getDataCadastro()
.getTime()));
pstm.execute();
pstm.close();
conexao.close();
} catch (Exception e) {
e.printStackTrace();
}
}

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES
public List<Aluno> listar() {
List<Aluno> lista = new ArrayList<>();
try {
Connection conexao = getConexao();
Statement stm = conexao.createStatement();
ResultSet rs = stm.executeQuery("Select * from tbaluno");
while (rs.next()) {
Aluno aluno = new Aluno();
aluno.setMatricula(rs.getLong("matricula"));
aluno.setNome(rs.getString("nome"));
aluno.setTelefone(rs.getString("telefone"));
aluno.setEmail(rs.getString("email"));
aluno.setDataCadastro(new
java.util.Date(rs.getDate("datacadastro").getTime()));
lista.add(aluno);
}
stm.close();
conexao.close();
} catch (Exception e) {
e.printStackTrace();
}
return lista;
}
public Aluno consultar(Aluno aluno) {
try {
Connection conexao = getConexao();
PreparedStatement pstm =
conexao.prepareStatement("Select * from tbaluno where matricula = ?");
pstm.setLong(1, aluno.getMatricula());
ResultSet rs = pstm.executeQuery();
if (rs.next()) {
aluno.setMatricula(rs.getLong("matricula"));
aluno.setNome(rs.getString("nome"));
aluno.setTelefone(rs.getString("telefone"));
aluno.setEmail(rs.getString("email"));
aluno.setDataCadastro(new
java.util.Date(rs.getDate("datacadastro").getTime()));
}
pstm.close();
conexao.close();
} catch (Exception e) {
e.printStackTrace();
}
return aluno;
}
}

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES
Por fim criaremos a classe AlunoCRUD que chamar a camada de acesso a dados AlunoDAO para fazermos a
manipulao dos dados no banco.

package br.com.feltex.jdbc;
import java.util.Date;
public class AlunoCRUD {
public static void main(String[] args) {
System.out.println("Inicio");
try {
Aluno aluno = new Aluno();
aluno.setMatricula(123123L);
aluno.setNome("Maria da Silva");
aluno.setEmail("Maria@feltex.combr");
aluno.setTelefone("224112");
aluno.setDataCadastro(new Date());
AlunoDAO alunoDAO = new AlunoDAO();
alunoDAO.inserir(aluno);
for (Aluno novoAluno : alunoDAO.listar()) {
System.out.println(novoAluno);
}
aluno.setNome("Maria da Silva e Santos");
alunoDAO.alterar(aluno);
for (Aluno novoAluno : alunoDAO.listar()) {
System.out.println(novoAluno);
}
alunoDAO.excluir(aluno);
System.out.println("Fim");
} catch (Exception e) {
e.printStackTrace();
}
}
}

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

REN DESCARTES

11.

Exerccios proposto

Nesse exerccio devemos considerar que as tabelas j foram criadas no banco de dados e focaremos apenas na
codificao Java.

11.1.

Executar o exemplo completo

Devemos executar o exemplo da apostila que utiliza as funes de consultar, incluir, alterar e excluir um
aluuno no banco de dados. Comece o exemplo pela classe AlunoCRUD.

11.2.

Alterao do exemplo

Neste passo devemos criar novos atributos (CPF, observao, nota) para a entidade Aluno e grav-los no
banco de dados. Veja como deve ficar a tabela

NOME

TIPO

ACEITA NULO?

Matrcula

Inteiro

NO

Nome

Texto (100)

NO

Data Cadastro

Data

NO

CPF

Texto(11)

SIM

e-mail

Texto

SIM

telefone

Texto

SIM

Observao

Texto

Sim

Nota

Decimal

Sim

Desafio

1. Crie no nosso banco de dados a tabela tbcurso(Codigo inteiro, Nome Texto)


2. Criar a operao de incluso de curso tbcurso para uma nova entidade no Banco de dados. Ser
necessrio criar tambm a classe Curso, CursoDAO, CursoCRUD.
3. Aps a execuo do CRUD faa a associao do aluno a um curso.

www.feltex.com.br

Captulo 9 Banco de Dados (JDBC)

Вам также может понравиться