Você está na página 1de 41

Universo Dicas CGU 2012 Analista de Desenvolvimento

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com 1

Galxia Desenvolvimento de Sistemas


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com 2

Constelao Linguagem Java


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com 3

Bytecode
Mquina Virtual JRE zxzxxzxzxxzxzxzx zxzxxzxzxxzxzxzx zxzxxzxzxxzxzxzx zxzxxzxzxxzxzxzx Bytecode zxzxxzxzxxzxzxzx zxzxxzxzxxzxzxzx zxzxxzxzxxzxzxzx zxzxxzxzxxzxzxzx

JDK public class Classe { private String nome; ... ... }

Mquina Virtual JRE

Mquina Virtual JRE


4

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tipos, valores e variveis

A linguagem de programao Java uma linguagem:

De tipagem esttica

Cada varivel e cada expresso possuem um tipo que conhecido em tempo de compilao Os tipos:

Fortemente tipada

Limitam os valores que;

Uma varivel pode receber Uma expresso pode produzir Limitam as operaes apoiadas sobre esses valores Determinar o significado das operaes

Tipagem esttica forte ajuda a detectar erros em tempo de compilao

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tipos, valores e variveis

H duas categorias de tipos na linguagem Java:

Tipos primitivos

Inicializados por 0 ou false Valor padro null

Tipos por referncia

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tipos, valores e variveis

Tipos primitivos

Tipos numricos

Tipos integrais

byte int

short long char

Tipos de ponto flutuante


float

Tipo booleano

double

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tipos, valores e variveis

Tipos primitivos
Tipo byte short int long float Tamanho em bytes 1 2 4 8 4 8 1 2 Faixa Inteiro: -128 a 127 Inteiro: -32.768 a 32.767 Inteiro: -2.147.483.648 a 2.147.483.647 Inteiro: -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 Ponto flutuante: +/-3.4E-38 a +/-3.4E+38 Ponto flutuante: +/-1.7E-308 a +/-1.7E+308 true ou false Caracteres UNICODE Valor padro 0 0 0 0L 0.0f 0.0d false 'u\0000'
8

double boolean char

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tipos, valores e variveis

Tipos primitivos

Importante

Os valores padres so para variveis de instncias As variveis locais necessitam de valores para sua inicializao

Se no fizermos isso, ocorrer um erro de compilao

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Castings possveis

Impl. significa que o cast implcito e automtico

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

10

Variveis

Tambm so chamadas de campos Para Java, temos categorias de variveis:

Variveis de instncia

Campos no estticos So variveis cujas informaes so especficas de cada objeto de uma classe Campos estticos So variveis cujas informaes so especficas para a classe Variveis de escopo de mtodos ou de controle de fluxos Valores passados para mtodos
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com 11

Variveis de classe

Variveis locais

Parmetros

Variveis

Regras de nomeao de variveis e constantes

Os nomes das variveis:


So case-sensitive So sequncias de tamanho ilimitado contendo:


Letras Unicode Dgitos Smbolo de porcento ($) Underscore (_) Letra

Podem iniciar com:


Smbolo de porcento ($) Underscore (_)

No podem:

Ter espao em branco

Ser palavra-chave ou palavra reservada


12

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Variveis

Lista de palavras-chave ou palavras reservadas do Java:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keyw ords.html Iniciamos normalmente os nomes de variveis com letra Convm no utilizarmos:

Boas prticas na nomeao de variveis e constantes


No incio de nomes:

Smbolo de porcento ($) Underscore (_)

Abreviaturas ao criar os nomes

Com isso, o cdigo ser mais fcil de ser:


Compreendido Mantido

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

13

Variveis

Boas prticas na nomeao de variveis e constantes

Convm que, para variveis:

Se o nome for composto de apenas uma palavra:

Todas as letras do nome sejam em minsculas

Se for composto de mais de uma:

Exemplo: private String nome

A primeira letra da palavra subsequente seja maiscula

Convm que, para constantes:

Exemplo: private String primeiroNome

Se o nome for composto de apenas uma palavra:


Todas as letras do nome sejam em maisculas

Se for composto de mais de uma:

Exemplo: public static String NOME

A primeira letra da palavra subsequente seja antecedida de underscore

Exemplo: public static String PRIMEIRO_NOME

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

