Sie sind auf Seite 1von 98

1

J2SE
Java 2 Standart Edition
Prof. Carlos Alberto
tcadsilva@yahoo.com.br
2
Plataformas Java

J2SE - Java 2 Standard Edition
Linguagem Java (JDK, JRE, APIs).

J2EE - Java 2 Enterprise Edition
Componentes (Web Application, EJB-Enterprise
JavaBeans, etc).

J2ME - Java 2 Micro Edition
Desenvolvimento para:
celulares, palms, computadores de bordo, etc.
3
Plataformas Java
Java desenvolvida pela Sun Microsystem- Java 2
Platform Standard Edition ou Java 2 Software
Devenlopment Kit (J2SDK).
Java uma Liguagem O.O
JDBC-(Java Database Conennectvity), JSP-(Java
Server Page), Java Remote Method
Invocation(JRMI), Session Enterprise JavaBeans
(EJBs), Java Message Service(JMS) etc..
4
Por que Java 2?
Porque houve muitas mudanas na verso 1.2.

Antes da verso 1.2, Java era muito lenta e, no tinha um
gerenciador de memria.

Principais mudanas na verso 1.2:

J.I.T. (Just-In-Time)
Melhora a Performance

Garbage Collection
No h estouro de memria
5
Por que Java?
Java APIs(Application Programming Interfaces
- Muitas classe so fornecidas por
fonecedores independentes de software(ISV-
Independent Software Vendor).
- Produtos freeware e shareware- so
condigo fonte abertos podendo estudar o codigo
e at modifica-lo.
- Os programas em java passam por
5(cinco)fases; estudaremos mais adiante.

6
J2SE - Standart Edition






JSDK - Java Standart Development Kit
Java Packages APIs
Linguagem Java
JVM - Java Virtual Machine
7
JRE - Java Runtime Environment
Compile
Clientes.java
Clientes.class
javac
Runtime
Class Loader
Byte code
verifier
Interpreter
Runtime
Hardware
java
Operao de um JRE
8
JRE - Java Runtime Environment
Compile
Clientes.java
Clientes.class
javac
Runtime
Class Loader
Byte code
verifier
Interpreter
Runtime
Hardware
java
JIT
code
generator
Operao de um JRE com JIT
9
Aplicao Bsica em Java
TestOlaUsuario.java
1 /*
2 Aplicao Bsica em Java
3 autor: Carlos Alberto
4 data: 08/04/2005
5 */
6 public class TestOlaUsuario {
7 public static void main (String [] args){
8 OlaUsuario hello = new OlaUsuario();
9 hello.mtdOla();
10 }
11 }
OlaUsuario.java
1 //Declarao da Classe OlaUsuario
2 public class OlaUsuario {
3 public void mtdOla() {
4 System.out.println(Ola Usuario);
5 }
6 }
10
Compilando a Aplicao Bsica
Compilando TestOlaUsuario.java
javac TestOlaUsuario.java

OlaUsuario.java compilado automaticamente

Executando a aplicao
java TestOlaUsuario
11
Ambiente de Execuo
Compile
TestOlaUsuario.java
TestOlaUsuario.class
javac
OlaUsuario.java
OlaUsuario.class
Tambm
compilado
Pode ser executado em
mltiplas plataformas
JVM
UNIX

JVM
WIN

JVM
MAC

JVM
java
Tambm
carregado
Runtime
TestOlaUsuario.class
OlaUsuario.class
12
Principio bsico de Ambiente
Java
Fases do Ambiente Java
Editor
Disco
Fase 1
Programa criado no
editor e armazenado
em disco.
Compilador
Disco
Fase 2
O Compilador cria
bytecodes e os
armazena em disco.
Carregador de
Classe
Disco
Memria
Principal
Fase 3
O Carregador de
classe coloca
bytecodes na
memria.
13
Principio bsico de Ambiente
Java
Verificador de
Bytecode
Memria
Principal
Fase 4
O verificador de bytecodes
confirma que todos os
bytecodes so vlidos e no
violam restries de
segurana de java.
Verificador de
Bytecode
Memria
Principal
Fase 5
O interpretador l os
bytecodes e os traduz para
uma liguagem que o
computador pode entender,
possivelmente armazenando
valores dos dados enquanto
executa o programa.
14
Entendendo Classe
Java consistem em partes chamadas classes.
As classe consistem em partes chamadas
mtodos que realizam tarefas e retornam
informaes quando elas completam suas
tarefas.
As bibliotecas de classe java so conhecidas
como Java APIs(Application Progamming
Interfaces- Interface de Programas Aplicativos).
15
Entendendo Classe
Unifield Modeling Language(UML) - uma
liguagem grfica que permite s pessoas que
constroem sistemas representar seu projetos
orientados a objeto usando uma notao
comum.
Graphical Use Interface(GUI) - chamado de
JOptionPane, que fornece janelas pre-
definidas(chamada de caixa de dilogo) de
entra de sada.
16
Classe e Objetos
Classe
Herana
Polimorfismo
17
Classe
Uma classe considerada um tipo de dado como os tipos
que existem predefinidos em compiladores de diversas
linguagens de programao.
Como Ex., considere o tipo int que definido em Java.
Podemos declarar quantas variveis do tipo int forem
necessrias ao programa. De modo similar, podemos
declarar quantas variveis quisermos de uma classe j
definida.
Uma varivel de uma classe chamada de objeto e conter
campos de dados e funes.
Definir uma classe no cria nenhum objeto, dom modo que a
existncia do tipo int no cria nenhuma varivel.
As funes de um objeto so chamadas mtodos de modo
geral, so o nico meio de acesso aos campos de dados
tambm chamados variveis de instncia.
18
Exemplo de Classe
Math.sqrt(900.0)
- math classe
- sqrt o mtodo
-(900.0) o argumento do mtodo sqrt.
19
HERANA
A programao orientada ao objeto oferece
uma maneira de relacionar classes umas com
as outras por meio de hierarquias.
No nosso dia-a-dia, esse processo esto
presente quando dividimos classes em
subclasses, mantendo-se o princpio de que
cada subclasse herda as caracterticas da
classe da qual foi derivada.
Alm das caractersticas herdadas, cada
subclasse tem suas caractersticas particulares.
20
HERANA
SUPERCLASSE
CARACTERSTICAS
A B
CARACTERSTICAS
A B
E
F
CARACTERSTICAS
A B C
F
G
CARACTERSTICAS
A
B
C D
Em Programao O.O, o
conceito de superclasse
ou processo de classes
derivadas chamada de
herana.
21
HERANA
Da mesma forma que voce pode criar uma biblioteca de
funes teis a diversos programas, pode formar uma
biblioteca de classes que podero vir ser o ncleo de
muitos pragramas.
O uso de uma biblioteca de classe oferece um grande
vantagem sobre uso de uma bibioteca de funes: o
programador pode criar classes derivadas de super-
classes de biblioteca. Isto significa que, sem alterar a
superclasse, possvel adicionar a ela caractersticas
diferentes que a tornaro capaz de executar exatamente
o que desejarmos.
Uma classe que derivada de uma superclasse pode,
por sua vez ser classe-base de outra classe.
22
POLIMORFISMO
O sentido da palavra polimorfismo o do uso de um
nome para definir varias formas distintas.
Em java, chamamos de polimorfismo a criao de uma
famlia de funes que compartilham do mesmo nome,
mas cada uma tem cdigo independente.
O resultado da ao de cada uma das funes da
famlia o mesmo. A maneira de atingir esse resultado
distinta. Como exemplo, suponhamos que desejamos
calcular o slario lquido de todos os funcionrio de uma
empresa. Nessa empresa h horistas, mensalistas, os
que ganham po comisso etc.
Criamos um conjunto de funes em que cada uma tem
um mtodo diferente para calcular o slario.
23
Declarao de uma classe
Sintaxe bsica de uma classe em Java:
<modificador> class <Nome_classe> {
[declarao_de_atributos]
[declarao_do_construtor]
[declarao_de_mtodos]
}

Exemplo:
1 public class Veiculo {
2 private double pesoMaximo;
3
4 public void setPesoMaximo(double valor){
5 pesoMaximo = valor;
6 }
7 }
24
Declarao de um atributo
Sintaxe bsica de um atributo em Java:
<modificador> <tipo> <nome>;


Exemplos:
1 public class Carro {
2 private int iQtdPortas;
3 private float fCoefAeroDin = 0,26F;
4 private String modelo = Audi A3;
5 }
25
Declarao de um mtodo
Sintaxe bsica de um mtodo em Java:
<modificador> <tipo_de_retorno>
<nome>([lista_de_argumentos]){
[instrues;]
}

Exemplos:
1 public class Cachorro {
2 private int iPeso;
3 public int getPeso(){
4 return iPeso;
5 }
6 public void setPeso(int novoPeso){
7 iPeso = novoPeso;
8 }
9 }
26
Tipo de retorno em um mtodo
A tag <tipo_de_retorno> indica o tipo de valor que o mtodo retornar. Se o
mtodo no for retornar nenhum valor, deve-se declarar o mtodo como void.
Para retornar valor, utiliza-se a instruo return.

Exemplos:
3 public int getPeso(){
4 return iPeso;
5 }
6 public void setPeso(int novoPeso){
7 iPeso = novoPeso;
8 }
27
Lista de argumentos
em um mtodo
A tag [lista_de_argumentos] permite passar valores para o interior de
um mtodo. Os elementos da lista ficam separados por vrgula e,
cada um pode ter um tipo de dado distinto.

Exemplo:
6 public void setPeso(int novoPeso){
7 iPeso = novoPeso;
8 }
28
Pseudocdigo
O pseudocdigo uma linguagem
informal que ajudam os programadores a
desenvolver algoritimos.
O pseudocdigo similar a liguagem
cotidiana; conveniete e amigvel ao
usurio, embora no seja uma liguagem
real de computador.
29
Pseudocdigo e Estrutura de
Seleo If
Exemplo:
Se(if) a nota do alun o for maior que ou
igual a 60 imprimir aprovado

Nota >= 60 ImprimirAprovado
Verdadeiro
30
Pseudocdigo e Estrutura de
Seleo If
If (studentGrade >= 60)
System.out.println( Aprovado)
Observe que o cdigo Java correponde
aproximadamente ao pseudocdigo.
O fluxograma da figura anterior ilustra a
estrutura if de seleo nica
31
Pseudocdigo e Estrutura de
Seleo If /Else
Se (If) a nota do aluno for maior do que ou
igual a 70 Imprimir Aprovado
Seno(else)
Imprimir Reprovado
Nota >= 60
ImprimirAprovado
Verdadeiro
ImprimirAprovado
Falsa
32
Pseudocdigo e Estrutura de
Repetio While
A estrutura de repetio permite especificar que
uma ao deve ser repetida enquanto alguma
condio permanecer verdadeira. A instruo
em pseudocdigo Exemplo:
Enquanto(While) produto for menor ou igual
1000 a varivel produto e repetida e multiplicada
por 2. Quando o produto se torna maior a
instruo While se torna falsa.
33
Pseudocdigo e Estrutura de
Repetio While
Verdadeiro
Produto<= 1000 Produto = 2 * produto
Falso
Int produto = 2;
While ( produto <= 1000)
produto = 2 * produto;
34
Construtor
Sintaxe bsica de um construtor em Java:
<modificador> <nome_classe>([lista_de_argumentos]){
[instrues;]
}

Obs.: O nome do construtor deve sempre ser igual ao nome da classe.
Exemplo:
1 public class Cachorro {
2 private int iPeso;
3
4 public Cachorro(){
5 iPeso = 42;
6 }
7 public int getPeso(){
8 return iPeso;
9 }
10 public void setPeso(int novoPeso){
11 iPeso = novoPeso;
12 }
13 }
35
Construtor Padro
Toda classe tem um construtor padro
Construtor Padro no passa argumentos
Construtor Padro no tem corpo
Quando um objeto instanciado (=new Xxx();),
o construtor padro est sendo chamado
Obs.: Se voc declarar um novo construtor, ele estar substituindo o
construtor padro.
36
Declarao package
Sintaxe:
package <nome_pacote>[.<nome_sub_pacote>];

Declare o pacote no incio do arquivo
Apenas uma declarao por arquivo
Os nomes devem seguir a hierarquia e separados por pontos

Exemplo:
1 package br.com.nomeempresa.negcio;
2
3 public class .....
37
Declarao import
Sintaxe:
import <nome_pacote>[.<nome_sub_pacote>].<nome_classe>;
ou
import <nome_pacote>[.<nome_sub_pacote>].*;

Declarar antes das classes
Pode ter vrias declaraes por arquivo
Especifica ao compilador onde esto as classes para serem usadas

Exemplo:
1 import br.com.nomeempresa.negcio.Empresa;
2 import java.io.*;
3
4 public class .....
38
Layout arquivo fonte - *.java
[<declarao_pacotes>]
[<declarao_importao>]
<declarao_classe>

Exemplo:

1 package banco.funcionario;
2
3 import banco.funcionario.gerentes.*;
4 import java.io.*;
5
6 public class ........
39
Utilizando a Java API
Documentation
Fornece a documentao de classes produzidas pela Sun.
Esta disponvel no site http://java.sun.com.

As principais informaes so:
Hierarquia de classes
Descrio e propsitos gerais das classes
Lista e detalhes de atributos, construtores e mtodos
40
Comentrios
Existem trs possibilidades para inserir comentrios em um cdigo fonte Java.

Exemplos:

//comentrio de uma linha

/* comentrio de uma
ou mais linhas */

/**
* Comentrio para documentao.
* @see NomedaClasse
* @author Valter Araujo
* @version 1.01 15/05/2002
*/
41
Javadoc
Com este comando possvel criar a documentao no formato
HTML das classes, exibindo comentrios de classes, construtores e
mtodos.

Obs.: os comentrios devero estar desta forma: /** texto */

Exemplo:
javadoc *.java

42
Blocos de Instrues
Na linguagem de programao Java, uma instruo pode ser uma ou mais linhas
de cdigo terminadas com o ( ; ).

Exemplo:
totalVenda = a + b + c + d + e;

o mesmo que:

totalVenda = a + b +
c + d + e;

43
Palavras Reservadas










abstract
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
extends
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
try
void
volatile
while
44
Tipos Primitivos
Java tem 8 tipos primitivos que formam 4 categorias.

Lgico boolean (8 bits)
Valores booleanos: true ou false.
Ex.: boolean g = true;

Texto char (16 bits)
Caracteres simples utilizando apstrofo.
Ex.: char j = 'A';

Inteiro byte(8 bits), short (16 bits),
int (32 bits) e long (64 bits)

Ponto Flutuante double (64 bits) e float (32 bits)
45
Tipos Primitivos
Inteiro - byte, short, int e long
Padro o int (0);
Para declarar o long necessrio o uso da letra L ou l.
long x = 10L;

Ponto Flutuante - double e float
Padro o double(0.0);
F ou f (float)
D ou d (double)
float x = 3.14F;
Obs.: todos atributos locais devem ser inicializados. Atributos de classe a inicializao
opcional.
46
Texto - String
java.lang.String
No um tipo primitivo e sim uma classe;
Deve-se usar aspas para atribuio;

Exemplos:
//declarao String
String nome, sobrenome;
nome = Roger;
sobrenome = Waters;
//declarao char
char ch1, ch2;
ch1 = 'A';
ch2 = 'N';
47
Tipos de Referncia
Como j sabemos, o Java tem oito tipos primitivos: boolean, char, byte, short,
int, long, float e double. Alm dos tipos primitivos podemos ter Variveis de
Referncia.
Variveis de Referncia so variveis que se referem (apontam) a objetos.

Exemplo:
Em um pacote qualquer temos duas classes: Aluno.class e TestAluno.class
Na classe TestAluno colocamos a seguinte instruo:

Aluno x = new Aluno(Jos, RM55999);

x uma varivel de referncia, pois est apontando para o objeto Aluno.
48
Atribuindo Tipos de Referncia
Exemplos:
int x = 7;
int y = x;
Aluno a = new Aluno(Jos, RM55999);
Aluno b = a; //neste caso, a e b tem o mesmo contedo
hexadecimal

49
Operadores
Incremento ( ++ -- ) exemplo: x++; igual a x = x + 1;
Soma ( + )
Subtrao ( - )
Multiplicao ( * )
Diviso ( / )
Resto de diviso ( % )
Igual ( == )
Diferente ( != )
E ( && )
Ou ( || )
Ou exclusivo ( ^ )
Negao ( ! )
Menor ( < )
Maior ( > )
Menor igual ( <= )
Maior igual ( >= )
Instncia de Classe ( instanceof )
Ternrio (x1?x1 true:x1 false)
50
Concatenao
realizada atravs do operador ( + )
Permite a concatenao (juno) de Strings.

Exemplo:
String saudacao = Dr. ;
String nome = Marcos + +
Souza;
String titulo = saudacao + nome;

Resultado: Dr. Marcos Souza
51
Casting
utilizada para confirmar o tipo de dado utilizado na operao.

Exemplo 1:
public class Casting{
public static void main(String args[]){
short a,b,c;
a = 1;
b = 2;
c = a + b; //Erro! Pois a e b so do tipo integer
}
}
Exemplo 2:
public class Casting{
public static void main(String args[]){
short a,b,c;
a = 1;
b = 2;
c = (short)(a + b); //Correto! Foi realizado o
Casting
}
}
52
Controle de Fluxo if/else
Sntaxe bsica:

if (expresso booleana) {
<instrues;>
}

ou

if (expresso booleana) {
<instrues;>
} else if (expresso booleana) {
<instrues;>
} else {
<instrues;>
}
53
Controle de Fluxo switch
Sntaxe bsica:

switch(expresso) {

case constante1:
<instrues;>
break;

case constante2:
<instrues;>
break;

default:
<instrues;>
break;
}
54
Loop - for
Sntaxe bsica:

for (expr_inicial;teste
expr_booleana;alteracao_expr){
<instrues;>
}

Exemplo:

public class LoopFor{
public static void main(String args[]){
for (int i=0; i <= 100; i=i+2){
System.out.println("Linha " + i);
}
}
}

55
Loop - while
Sntaxe bsica:

while(valor_booleano) {
<instrues;>
}

Exemplo:

public class LoopWhile{
public static void main(String args[]){
int i = 0;
while (i <= 100){
System.out.println("Linha " + i);
i=i+2;
}
}
}
56
Loop do/while
Sntaxe bsica:

do {
<instrues;>
} while(teste_booleano);

Exemplo:

public class LoopDoWhile{
public static void main(String args[]){
int i = 0;
do {
System.out.println("Linha " + i);
i=i+2;
} while (i <= 100);
}
}
57
Array O que uma Array?
um grupo de objetos(indexados) do mesmo tipo.
possvel declarar arrays de tipo primitivo e de classe.
Exemplos:
char s[];
Point p[];

char[] s;
Point []p;
58
Criando Arrays
Utilize a palavra reservada new para criar um objeto array.

Exemplo: uma array primitiva do tipo char

1 public char[] getArray(){
2 char[] s;
3
4 s = new char[26];
5 for ( int i=0; i < 26; i++){
6 s[i] = (char) (A + i);
7 }
8 return s;
9 }
59
Inicializando Arrays
possvel inicializar das seguintes formas:

1 String nomes[];
2 nomes = new String[3];
3 nomes[0] = Joo;
4 nomes[1] = Maria;
5 nomes[2] = Jos;
ou
1 String nomes[] = {Joo,Maria,Jos};
60
Arrays Multidimensionais
uma Array de uma Array.

Exemplos:
1 int mArray [][] = new [3][3];
ou
1 int mArray [][] = new [3][];
2 mArray[0] = new int[3];
3 mArray[1] = new int[2];
4 mArray[2] = new int[1];

int mArray [][] = new [][3]; // ERRADO
61
Array Bounds(limite)
Toda Array inicia em 0 (zero).

Exemplos:
1 int list[] = new int [10];
2 for(int i=0; i < list.length;i++){
3 System.out.println(list[i]);
4 }

Utilize a instruo length para capturar o tamanho de uma array.

Sintaxe: nomeArray.length
62
Redimensionamento
de uma Array
Uma Array no pode ser redimensionada, mas possvel utilizar a
mesma referncia para criar uma outra Array.

Exemplos:
1 int minhaArray[] = new int[6];
2 minhaArray = new int[10];

Neste caso a Array criada na linha 1 perdida.
63
Copiando Array
possvel copiar uma Array utilizando a instruo
System.arraycopy(origem,posio_origem,destino,posio_destino,tamanho)

Exemplos:
1 //array original
2 int elementos[] = {1,2,3,4,5,6};
3
4 //nova array
5 int numeros[] = {10,9,8,7,6,5,4,3,2,1};
6
7 //copia todos de elementos para numeros,
8 // iniciando no ndice 0
9 System.arraycopy(elementos,0,numeros,0,elementos.length);

Resultado: numeros = 1,2,3,4,5,6,4,3,2,1
64
Argumentos via console
Qualquer programa em Java pode utilizar, passar argumentos via console. Isso
atravs da Array args(ou outro nome de atributo), declarada no mtodo public
static void main(String []args).

Sintaxe, no console:
java NomeClasse arg1 arg2 outro arg

Resultado:
System.out.println(args[0]): arg1
System.out.println(args[1]): arg2
System.out.println(args[2]): outro arg
65
Modificadores
So palavras chaves que modificam a atribuio de classes, mtodos e atributos
de classe. O efeito de cada modificador depende do tipo de elemento
modificado.
Modificador Classes Mtodos Atributos de classe
public Pode ser instanciada e utilizada
livremente.
Pode ser utilizado livremente. Pode ser utilizado livremente.
protected no aplicvel Pode ser acessado apenas no
mesmo pacote e em
subclasses.
Pode ser acessado apenas no
mesmo pacote e em subclasses.
default
(sem modificador)
Pode ser instanciada e utilizada
apenas no mesmo pacote.
Pode ser acessado apenas no
mesmo pacote.
Pode ser acessado apenas no
mesmo pacote.
private no aplicvel Pode ser acessado somente
dentro da classe em que est
declarado.
Pode ser acessado somente
dentro da classe em que est
declarado.
abstract No pode ser instanciada, deve
ser herdada em uma outra
classe(subclasse).
No pode ser implementado,
sua implementao deve estar
em uma subclasse.
no aplicvel
final No permite que a classe tenha
subclasses.
No pode ser sobrescrito. Constante.
static no aplicvel Podem ser acessados a partir
do nome da classe.
Podem ser acessados a partir do
nome da classe.
66
java.lang.Object
A classe java.lang.Object a raiz da hierarquia de classes.
- Toda classe tem Object como superclasse.
- Todos objetos, incluindo arrays, implementa os mtodos desta classe.
Exemplos retirados da API:

Estes so os mtodos da classe Object, herdados
por todas as classes.
67
Subclasses instruo extends
A palavra reservada extends utilizada para indicar herana.

Sntaxe bsica:
<modificador> class <NomeClasse> extends <SuperClasse>

Exemplo:
public class Cachorro extends Animal {
}

Obs.: Em Java no permitido herdar mais de uma classe.
68
Instruo this
A palavra reservada this utilizada para:
Apontar um atributo de classe ou referncia de objetos dentro de um mtodo ou construtor local.

Exemplos:

public class Data{
private int iDia = 1;
private int iMes = 1;
private int iAno = 2000;

public Data(int iDia, int iMes, int iAno){
this.iDia = iDia;
this.iMes = iMes;
this.iAno = iAno;
}
...
69
Instruo super
A palavra reservada super utilizada para:
Apontar uma referncia superclasse em um construtor ou mtodo da subclasse.

Exemplos:

public class Cachorro {
protected String nome;
protected int idade;
public Cahorro(){
this.nome = Tot;
}
}

public class PastorAlemao extends Cachorro {
public PastorAlemao(int idade){
super();
super.idade = idade;
}
}
70
Instruo abstract - classes
A palavra reservada abstract, que um modificador de classe e mtodo serve para:

Em uma classe: A classe no poder ser instanciada, utilizada para definir superclasses
genricas.
Exemplo:
Pessoa.java
public abstract class Pessoa {
protected String endereco;
}

PessoaFisica.java
public class PessoaFisica extends Pessoa{
}

PessoaJuridica.java
public class PessoaJuridica extends Pessoa {
}
71
Instruo abstract - mtodos
Em um mtodo: O mtodo no poder ser implementado na classe em que estiver publicado com o
modificador abstract. Ele dever ser implementado na subclasse.
Exemplo:
Pessoa.java
public abstract class Pessoa {
protected String endereco;
protected abstract void emitirImpostoRenda();
}
PessoaFisica.java
public class PessoaFisica extends Pessoa{
protected void emitirImpostoRenda() {
//IMPLEMENTAO DE IR PARA PF.
}
}
PessoaJuridica.java
public class PessoaJuridica extends Pessoa {
protected void emitirImpostoRenda() {
//IMPLEMENTAO DE IR PARA PJ.
}
}
72
Interface
Uma interface pode ser vista como um protocolo de comportamento. Ela simplesmente
uma lista de mtodos abstratos, podendo tambm incluir constantes. Para utiliz-la,
criada uma classe que a implemente. Esta classe ser obrigada a definir todos os mtodos
das interfaces que est implementando. Uma interface pode estender uma ou mais
interfaces.

Elas permitem um encapsulamento de comportamento, ocultando qual classe est
realizando uma tarefa especfica. Isso possvel porque a classe que implementa uma
interface obrigada a seguir o protocolo definido nesta.
Desta forma, as principais vantagens conseguidas atravs de seu uso so uma
manuteno mais simples do cdigo e uma maior reusabilidade do mesmo, aproveitando
melhor os benefcios da programao orientada a objetos.

De certa forma, interfaces so parecidas com classes abstratas, mas h algumas
diferenas fundamentais:
- Uma classe pode implementar vrias interfaces (herana mltipla), mas apenas uma
super classe;
- Uma interface no pode implementar nenhum mtodo, enquanto uma classe abstrata em
geral possui alguns mtodos concretos e outros abstratos.
73
Instruo implements
A palavra reservada implements utilizada para:
Implementar interface(s) em uma classe. Em Java podemos implementar uma ou mais
interfaces.
Exemplo:
public interface Database {
public static final String CONSTANTE1 = constante1;
public void alterar(Object x);
public void excluir (int codigo);
}

public class ProdutoDAO implements Database {
public void alterar(Object x){
//cdigo implementado
}
public void excluir (int codigo){
//cdigo implementado
}
public void imprimir(){
System.out.println(CONSTANTE1);
}
}
74
Contexto esttico
Variveis e mtodos marcados como static pertencem classe, ao invs de a alguma
instncia particular. possvel utiliz-los sem existir nenhuma instncia da classe,
chamando diretamente pelo nome da classe. Quando h instncias, a varivel static ir
ser compartilhada entre todas elas, existindo apenas uma cpia por classe.

Mtodos static no conseguem acessar diretamente variveis ou mtodos que no sejam
static, pois eles pertencem a classe e no saberiam de qual instncia utilizar. Por isso,
necessrio instanciar um objeto e utiliz-lo explicitamente neste caso.
Exemplos:

public static int contador;
public static int getContador(){
return contador++;
}
75
Tratamento de erros: exceptions
Uma exception representa uma condio excepcional que altera o fluxo normal
do programa. Quando um evento deste tipo ocorre em Java, uma exceo
lanada e a execuo do programa transferida para o cdigo responsvel por
tratar esta exceo.

Este mecanismo de tratamento de excees oferece vrias vantagens. Atravs
dele possvel isolar o cdigo responsvel pelo tratamento do erro em blocos
separados, deixando o cdigo principal mais limpo. Tambm possvel tratar
erros similares com um nico bloco de tratamento, eliminando cdigo
duplicado. Existe at a possibilidade de transferir o tratamento de uma exceo
para outros mtodos da pilha.

Para indicar a JVM qual cdigo deve ser executado quando acontece uma
exceo, so utilizados blocos try/catch. Dentro do try colocado o cdigo que
pode gerar uma exceo, e a seguir so colocados um ou mais blocos catch,
correspondentes s excees que podem ocorrer. Os blocos catch devem estar
logo em seguida do bloco try, e recebem o objeto da exceo como argumento,
que sempre ser de uma subclasse de Exception.
76
Tratamento de erros: exceptions
Exemplo:

01. try {
02. // Cdigo que pode gerar exceo
03. // Mais uma linha do bloco try
04. }
05. catch(PrimeiraException e1) {
06. // Cdigo para tratar a exceo PrimeiraException
07. // Pode ser utilizados mtodos para obter mais
informaes,
08. //tais como e1.printStackTrace();
09. }
10. catch(SegundaException e2) {
11. // Cdigo para tratar a exceo SegundaException
12. }
13. // Cdigo normal comea aqui
77
Tratamento de erros: exceptions
possvel fazer um bloco catch para uma exceo especfica e outro para todas as
outras subclasses de uma determinada Exception. Porm, necessrio que o catch
mais especfico (subclasse) aparea antes que o catch mais genrico (superclasse).
Caso contrrio o programa no ir compilar, apresentando uma mensagem de erro
dizendo que a exceo j tratada anteriormente.

O bloco finally pode aparecer logo aps o try/catch. Nele fica o cdigo que deve
sempre ser executado, ocorrendo uma exceo ou no. Um bom uso para liberar
recursos que so utilizados no try (fechar um arquivo, a conexo com banco de dados,
etc). O finally executado sempre, at mesmo se existir um retorno do mtodo
(return) dentro do try. Ele s no executado se a JVM for desligada, atravs de um
System.exit() ou um erro irreversvel. Quando ocorre uma exceo, ele executado
logo aps o catch, caso contrrio, logo aps o try.
Tanto a clusula finally como a catch so opcionais, porm necessrio ter pelo
menos uma delas para cada bloco try.
78
Hierarquia de Excees
- Excees que devem ser checadas obrigatoriamente: sub-classe de
Exception
- Excees graves (falta de memria, etc): sub-classe de Error
- Excees que no precisam ser checadas obrigatoriamente: sub-classe de
RuntimeException
79
Tratamento de erros: exceptions
A classe Exception uma subclasse de Throwable, que prov alguns mtodos
muito teis para obter informaes sobre uma exceo, tais como o
printStackTrace(). Outra subclasse de Throwable a Error. Errors e
RuntimeExceptions so considerados uncheked, portando o compilador no
obriga que exista tratamento para eles. Erros normalmente representam
situaes crticas, que no deveriam acontecer, como por exemplo acabar a
memria da JVM. J RuntimeExceptions (que so uma subclasse de Exception)
indicam erros de programao ou condies especiais, difceis de serem
tratadas. As outras Exceptions costumam indicar que uma condio necessria
para a execuo de um programa no est presente, como por exemplo um
recurso no disponvel. Para todas as subclasse de Throwable possvel utilizar
o throw/throws e o catch.
80
Lanando exceptions em mtodos
As excees que um mtodo lana precisam ser declaradas atravs da palavra throws,
caso sejam do tipo checked. Isso no significa que ele obrigatoriamente ir lanar a
exceo, apenas que isso pode acontecer. Se o mtodo no faz o tratamento de uma
exceo que ele recebe, tambm ser necessrio declar-la para pass-la adiante pela
pilha.
Exemplo:
public void metodo() throws UmaException, DuasException
{
// cdigo do mtodo
}

Cada mtodo precisa tratar todas as excees (checked) atravs de mtodos catch, ou
ento listar em sua declarao cada exceo que no tratada. Para repassar uma exceo
que recebida em uma clusula catch tambm necessrio que ela seja declarada no
mtodo.
81
Criando sua prpria exception
Para criar sua prpria exceo basta estender a classe Exception, da seguinte forma:

public class MinhaException extends Exception {

public MinhaException() {
// chama construtor da super-classe
super ("Minha primeira exceo");
}

public MinhaException (String mensagem) {
// chama construtor da super-classe
super (mensagem);
}
}

A nova exceo criada dever obedecer s regras de manipulao de excees, sendo tratada ou
lanada ao prximo mtodo:
throw new MinhaException();
throw new MinhaException("Erro!");
82
O que uma Collection?
- Uma collection um objeto que representa um grupo de objetos.
Os objetos em uma coleo so chamados de elementos, esses
elementos podem representar muitos tipos de objetos.
Collections mantm referncias de objetos do tipo Object, isso
permite que qualquer objeto seja armazenado em uma collection.
Assim, aps retirar um objeto de uma collection ser necessrio o uso
de casting.

83
Collections
Uma collections framework uma arquitetura para representar e manipular collections. Todas
as estruturas das collections contm trs coisas:
Interfaces: tipo de dados abstratos representando collections. Interfaces permitem que as
collection sejam manipuladas independentemente dos detalhes de sua representao. Em
linguagens orientadas a objeto com o Java, estas interfaces geralmente formam uma
hierarquia.
Implementaes: implementaes concretas das interfeces das collections. Em essncia, so
estruturas de dados reusveis.
Algoritmos: mtodos que desenvolvem computaes teis, como procura e armazenamento,
sobre objetos que implementam as interfaces das collections. Estes algoritmos so chamados
de polimrficos, pois o mesmo mtodo pode ser usado em muitas diferentes implementaes
de apropriadas interfaces de collections. Em essncia, algoritmos so funcionalidades
reusveis.
84
Collections
85
Interface Collection
Os propsitos gerais das implementaes Collection podem ser: ArrayList, Vector, vide API.

public interface Collection {
// Basic Operations
int size()
boolean isEmpty()
boolean contains(Object element)
boolean add(Object element)
boolean remove(Object element)
Iterator iterator()
// Bulk Operations
boolean containsAll(Collection c)
boolean addAll(Collection c)
boolean removeAll(Collection c)
boolean retainAll(Collection c)
void clear()
// Array Operations
Object[] toArray();
Object[] toArray(Object a[]);
}
86
Interface Set
Um set uma coleo que no pode conter elementos duplicados. Set modela a
abstrao matemtica de conjunto. A interface Set estende Collection no contm
mtodos alm daqueles herdados a partir de Collection. Adiciona restrio que a
duplicao de elementos proibida.
Os propsitos gerais das implementaes Set podem ser: HashSet, TreeSet, vide API.

public interface Set extends Collection{
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(Object element); // Optional
boolean remove(Object element); // Optional
Iterator iterator();
boolean containsAll(Collection c);
boolean addAll(Collection c); // Optional
boolean removeAll(Collection c); // Optional
boolean retainAll(Collection c); // Optional
void clear(); // Optional
Object[] toArray();
Object[] toArray(Object a[]);
}
87
Interface List
Uma List uma Collecion ordenada (s vezes chamada seqncia). Lists pode conter
elementos duplicados. Alm das operaes herdadas a partir de Collection, a interface List
inclui operaes para:
Acesso Posicional: manipula elementos baseados na posio numricos na lista.
Procura: procura por um objeto especfico na lista e retorna sua posio numrica.
List Iteration: estende a semntica do Iterator para tomar vantagem da natureza
seqencial Range-view: executa operaes em uma faixa (parte) da lista.
Os propsitos gerais das implementaes List podem ser: ArrayList, LinkedList, vide API.


public interface List extends Collection {
Object get(int index)
Object set(int index, Object element)
void add(int index, Object element)
Object remove(int index)
abstract boolean addAll(int index, Collection c)
int indexOf(Object o)
int lastIndexOf(Object o)
ListIterator listIterator()
ListIterator listIterator(int index)
List subList(int from, int to)
}
88
Interface Map
Uma Map um objeto que mapeia chaves para valores. Uma map no pode conter chave
duplicada: Cada chave pode no mximo mapear somente um valor.
Os propsitos gerais das implementaes Map podem ser: HashMap, TreeMap, vide API.

public interface Map {
Object put(Object key, Object value);
Object get(Object key);
Object remove(Object key);
boolean containsKey(Object key);
boolean containsValue(Object value);
int size();
boolean isEmpty();
void putAll(Map t);
void clear();
public Set keySet();
public Collection values();
public Set entrySet();
}
89
Iterators
Iteration o processo de recuperao de cada elemento em uma collection.

Um Iterator de uma Set desordenado.

Um ListIterator de uma List pode ser recuperada utilizando mtodos como: next e previous.

public interface Iterator {
boolean hasNext();
Object next();
void remove();
}

public interface ListIterator extends Iterator {
boolean hasPrevious();
Object previous();
}
90
Collection x Array
A grande vantagem de colees sobre arrays que as colees podem crescer em tamanho, voc no
tem que atribuir o tamanho no momento da criao. A desvantagem de colees que elas armazenam
apenas objetos e no tipos primitivos e isto trs um inevitvel overhead de performance. Arrays no
suportam ordenao diretamente, mas isto pode ser superado usando-se mtodos estticos de
Collections. Aqui est um exemplo:
String s[] = new String[4];
s[0]="z";
s[1]="b";
s[2]="c";
s[3]="a";
Arrays.sort(s);
for(int i=0;i< s.length;i++)
System.out.println(s[i]);

As colees Set e Map garantem a unicidade, List no garante a unicidade de seus itens mas os ordena.
91
Vector
O exemplo a seguir ilustra como voc pode adicionar objetos de diferentes classes a um
Vector. Isto contrasta com arrays onde cada elemento deve ser do mesmo tipo. O cdigo
ento navega atravs de cada objeto imprimindo na sada padro. Ele acessa
implicitamente o mtodo toString de cada objeto.
import java.awt.*;
import java.util.*;
public class Vec{
public static void main(String argv[]){
Vec v = new Vec();
v.amethod();
}
public void amethod(){
Vector mv = new Vector();
mv.addElement("Hello");
mv.addElement(Color.red);
mv.addElement(new Integer(99));
for(int i=0; i< mv.size(); i++){
System.out.println(mv.elementAt(i));
}
}
}
92
O que faz a JDBC API?
Com a JDBC API possvel realizar trs operaes:
- Estabelecer conexo com uma base de dados;
- Realizar pesquisar e atualizaes em uma base de dados;
- Processar resultados
O exemplo abaixo descreve os itens citados acima:
Connection conn = DriverManager.getConnection("jdbc:myDriver:wombat",
"myLogin",
"myPassword");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}
93
Carregando o Driver JDBC
Como j foi dito, utilizamos as interfaces do pacote java.sql.*, essas interfaces devem ser implementadas
pelo fabricante da base de dados, assim necessrio registrar(levantar) o driver fornecido pelo
fabricante.
O driver um jar (se for um driver puro java), e voc deve t-lo em seu classpath, caso contrrio no
conseguir utiliz-lo. Se preferir, coloque o driver no classpath na hora de chamar o java, atravs da
linha de comando.

Por exemplo:
java -classpath dir1/driver.jar Classe

Podemos registrar diversos driver em uma aplicao conforme o exemplo abaixo:
Class.forName(pacote.DriverDoFabricante");

Mas o que acontece realmente aqui? Quando voc utiliza o mtodo esttico Class.forName(), o Class
Loader tenta inicializar esta classe. Esta classe (que o nosso driver jdbc) possui um bloco inicializador
esttico, que ir registrar essa classe como um driver JDBC, avisando o java.sql.DriverManager, pelo
mtodo registerDriver.
94
Interface Connection
Esta interface responsvel por estabelecer conexo com o banco de dados, enviar e receber comandos
SQL e pelo contexto transacional da conexo. O exemplo abaixo ilustra uma idia geral de conexo:
Connection conn = DriverManager.getConnection(url, "myLogin",
"myPassword");

Connection conn =
DriverManager.getConnection("jdbc:oracle:thin:@172.16.2.37:152
2:CURSO",
"curso1",
"curso1");

Principais mtodos da interface Connection:
setAutoCommit(boolean)
getAutoCommit() : boolean
commit() : void
rollback() : void
isClosed() : boolean
close() : void
95
Interface Statement
Esta interface responsvel por encapsular comandos SQL atravs da a interface Connection, ou seja,
objetos Statements so criados a partir de um objeto de conexo.
Exemplo:
Statement st = conn.createStatement();

Principais mtodos da interface Statement:
executeQuery(String sql) : ResultSet
Executa um query passada como parmetro e retorna um objeto do tipo ResultSet contendo os dados
provenientes da consulta.

executeUpdate(String sql) : int
Este mtodo utilizado para fazermos insert, update e delete, ou seja, somente comandos de atualizao
ou definio de banco de dados como create database e outros.
close() : void
96
Interface ResultSet
Esta interface representa um conjunto de registros que o resultado de uma instruo
SELECT ou um procedimento que retorne um conjuntos de registros. Encapsula um cursor
ao resultado.
A interface ResultSet composta por mtodos para navegao em linhas dos resultados e
recuperao de valores da coluna e da linha em que o cursor estiver posicionado. Mantm um
cursor apontado para uma linha no banco de dados (uma linha que pertena ao resultado da
query executada).
Cada objeto ResultSet est vinculado a um statement portanto um mesmo objeto statement
no pode ser utilizado para interagir com dois resultados simultaneamente.
Exemplo:
ResultSet rs = st.executeQuery(COMANDO SELECT);
Principais mtodos da interface ResultSet:
first() : boolean
last() : boolean
next() : boolean
previous() : boolean
close() : void
97
Interface PreparedStatement
Esta interface responsvel por encapsular comandos SQL com valores pr interpretados, atravs da
interface Connection, garantindo maior eficincia, reduo e entendimento de cdigo ao programador.
Exemplo:
PreparedStatement ps = null;
ps = conn.prepareStatement("UPDATE COFFEES SET SALES=? WHERE COF_NAME LIKE ?");
ps.setInt(1, 75);
ps.setString(2, "Colombian");
ps.executeUpdate():
Principais mtodos da interface PreparedStatement:
addBatch() : void
Adiciona PS criadas e parametrizadas para execuo em lote.
executeQuery() : ResultSet
Executa um query e retorna um objeto do tipo ResultSet contendo os dados provenientes da consulta.
executeUpdate() : int
Este mtodo utilizado para fazermos insert, update e delete, ou seja, somente comandos de atualizao
ou definio de banco de dados como create database e outros.
close() : void
98
Interface CallableStatement
Esta interface permite acessar stored procedures no banco de dados.

Exemplo:
CREATE OR REPLACE PROCEDURE TesteProcedure(NumeroMesa IN
NUMBER)
AS
BEGIN
INSERT INTO TESTE_CALLABLE VALUES (NumeroMesa, SYSDATE);
END;

CallableStatement cs = con.prepareCall("{call
TesteProcedure(1)}");
cs.executeUpdate();

Das könnte Ihnen auch gefallen