Sei sulla pagina 1di 98

Java Bsico

Instrutor: Luciano 07/2010

Agenda
Introduo Estrutura do Fonte Pacotes Declarao de variveis Operadores e Controle de Fluxo Strings e Arrays Classes Herana Modificadores de Acesso Interfaces Excees Colees Javadoc Material de Estudo

Introduo
Caractersticas
Orientada a objetos Multiplataforma: Write once, run anywere o Possui uma extensa Biblioteca o Gratuita
o o

Mantido pela Sun (Oracle)


o

http://java.sun.com

Introduo
3 Verses:
1. JSE 2. JEE 3. JME

JSE Java Standard Edition (Core / Desktop)


a plataforma principal

JEE Java Enterprise Edition (Server)


a plataforma voltada para aplicaes web robusta, escalvel, distribuda

JME Java Mobile Edition (Mobile)


a plataforma voltada para dispositivos mveis

Introduo Plataforma Java


Possui dois componentes:
A Java Virtual Machine (JVM) A Java Application Programming Interface (API)

Introduo Write Once, Run Anywhere


1. O cdigo-fonte (.java) compilado em um arquivo que contm bytecodes (.class) 2. Bytecodes a linguagem que a mquina virtual java (JVM) entende. 3. Quando a aplicao roda, a JVM interpreta os bytecodes em linguagem de mquina

Introduo Write Once, Run Anywhere


Java multiplataforma pois a JVM est disponvel em diversos sistemas operacionais

Introduo
O que baixar? JVM
No h download ela vem com o JRE

JRE

Java Runtime Environment Ambiente de execuo Java (JVM + bibliotecas) Serve para executar as aplicaes Java

JDK

Java Development Kit Contm o JRE + Ferramentas de Desenvolvimento (Compilador por exemplo)

Introduo
Primeiro Programa
Baixar e instalar o JDK
o

http://java.sun.com/javase/downloads/widget/jdk6.jsp

Criar um arquivo texto com o contedo abaixo e salvar como PrimeiraClasse.java:

public class PrimeiraClasse {

public static void main(String[ ] args) {


System.out.println("Ol Mundo");

}
}

Introduo
Primeiro Programa
Criar uma varivel de ambiente chamada JAVA_HOME com o diretrio de instalao do jdk
Adicionar ao PATH do sistema o valor %JAVA_HOME%/bin

Compilar a classe utilizando o seguinte comando no console:


o

javac PrimeiraClasse.java

Executar a classe utilizando o seguinte comando:


o

java PrimeiraClasse

Introduo
Primeiro Programa - Explicao
public class PrimeiraClasse { public static void main(String[ ] args) { System.out.println("Ol Mundo"); } }

Delimitador da classe

Nome classe

Estamos declarando uma classe

Indica que a classe pblica

Introduo
Primeiro Programa - Explicao
public class PrimeiraClasse { public static void main(String[ ] args) { System.out.println("Ol Mundo"); } }

Mtodo main: mtodo especial que indica a porta de entrada da classe quando ela chamada pela JVM.

Introduo
Primeiro Programa - Explicao
public class PrimeiraClasse { public static void main(String[ ] args) { System.out.println("Ol Mundo") ; } }

Indica o final da instruo.

Instruo que escreve algo na sada padro (console)

String que ser exibida (parmetro para o mtodo println)

Estrutura do fonte

Estrutura do Fonte

Arquivo Fonte
Classe Java

Os arquivos fonte possuem extenso .java Cada arquivo fonte deve possuir apenas uma classe pblica
A classe pblica deve possuir o mesmo nome do arquivo fonte:
o

mtodo 1

mtodo 2

O arquivo fonte Pessoa.java deve possuir uma classe chamada Pessoa

Estrutura do Fonte
Java case sensitive
o

Casa diferente de casa

Trabalha apenas com classes


o

No programao estruturada

Toda linha termina termina com um ponto-e-vrgula ( ; )