14

Operadores
Tipo Aritmtico Atribuio Relacional Igualdade Lgico Bitwise Postfix Unrio Shift aritmtico Shift lgico Operadores +, -, *, /, % =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= <, <=, >, >=, instanceof ==, != &&, || &, I, ^ var++, var-++var, --var, +var, -var, ~, ! <<, >> >>>
15

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Operadores

Operadores de shift

Operador <<

Desloca bits para a esquerda Completa os espaos deixados na direita com 0 Desloca bits para a direita Completa os espaos deixados na esquerda com 0 Desloca bits para a direita Completa os espaos deixados na esquerda com o bit de sinal (bit mais significativo)

Operador >>>

Operador >>

Se o bit de sinal for 1 preenche os espaos com 1 Caso contrrio preenche os espaos com 0

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

16

Controle de fluxo

Estruturas condicionais

if-then if-then-else switch while do while for

Estruturas de repetio

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

17

Tratamento de excees e erros

Sempre que um mtodo de alguma classe passvel de causar algum erro, ento, podemos usar o try

Tudo que estiver dentro do bloco try ser executado at que alguma exceo seja lanada

Quando uma exceo lanada, ela sempre deve ser capturada pelo bloco catch Um bloco try pode possuir vrios blocos de catch

Dependendo do nmero de excees que podem ser lanadas por uma classe ou mtodo Ele executa seu bloco de dados mesmo que uma exceo seja lanada
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com 18

finally o trecho de cdigo final

Tratamento de excees e erros

