Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
http://java.sun.com
Introduo
3 Verses:
1. JSE 2. JEE 3. JME
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
}
}
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
javac PrimeiraClasse.java
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
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") ; } }
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
Estrutura do Fonte
Java case sensitive
o
No programao estruturada
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
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
Pacotes
Declarao de variveis
Declarao de variveis
As variveis devem ter um tipo e um nome:
o TipoDaVariavel nomeDaVariavel
Ex: int i;
Declarao de variveis
Palavras Reservadas
Modificadores de acesso
private, public, protected
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
Literais reservados
null, true, false
Declarao de variveis
Podem ser inicializadas na declarao
o Ex: int i = 1;
int j = 4;
j = 3; // OK!! j agora existe!!
Declarao de variveis
Tipos primitivos:
o
o o o
numricos
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
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
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; }
Controle de Fluxo
Instruo if / else
o
Sintaxe bsica:
if (condio) { cdigo; } else { cdigo; }
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; default:
System.out.println(O nmero no 5, 6 ou 7); }
Controle de Fluxo
Instruo while
o 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.
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
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
Controle de Fluxo
Instruo for
o o
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++; }
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:
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
Arrays
Atribuindo valores
o o o o o
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
Exs:
public class Pessoa { public Pessoa() { }
}
public class Pessoa{
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 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
Classes
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()); }
}
Classes
Classes Wrapper (Box)
o o
Autoboxing
o
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.
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; } } } }
Herana
Herana
Referncias super e this
A palavra-chave super serve para referenciar o objeto pai.
public class Funcionario extends Pessoa {
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.
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; } }
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
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
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
protected
default private
Faz com que somente a classe que contm o mtodo possa acess-lo.
Modificadores de acesso
final static
native
Modificadores de acesso
protected
default private
Faz com que somente a classe que contm o atributo possa acess-lo.
Modificadores de acesso
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> }
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; } } }
Interfaces
Exs:
public class Teste { public static void main(String[ ] args) { AreaCalculavel forma = Objeto.getForma(); double area = forma.calculaArea(); }
public Cubo(int lado) { this.lado = lado; } public double calculaArea() { return 6 * lado * lado; } public double calculaVolume() { return lado*lado*lado; } }
Interfaces
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(); } }
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:
new java.io.FileInputStream(arquivo.txt);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
Excees
Uma parte da rvore de java.lang.Throwable:
Excees
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;
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
Harvey M. Deitel; Java: Como Programar Use a Cabea! Java; Kathy Sierra http://java.sun.com http://www.guj.com.br/
Sites
o o