Os blocos so delimitados por chaves ( { } )

Os comentrios podem ser de uma linha ou de mltiplas linhas:


1 linha: Mltiplas linhas:
/* Comentrio */ int i; // Comentrio Incio do Comentrio Final do Comentrio Este trecho no faz parte do comentrio

Pacotes

Pacotes

Possibilitam a organizao das classes Possibilitam a existncia de mais de uma classe com o mesmo nome O pacote representa a estrutura de diretrios onde a classe gerada Exemplos:
Uma classe com o pacote
br.com.parallel.cursos.javabasico br/com/parallel/cursos/javabasico

Est situada, dentro da rvore de diretrios, em:

Pacotes

Declarando o pacote
A definio de pacote deve ser a primeira instruo de uma classe e determinada pela palavra-chave package:
package br.com.parallel.cursos.javabasico

public class ClasseTeste { () }

Pacotes

Utilizando classes de outro pacote


Para utilizar uma classe que est em outro pacote, temos que importar a classe com a instruo import. As importaes devem ser feitas aps a declarao de package e antes do incio da classe:
package br.com.parallel.cursos.javabasico.testes import br.com.parallel.cursos.javabasico.ClasseTeste; public class OutraClasseTeste { () }

package br.com.parallel.cursos.javabasico.testes import br.com.parallel.cursos.javabasico.*; public class OutraClasseTeste { () }

Importa todas as classes do pacote

Importa somente a classe especificada

Declarao de variveis

Declarao de variveis
As variveis devem ter um tipo e um nome:
o TipoDaVariavel nomeDaVariavel
Ex: int i;

As variveis podem ser de tipo primitivo ou complexo (Classes) O nome da varivel:


o No pode ser nenhuma palavra reservada.
Deve comear com letra, "$" ou "_

Declarao de variveis
Palavras Reservadas
Modificadores de acesso
private, public, protected

Modificadores de classes, variveis ou mtodos


abstract, class, extends, final, implements, interface, native, new, static, strictfp, synchronized, transient, volatile

Controle de fluxo dentro de um bloco de cdigo


break, case, continue, default, do, else, for, if, instanceof, return, switch, while

Tratamento de erros
assert, catch, finally, throw, throws, try

Paccotes
import, package

Declarao de variveis
Palavras Reservadas
Tipos primitivos
boolean, byte, char, double, float, int, long, short

Variveis de referncia

super, this

Retorno de mtodo
void

Palavras reservadas no utililzadas


const, goto

Literais reservados
null, true, false

Declarao de variveis
Podem ser inicializadas na declarao
o Ex: int i = 1;

Podem existir declaraes mltiplas:


o Ex: int i, j; o Ex: int i = 1; j = 2;
Uma varivel pode ser declarada a qualquer tempo. No h uma regio no fonte especfico para declarao de variveis. Uma varivel s est disponvel aps sua declarao:
int i = 2;
j = 3; // ERRO!! j ainda no existe!!!

int j = 4;
j = 3; // OK!! j agora existe!!

Declarao de variveis
Tipos primitivos:
o
o o o

numricos

byte, short, int e long float, double

ponto flutuante
caracteres
char

booleanos
Boolean

Tamanhos
o o o o o

1 bit - boolean 1 byte - byte 2 bytes - short, char 4 bytes - int, float 8 bytes - long, double

Declarao de variveis
Casting
o

No possvel atribuir um valor a uma varivel maior do que ela comporta. Ex: double > int:
double d = 1; int i = d;

Ocorre erro de compilao pois uma varivel do tipo double no cabe numa varivel do tipo int. O contrrio no daria erro (cast implcito):
int i = 1; double d = i;

Para fazer uma converso de um tipo menor para um tipo maior, preciso fazer um cast explcito:
double d = 1; int i = (int) d;

Operadores e Controle de Fluxo

Operadores
Operadores bsicos
o o o o o o