try {

// cdigo a ser executado // tratamento da exceo // cdigo a ser executado mesmo que uma exceo seja lanada

} catch (ClasseDeExceo instnciaDaExceo) {

} finally {

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

19

Classes e objetos
Modificador Classe Subclasse Pacote Todos

Public UML Smbolo + Public Java Protected UML Smbolo # Protected Java Private UML Smbolo Private Java Package UML Smbolo ~ Default Java


20

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Classes e objetos
Ordem de visibilidade na UML (do mais restrito para o mais liberal)

Private -

Package ~

Protected #

Public +

Ordem de visibilidade na Java (do mais restrito para o mais liberal)

Private

Default

Protected

Public

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

21

Classes e objetos

Tipos enumerados

um tipo especial de classe que contm um conjunto fixo de constantes Exemplos:

Pontos cardeais

Dias da semana

NORTE, SUL, LESTE, OESTE DOMINGO, SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA, SABADO

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

22

Classes e objetos

Annotations

Informao para o compilador

Podem ser utilizadas pelo compilador para


Detectar erros

Processamento em tempo de compilao e de implantao

Suprimir avisos

Ferramentas de software podem processar informaes de uma annotation para gerar


Cdigo

Arquivos XML

Processamento de tempo de execuo

Assim por diante

Algumas annotations esto disponveis para ser examinadas em tempo de execuo


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com 23

Classes e objetos

Annotations

Exemplo

@Override void metodoSuperClasse() { }

Interfaces

No so consideradas classes e sim entidades No possuem implementao, apenas assinatura

Apenas a definio dos seus mtodos sem o corpo.

Todos os mtodos so abstratos Seus mtodos so implicitamente pblicos e abstratos

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

24

Classes e objetos

Interfaces

No h como

Criar instncias delas Criar um Construtor

Funcionam como um tipo de contrato, onde so especificados os atributos, mtodos e funes que as classes que implementem essa interface so obrigadas a implementar. Java no suporta heranas mltiplas

As interfaces so usadas para implement-las

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

25

Classes e objetos

Classes abstratas

Devem conter pelo menos um mtodo abstrato No h como criar instncias delas So usada apenas para ser herdada Uma grande vantagem que fora a hierarquia para todas as sub-classes um tipo de contrato que faz com que as sub-classes contemplem as mesmas hierarquias e/ou padres

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

26

Classes e objetos

Modificador final

Mtodos final no podem ser sobrescritos por subclasses Classes final no podem ser ter subclasses Esttico

Polimorfismo

Mtodos sobrecarregados (overloading) Mtodo sobre-escritos (overriding)

Dinmico

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

27

Classes e objetos

Polimorfismo

Esttico

Mtodos sobrecarregados (overloading)

Quando a classe possui mtodos com o mesmo nome, porm com argumentos diferentes

Dinmico

A deciso de qual mtodo chamar tomada em tempo de compilao, baseada nos argumentos que foram passados

Mtodo sobre-escritos (overriding)


Est associado com o conceito de herana Ocorre quando uma subclasse redefine um mtodo existente na superclasse

A deciso de qual mtodo executar tomada somente em tempo de execuo

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

28

Generics

Serve para determinar para o compilador qual tipo de classe deve ser interpretada

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

29

Generics

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

30

Generics

Java usa uma pequena conveno de nomenclatura para as letras de identificao de generics, sendo:

E - Elemento K - Chave N - Nmero T - Tipo V - Valor

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

31

Reflection

Com reflection, possvel:

Recuperar as classes dos objetos instanciados Examinar tipos e modificadores de classes Descobrir membros das classes Troubleshooting

Descreve os erros mais comuns encontrados ao utilizar classe

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

32

Reflection

Recuperar as classes dos objetos instanciados

Object.getClass()

Obtm uma classe de objeto instanciado Class c = objeto.getClass(); Obtm uma classe:

.class

Quando um tipo est disponvel, mas no h nenhuma instncia De um tipo primitivo

boolean buleano;

Class c = buleano.getClass(); // erro na compilao Class c = boolean.class;

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

33

Reflection

Recuperar as classes dos objetos instanciados

Class.forName()

Obtm uma classe quando o nome totalmente qualificado de dlea est disponvel No pode ser usado para tipos primitivos Class c = Class.forName("br.com.empresa.entidades.Pessoa"); Cada classe wrappers contm um campo chamado TYPE que igual Class para o tipo primitivo sendo empacotado (wrapped) Class c = Double.TYPE; Class c = Void.TYPE;

Campo TYPE para wrappers de tipos primitivos

Void.TYPE idntico ao void.class

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

34

Reflection

Recuperar as classes dos objetos instanciados

Mtodos que retornam classes

Class.getSuperclass()

Retorna a super classe de uma classe dada

Class.getClasses()

Class c = javax.swing.JButton.class.getSuperclass(); Retorna todas as classes pblicas, interfaces e enumeraes que so membros da classe, incluindo membros herdados Retorna todas as interfaces de classes e enums que so explicitamente declarados nesta classe

Class.getDeclaredClasses()

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

35

Reflection

Recuperar as classes dos objetos instanciados

Mtodos que retornam classes


Class.getDeclaringClass() java.lang.reflect.Field.getDeclaringClass() java.lang.reflect.Method.getDeclaringClass() java.lang.reflect.Constructor.getDeclaringClass()


Retornam a classe em que esses membros foram declarados

Class.getEnclosingClass()

Classes annimas no vai ter uma classe declarar, mas ter uma classe inclusora Retorna a classe imediatamente envolvente (enclosing) da classe

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

36

Reflection

Examinar tipos e modificadores de classes

Mtodos para localizar atributos


Lista de membros? Membros herdados? No Membros private? Sim

getDeclaredField()

No

getField()

No

Sim

No

getDeclaredFields()

Sim

No

Sim

getFields()

Sim

Sim

No

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

37

Reflection

Examinar tipos e modificadores de classes

Mtodos para localizar mtodos


Lista de membros? Membros herdados? No Membros private? Sim

getDeclaredMethod()

No

getMethod()

No

Sim

No

getDeclaredMethods()

Sim

No

Sim

getMethods()

Sim

Sim

No

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

38

Reflection

Examinar tipos e modificadores de classes

Mtodos para localizar construtores


Lista de membros? Membros herdados? Construtores no so herdados Construtores no so herdados Construtores no so herdados Construtores no so herdados Membros private? Sim

getDeclaredConstructor()

No

getConstructor()

No

No

getDeclaredConstructors()

Sim

Sim

getConstructors()

Sim

No

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

39

Thread

H duas formas de se criar uma thread em Java:

Cria-se um objeto que estende a classe Thread e sobrescreve-se o mtodo public void run() Implementa-se a interface Runnable Nova (criada) Executvel (em execuo) Bloqueado (suspensa) Encerrado (morta)

A execuo de uma thread pode passar por quatro estados:


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

40

Thread

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

41