. Referncia a mtodo ou atributo de um objeto , Separador de identificadores ; Finalizador de declaraes e comandos [ ] Declarador de arrays e delimitador de ndices { } Separador de blocos ( ) Separador de parmetros

Operadores lgicos

>, >=, <, <=, ==, ! (negao), != (diferente) &&, || + (adio e concatenar strings), -, *, /, % (resto da diviso), = (atribuio)

Operadores binrios

Operadores
Operadores unrios
o
o o o o o o

++ Incremento
o

i++ igual a i = i + 1

-+= -= *= /= %=

Decremento Combinao de soma e atribuio Combinao de subtrao e atribuio Combinao de multiplicao e atribuio Combinao de diviso e atribuio Combinao de mdulo e atribuio

Operadores ternrios
?:
i == 5 ? i 5 : i no 5

Alternativa para o ifelse


if (i == 5) { i 5 } else { i no 5 }

igual a:

Operadores
Outros operadores
o o

instanceof Verifica se um objeto de determinado tipo new Cria uma nova instncia de uma classe

Precedncia de operadores
.[]() ++ -- ! Instanceof new */% + < > <= >= == != && || ?: = += -= *= /= %=

Controle de Fluxo
Instruo if
o

Sintaxe bsica:
if (condio) { cdigo; }

Retorna true ou false

Executado quando a condio for true

Se houver apenas um comando dentro do bloco if, as chaves so opcionais:


if (condio) cdigo;

if (i > 2) { System.out.println(valor de i:); System.out.println(i); }

if (i > 2) System.out.println(valor de i:); System.out.println(i);

if (i > 2) System.out.println(valor de i:); System.out.println(i);

if (i > 2) { System.out.println(valor de i:); } System.out.println(i);

Controle de Fluxo
Instruo if / else
o

Sintaxe bsica:
if (condio) { cdigo; } else { cdigo; }

Executado quando a condio for true

Executado quando a condio for false

if (condio) cdigo; else cdigo;

if (teste == true) { System.out.println(Teste OK); } else { System.out.println(Teste Falhou); }

Controle de Fluxo
Instruo switch
o

Sintaxe bsica:
switch (expresso) { case constante1: comandos; break; case constante2: comandos; break; default: comandos; }

Se o valor da expresso for igual ao valor da alguma constante definido na clusula case, o bloco contido na clusula case ser executado. o O bloco s para de ser executado ao encontrar o comando break. o Se o valor da expresso no for igual ao valor de nenhuma constante, o bloco default ser executado.
o

Controle de Fluxo
Instruo switch
o

Exemplo:
switch (valor) { case 5: System.out.println(O nmero 5);

break; case 6: case 7:


System.out.println(O nmero 6 ou 7);

break; default:
System.out.println(O nmero no 5, 6 ou 7); }

Controle de Fluxo
Instruo while
o o

uma estrutura de repetio Sintaxe bsica:


while(condio { comandos; }

Condio Bloco de cdigo que indica se o loop ser executado. Deve ser uma expresso que resulte um valor booleano. Este bloco avaliado a cada iterao do loop para verificar se haver uma prxima iterao.

Exs:
while(quadrado == true) { area = lado x lado; System.out.println(area); } while(quadrado == true) area = lado x lado; int i = 0; while(i< 5) { System.out.println(i); i++; }

Controle de Fluxo
Instruo for
o o

uma estrutura de repetio Sintaxe bsica:


for (inicializao; condio; incremento) { comandos; }

Inicializao Bloco de cdigo que ser executado no incio do loop para a inicializao de variveis. o Condio Bloco de cdigo que indica se o loop ser executado. Deve ser uma expresso que resulte um valor booleano. Este bloco avaliado a cada iterao do loop para verificar se haver uma prxima iterao. o Incremento Bloco de cdigo que ser executado no final de cada iterao. Exs: int i = 0;
o
for (int i = 0; i < 5; i++) { System.out.println(i); } while(i< 5) { System.out.println(i); i++; }

Controle de Fluxo
Instruo for
o o

uma estrutura de repetio Sintaxe bsica:


for (inicializao; condio; incremento) { comandos; }

Inicializao, Condio e Incremento so opcionais!!! Ex:


o
for ( ; ; ) { System.out.println(Loop INFINITO!!!); }

Controle de Fluxo
Instruo for
o o

uma estrutura de repetio Sintaxe bsica 2:


for (inicializao : array ou coleo) { comandos; }

Inicializao Bloco onde ocorre a declarao de uma varivel que representar cada elemento do array ou coleo a cada loop. o Array ou coleo Array ou coleo que ser percorrido. Ex:
o
for ( int idade: idades ) { System.out.println(idade); }

Controle de Fluxo
Instruo dowhile
o o o

uma estrutura de repetio O loop executado pelo menos 1 vez!! Sintaxe bsica:
do { comandos; } while(condio );

Ex:
int i = 0; do { System.out.println(i); i++; } while(i< 5) ; int i = 0; while(i< 5) { System.out.println(i); i++; }

for (int i = 0; i < 5; i++) { System.out.println(i); }

Controle de Fluxo
break
Faz com que o loop pare imediatamente e o fluxo da aplicao v para a instruo logo aps o loop Ex:
o
boolean achouNumeroPar = false; for (int i = 1; i <= 100; i++) { if (i % 2 == 0) { achouNumeroPar = true; break; } } if (achouNumeroPar) { System.out.println(Achou nmero par); } else { System.out.println(No achou nmero par); }

Controle de Fluxo
continue
o

Interrompe a iterao atual e faz com que o loop v para a prxima iterao.

Ex:
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) { continue; } System.out.println(i);

Controle de Fluxo
Variveis dentro de um bloco
o o

As variveis declaradas dentro de um bloco no esto disponveis fora daquele bloco. O escopo dela o bloco onde ela foi declarada.
String k = ;

Ex:

for (int i = 1; i <= 10; i++) { boolean j = true; System.out.println(i); }


System.out.println(i); // Erro!!! i no est disponvel!! System.out.println(j); // Erro!!! j no est disponvel!! System.out.println(k); // OK!!! k est disponvel!!

Strings e Arrays

Strings
uma classe java que representa uma sequncia de caracteres
Inicializao:
String nome = Fulano; String nome = new String();

Concatenao de Strings
nome = Fulano + de + Tal ;

Comparao de Strings
nome.equals(Fulano); nome.equals(nome2);

Tamanho da String
nome.length()

Arrays
Declarao
o o o

int[ ] valores; int valores[ ]; int valores[ ] [ ]; valores = new int[ ]; valores = new int[ ] [ ]; valores = new int[ 10 ] [ ];

Inicializao
o o o

Declarao e inicializao o int[] valores = new {2, 5, 10, 7};

Arrays
Atribuindo valores
o o o o o

O ndice comea com zero

int[ ] valores = new int [ 3 ]; valores[0] = 1; // posio 1 valores[1] = 3; // posio 2 valores[2] = 5; // posio 3 valores[3] = 7; // Erro!!! O array foi instanciado com 3 posies!!!!
No um mtodo!!!

Tamanho do array
valores.length

Percorrendo um array
for (int i = 0; i < valores.length; i++) { } Ou for (int i = 0: valores) { }

Classes

Classes
Declarao
o <Classe> variavel;
Ex: String nome
Representa uma sequncia de caracteres

Instanciao
o variavel = new <Construtor>;
Ex: nome = new String();

Construtor

Operador new cria uma instncia de uma classe. O operador new chama um construtor da classe para instanci-la. Declarao e instanciao
o <Classe> variavel = new <Construtor>;
Ex: String nome = new String();

Classes
Uma varivel que representa um objeto, na verdade guarda uma referncia para o objeto;
Ex:
Pessoa p1, p2, p3; p1 = new Pessoa(); p3 = new Pessoa(); p2 = p1; p1 = p3; System.out.println(p1 == p2); System.out.println(p1 == p3); System.out.println(p2 == p3);

p1

p3

p1

p2
p3 p1

p2 p3

Classes

Classes
Sintaxe:
<modificador> <NomeDaClasse> { <corpo da classe> }

1. Construtores
Mtodos especiais que so chamados na inicializao da classe. Devem ter o mesmo nome da classe.

2. Atributos
Variveis pertencentes s classes. Representam as caractersticas da classe.

3. Mtodos
Funes que representam o comportamento da classe. Nos mtodos, esto implementados o que a classe faz.

Classes
1. Construtores
Mtodos especiais que so chamados na inicializao da classe.

Devem ter o mesmo nome da classe. Toda classe deve ter pelo menos um construtor. Quando no declaramos um construtor, um construtor default utilizado.

Classes
1. Construtores
Sintaxe:
[<modificador>] <nomeDaClasse> ([<ListaDeArgumentos>]) { <corpo do construtor> } Construtor padro criado pelo compilador

quando no informamos nenhum

Exs:
public class Pessoa { public Pessoa() { }

}
public class Pessoa{

public Pessoa(String nome) { System.out.println(O nome da pessoa + nome); } }

Classes
2. Atributos
Variveis pertencentes s classes. Representam as caractersticas da classe. Sintaxe:
[<modificador>] <TipoDeDado> <nome> [ = <valor inicial>];

Exs:
public class Casa {
public String cor; public int valor;

Declarando atributos
public class Construtora{

Acessando atributos

public Casa(String pCor) { cor = pCor; valor = 60000; } }

public static void main(String[ ] args) { Casa casa = new Casa(verde); casa.valor = 70000; } }

Classes
3. Mtodos
Funes que representam o comportamento da classe. Nos mtodos, esto implementados o que a classe faz. Sintaxe:
<modificador> <TipoDeRetorno> <nome> ([<argumentos>]) { <corpo do mtodo> }

Classes
3. Mtodos
Exs:
Declarando mtodos
public class Programa{ public static void main(String[ ] args) { Pessoa pessoa = new Pessoa(fulano, 20); pessoa.nome= jose; pessoa. informarNome(joao); String nome= pessoa.obterNome(); System.out.println(O nome da pessoa + nome); } }

Acessando mtodos

public class Pessoa{

public String nome; public int idade;


public Casa(String pNome, int pIdade) { nome= pNome; idade= pIdade; } public String obterNome() { return nome; } public void informarNome(String pNome { nome = pNome; } }

Classes

Mtodos e atributos estticos


Indicado pela palavra static. Mtodo ou atributo que pertence classe, e no instancia public class Principal{ Ex:
public static void main(String[ ] args) { public static String pais; public int idade; public static getPais() { return pais; } }

public class Pessoa {

Pessoa pessoa1 = new Pessoa(); pessoa1.pais= Brasil; pessoa1.idade = 20; Pessoa pessoa2 = new Pessoa(); pessoa2.pais = China; pessoa2.idade = 30; Pessoa.pais = Russia; System.out.println(pessoa1.pais + - + pessoa1.idade); System.out.println(pessoa2.pais + - + pessoa2.idade); System.out.println(Pessoa.getPais()); }
}

Russia 20 Russia 30 Russia

Classes
Classes Wrapper (Box)
o o

Classes que embrulham o tipo primitivo em um Objeto. Classes wrapper:


o o o o o o o o

Byte Short Integer Long Character Double Float Boolean

Autoboxing
o

Ato de transformar um tipo primitivo em uma classe automaticamente o Integer x = 5; o int y = x;

Herana

Herana
Uma classe construda a partir de outra (classe pai ou super classe). A classe filha (ou subclasse) herda os atributos, mtodos e construtores da classe pai.

A classe filha pode redefinir os elementos da classe pai.


A classe filha pode definir novos elementos.

Herana
Para uma classe herda de outra atravs da palavra-chave extends. Sintaxe:
<modificador> <NomeDaClasse> extends <ClassePai> { } Ex:
public class Funcionario extends Pessoa { public static void main(String[ ] args) { public String cracha; public getCracha() { return cracha; } } } }

public class Programa{

Funcionario func = new Funcionario(); func.nome= jose; func.matricula = 000001;

Herana

Referncias super e this


A palavra-chave this serve para referenciar o objeto atual.
public class Pessoa { public String nome; public int idade; public Pessoa(String nome) { this.nome = nome; } public Pessoa(String nome, int idade) { this(nome); this.idade = idade; } public String getNome() { return nome; } }

Chamando outro construtor da prpria classe

Herana
Referncias super e this
A palavra-chave super serve para referenciar o objeto pai.
public class Funcionario extends Pessoa {

public String cracha;


public Funcionario(nome, cracha) { super(nome); this.cracha = cracha; }

Chamando construtor do pai

Sobrescrita do mtodo do pai


}

public getNome() { return super.getNome() + cracha; }

Chamando mtodo do pai

Herana
Classes abstratas
No podem ser instanciadas Podem ter mtodos abstratos
Classes no abstratas (concretas) que herdam de classes abstratas devem implementar todos os mtodos abstratos Os mtodos abstratos no tem corpo.

Os mtodos e as classes abstratas so identificados pela palavra-chave abstract Exemplo:


public abstract class Funcionario {

public abstract int getBonus();


} public class Gerente extends Funcionario{ public class Diretor extends Funcionario{

public int getBonus() { return 1000; } } }

public int getBonus() { return 10000; }

Herana

Classes finais
So classes que no podem ser extendidas So identificadas pela palavra final
Exemplo:
public final class Funcionario { public int getBonus() { return 500; } }

Erro! No pode herdar uma classe final

public class Gerente extends Funcionario{

public int getBonus() { return 1000; } }

Herana

Converso
As converses (castings) so permitidas em classes dentro da mesma rvore hierrquica. Para um atributo, pode-se declarar uma classe e instanciar uma classe-filha. Exemplo:
Pessoa

Funcionario FuncionarioPadrao Gerente Diretor

Herana

Converso
As converses (castings) so permitidas em classes dentro da mesma rvore hierrquica. Para um atributo, pode-se declarar uma classe e instanciar uma classe-filha. Exemplo:
public class Teste { public static void main(String[ ] args) { Funcionario func, func1, func2; func = Classe.getFuncionario(); System.out.println(func.getBonus()); func1 = new Gerente(); func2 = func1; System.out.println( ((Gerente) func2) .getBonus());

}
}

Modificadores de acesso

Modificadores de acesso

Modificadores para classes


public
Faz com que a classe seja acessvel por qualquer outra classe.

default
Faz com que a classe seja acessvel por qualquer outra classe dentro do mesmo pacote.
Faz com que a classe no possa ser instanciada e permite que ela tenha mtodos abstratos Faz com que a classe no possa ser herdada.

abstract

final

Modificadores de acesso

Modificadores para mtodos


public
Faz com que o mtodo seja acessvel por qualquer outra classe (desde que a prpria classe esteja acessvel). Faz com que o mtodo seja acessvel para as subclasses ou para as classes do mesmo pacote. Faz com que o mtodo seja acessvel por qualquer outra classe dentro do mesmo pacote.

protected
default private
Faz com que somente a classe que contm o mtodo possa acess-lo.

Modificadores de acesso

Modificadores para mtodos


abstract
Um mtodo abstrato no precisa ser implementado. Somente classes abstratas podem conter mtodos abstratos. Faz com que o mtodo no possa ser sobrescrito. Define um mtodo de classe. Este mtodo pode ser executado independente de instncia da classe. Um mtodo esttico s pode acessar variveis de instncia estticas. Indica que a implementao do mtodo no foi escrito em Java, mas em outra linguagem.

final static

native

Modificadores de acesso

Modificadores para variveis de instncia


public
Faz com que o atributo seja acessvel por qualquer outra classe (desde que a prpria classe esteja acessvel). Faz com que o atributo seja acessvel para as subclasses ou para as classes do mesmo pacote. Faz com que o atributo seja acessvel por qualquer outra classe dentro do mesmo pacote.

protected
default private
Faz com que somente a classe que contm o atributo possa acess-lo.

Modificadores de acesso

Modificadores para variveis de instncia


final
Faz com que o valor do atributo no possa ser modificado. o nico modificador que pode ser utilizado em variveis locais.

static
Define um atributo de classe. Este atributo pode ser acessado independente de instncia da classe.

Interfaces

Interfaces
Interface uma espcie de contrato onde so informados mtodos que devero existir na classe que implement-la. Contm apenas a especificao da funcionalidade que a classe deve conter, sem dizer como esta funcionalidade deve ser implementada. Uma classe pode implementar mais de uma interface.

Interfaces
Sintaxe
[public] interface <nome da interface> { <corpo> }

public interface AreaCalculavel{

Ex:
}

double calculaArea();

public class Circulo implements AreaCalculavel { public class Quadrado implements AreaCalculavel { private int lado; public Quadrado(int lado) { this.lado = lado; } public double calculaArea() { return lado * lado; } } }

public static final doublePI = 2.1416; private int raio;


public Circulo(int raio) { this.raio = raio; } public double calculaArea() { return PI *raio * raio; }

Interfaces
Exs:
public class Teste { public static void main(String[ ] args) { AreaCalculavel forma = Objeto.getForma(); double area = forma.calculaArea(); }

} public class Cubo implements AreaCalculavel, VolumeCalculavel {


private int lado;

public Cubo(int lado) { this.lado = lado; } public double calculaArea() { return 6 * lado * lado; } public double calculaVolume() { return lado*lado*lado; } }

Interfaces

Todos os mtodos de uma interface so implicitamente abstract e public.


Todos os atributos de uma interface so implicitamente public, static e final.

Uma interface pode herdar outra interface:


public interface VolumeCalculavel extends AreaCalculavel {
double calculaVolume();

Excees

Excees

Excees so situaes que no esto no fluxo normal do sistema Representam algo estranho ou inesperado na aplicao.
Todas as excees em java so subclasses de Throwable.

Existem vrias excees pr-definidas e que podem ocorrer em tempo de execuo (Runtime):
ArrayIndexOutOfBoundsException ArithmeticException NullPointerException

Excees
Ex:
public class Teste { public static void main(String[ ] args) { Cubo cubo = GeradorCubos.getCubo(); cubo.calculaVolume(); } }

Se cubo for null, uma exceo do tipo NullPointerException ser lanada

public class Teste {


public static void main(String[ ] args) { int divisao = 10 / 0; } }

Excees
A deteco e controle de excees so feitas atravs da estrutura try-catch-finally:
try { <bloco de comandos que podem causar excees> } catch (ClasseDeExcecao1 exception) { <bloco que trata a exceo do tipo ClasseDeExcecao1> } catch (ClasseDeExcecao2 exception) { <bloco que trata a exceo do tipo ClasseDeExcecao2> () } finally { <bloco que ser sempre executado tendo havido exceo ou no> }
Se no houver exceo, o bloco try ser todo executado Se houver alguma exceo, o fluxo de execuo do programa ser interrompido na linha em que ocorreu a exceo dentro do bloco try. Em seguida, o fluxo segue para a clusula catch que captura o tipo de exceo lanada, onde ser dado o tratamento adequado para a exceo.

Excees

Se ocorrer alguma exceo no prevista por nenhum bloco catch, a execuo do mtodo ser interrompida.
O bloco try pode vir somente com blocos catch ou somente com o bloco finally, ou com os dois:

try {
// tenta fazer alguma coisa } catch (NullPointerException e) { // trata a exceo } try { // tenta fazer alguma coisa } finally { // sempre executa esta parte do cdigo }

Excees
Ex:
public class Teste { public static void main(String[ ] args) { try { Cubo cubo = GeradorCubos.getCubo(); cubo.calculaVolume(); } catch (NullPointerException e) { System.out.println(No tem cubo!!!); } } }

Excees

Existem excees para as quais somos obrigados a dar um tratamento (excees checked). O compilador acusa erro se o cdigo possuir alguma exceo checked que no foi tratada.
O tratamento consiste em:
1. 2. Declar-la num bloco catch. Informar ao compilador que o mtodo no tem condies de tratar a exceo e esta deve ser lanada para o mtodo chamador.

Excees
throws
Indica as excees que podem ser levantadas no mtodo e que o mesmo no tem condies de tratar. Excees de runtime (excees filhas de RuntimeException) no so checked. Ex:

public class Teste {

public void leArquivo() {


try { public class Teste { public void leArquivo() throws FileNotFoundException { new java.io.FileInputStream(arquivo.txt); } }

new java.io.FileInputStream(arquivo.txt);
} catch (FileNotFoundException e) {

e.printStackTrace();
}

}
}

Excees
Uma parte da rvore de java.lang.Throwable:

Excees

Criando sua prpria exceo


Basta criar uma classe java que herde de alguma classe da rvore de Throwable. Geralmente herda-se de java.lang.Exception, tornando assim, uma exceo checked.
public class LadoNegativoException extends Exception {
private int lado;

public LadoNegativoException (int lado){ super(A figura possui lado negativo: + lado); this.lado = lado; } }

Excees
Levantando uma exceo
Para levantar uma exceo, utiliza-se a palavra-chave throw; Sintaxe:
throw <instancia da exceo levantada>
public class Quadrado{
public int lado;

public double calculaArea() throws LadoNegativoException {


if (lado < 0) { throw new LadoNegativoException (); } else { return lado*lado; } } }

Colees

Colees

Estrutura de dados que armazenam um conjunto de objetos Pacote: java.util.*; Principais classes: ArrayList e HashMap
ArrayList
Array redimensionvel Principais mtodos:
add, remove, clear, size, isEmpty, get, set.

HashMap
Armazena pares chave-valor Principais mtodos:
put, remove, clear, size, isEmpty, get, set,

Colees
Exs:
public class Teste { public static void main(String[ ] args) { ArrayList<String> list = new ArrayList<String>(); list.add(Fulano); list.add(Sicrano); list.add(Beltrano); for (String elemento: list) { System.out.println(elemento); } } }

Colees
Exs:
public class Teste { public static void main(String[ ] args) { HashMap<Integer, String> map = new HashMap<Integer, String>(); map.put(11, Fulano); map.put(4, Sicrano); map.put(2, Beltrano); System.out.println(map.size()); } }

Javadoc

Javadoc

Documentao das classes Diz quais classes existem na biblioteca, quais mtodos cada classe tem, seus parmetros, etc.
Link para o javadoc do JSE 6:
http://java.sun.com/javase/6/docs/api/

Para gerar uma documentao javadoc, utilizamos a notao /** para iniciar o trecho onde estar a documentao e */ para indicar o trmino.

Javadoc
Exemplo:
/** * Esta classe representa um Diretor * @author Luciano * */ public class Diretor extends Funcionario {
/** * Explicao do atributo */ public String nome; /** * Explicao do mtodo * @param arg Explicao do parmetro * @return Explicao do retorno * @throws TesteRuntimeException Explicao da exceo */ public String metodo(String arg) throws TesteRuntimeException { throw new TesteRuntimeException(); } }

Material de Estudo

Material de Estudo Livros


o o

Harvey M. Deitel; Java: Como Programar Use a Cabea! Java; Kathy Sierra http://java.sun.com http://www.guj.com.br/

Sites
o o

Potrebbero piacerti anche