Você está na página 1de 161

Universo

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

Galxia
JSE
Java Standard
Edition
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Constelao
Programao
orientada a objetos
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Parte I Introduo Programao Orientada a Objetos

Parte II Classes e objetos

Parte III Herana e interfaces

Parte IV Tipos enumerados e annotations

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

Tpicos

Parte I Introduo Programao Orientada a Objetos

Parte II Classes e objetos

Parte III Herana e interfaces

Parte IV Tipos enumerados e annotations

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

Parte II
Classes e objetos
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Desafios

Estrutura de uma classe em Java

Hora de praticar

Modificadores de nveis de acesso

Hora de praticar

Questes de concursos

Classes

Hora de praticar

Questes de concursos

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

Tpicos

Mtodos

Hora de praticar

Questes de concursos

Construtores

Questes de concursos

Palavra-chave this

Objetos

Hora de praticar

Questes de concursos

Passando valores para mtodos e construtores


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

Tpicos

Hora de praticar

Garbage collection e garbage collector

Questes de concursos

Respostas aos desafios

Referncias

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

Desafios

[RGA] Qual a estrutura de uma classe em Java?

[RGA] O que so modificadores de acesso?

[RGA] Quais so os dois nveis de controle de acesso?

[RGA] Uma classe default em um pacote 1 pode ser


visualizada por outra classe no pacote 2. [CERTO/ERRADO]
[RGA] O modificador de acesso default mais restritivo do o
modificador protected. [CERTO/ERRADO]
[RGA] Uma classe com o modificador final pode ser estendida.
[CERTO/ERRADO]
[RGA] Em Java, uma classe pode estender apenas uma
superclasse, porm pode implementar vrias interfaces.
[CERTO/ERRADO]
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

10

Desafios

[RGA] O que faz o modificador final a um mtodo? E o static?

[RGA] O que um mtodo sobrecarregado?

[RGA] O tipo de retorno dos mtodos considerado pelo


compilador para diferenciar mtodos. [CERTO/ERRADO]
[RGA] No se pode declarar dois mtodos com a mesma
assinatura. [CERTO/ERRADO]
[RGA] Para que serve o operador new?
[RGA] Se houver a declarao de pelo menos um construtor
para uma classe, o construtor padro no mais fornecido.
[CERTO/ERRADO]

[RGA] Construtores podem chamar outros?

[RGA] Para que serve o this?


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

11

Desafios

[RGA] Quais so as fases da criao de um objeto?


[RGA] Uma varivel-objeto contm um objeto.
[CERTO/ERRADO]
[RGA] Na linguagem Java, toda passagem de parmetros
acontece por valor. [CERTO/ERRADO]

[RGA] O que o garbage collection?

[RGA] Quando um objeto elegvel para coleta de lixo?

[RGA] O que faz o garbage collector?

[RGA] H um momento pr-determinado do garbage collector


agir. [CERTO/ERRADO]

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

12

Estrutura de uma classe em Java

Estrutura:

// Nome da classe.

public class Classe {

// Zero ou mais atributos.

public String nome;

// Zero ou mais construtores.

public Classe(String nome){

// Zero ou mais mtodos.

public String getNome() {

this.nome = nome;

return this.nome;

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

13

Estrutura de uma classe em Java


Candidato
Candidato
-primeiroNome:
-primeiroNome: String
String
-segundoNome:
-segundoNome: String
String
-ultimoNome:
-ultimoNome: String
String
-idade:
-idade: int
int
+Candidato(primeiroNome:
+Candidato(primeiroNome: String,
String, sobrenome:
sobrenome: String)
String)
+Candidato(primeiroNome:
+Candidato(primeiroNome: String,
String, segundNome:
segundNome: String,
String, sobrenome:
sobrenome: String)
String)
+getPrimeiroNome():
+getPrimeiroNome(): String
String
+setPrimeiroNome(primeiroNome:
+setPrimeiroNome(primeiroNome: String):
String): void
void
+getSegundoNome():
+getSegundoNome(): String
String
+setSegundoNome(SegundoNome:
+setSegundoNome(SegundoNome: String):
String): void
void
+getSobrenome():
+getSobrenome(): String
String
+setSobrenome(sobrenome:
+setSobrenome(sobrenome: String):
String): void
void
+getIdade():
+getIdade(): int
int
+setIdade(idade:
+setIdade(idade: int):
int): void
void
+nomeCompleto():
+nomeCompleto(): String
String
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

14

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

15

Hora de praticar

constelacao02.parte02.classes

Candidato

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

16

Modificadores de nveis de acesso

So padres de visibilidade de acessos a:

Classes

Atributos

Mtodos

Determinam se uma classe pode usar uma outra

Invocando:

Um determinado atributo

Um determinado mtodo

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

17

Modificadores de nveis de acesso

Existem dois nveis de controle de acesso:

Nvel superior

Aplicados a classes

Modificadores:

public

default (sem modificador explcito)

Nvel de membro

Aplicados a:

Atributos
Mtodos

Modificadores:

private
public

protected

default (sem modificador explcito)

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

18

Modificadores de nveis de acesso

Nvel superior

public

Torna uma classe visvel:

Para qualquer classe


Em qualquer pacote

default

Sem modificador explcito

Torna uma classe visvel apenas dentro do seu pacote

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

19

Modificadores de nveis de acesso

Nvel superior
Pacote
Pacote 11

Pacote
Pacote 22

public
public class
class A
A {{ }}

public
public class
class C
C extends
extends A
A {{ }}

class
class BB {{ }}

class
class D
D {{ }}

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

20

Modificadores de nveis de acesso

Nvel de membro

public

protected

Torna um item acessvel em qualquer lugar e a qualquer entidade


que possa visualizar a classe que o item pertence
Torna um item acessvel s classes do mesmo pacote ou atravs de
herana, seus membros herdados no so acessveis a outras
classes fora do pacote em que foram declarados

default

Sem modificador explcito

Torna um item acessvel somente por classes do mesmo pacote

private

Torna um item acessvel apenas classe que o contm


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

21

Modificadores de nveis de acesso

Nvel de membro public


Pacote
Pacote 11
public
public class
class A
A {{
public
public String
String atributo
atributo;;
public
public void
void metodo
metodo(( )) {{ }}
}}

class
class BB {{ }}

Pacote
Pacote 22

public
public class
class C
C extends
extends A
A {{ }}

class
class D
D {{ }}

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

22

Modificadores de nveis de acesso

Nvel de membro protected


Pacote
Pacote 11
public
public class
class A
A {{
protected
protected String
String atributo
atributo;;
protected
protected void
void metodo
metodo(( )) {{ }}
}}

class
class BB {{ }}

Pacote
Pacote 22

public
public class
class C
C extends
extends A
A {{ }}

class
class D
D {{ }}

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

23

Modificadores de nveis de acesso

Nvel de membro default


Pacote
Pacote 11
public
public class
class A
A {{
String
String atributo
atributo;;
void
void metodo
metodo(( )) {{ }}
}}

class
class BB {{ }}

Pacote
Pacote 22

public
public class
class C
C extends
extends A
A {{ }}

class
class D
D {{ }}

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

24

Modificadores de nveis de acesso

Nvel de membro private


Pacote
Pacote 11
public
public class
class A
A {{
private
private String
String atributo
atributo;;
private
private void
void metodo
metodo(( )) {{ }}
}}

class
class BB {{ }}

Pacote
Pacote 22

public
public class
class C
C extends
extends A
A {{ }}

class
class D
D {{ }}

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

25

Modificadores de nveis de acesso


Classe
Classe

Pacote
Pacote

Sub
Sub classe
classe

Todos
Todos

public
public

protected
protected

default
default

private
private

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

26

Modificadores de nveis de acesso

private
private

default
default

protected
protected

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

public
public

27

Modificadores de nveis de acesso

public
public

protected
protected

default
default

private
private

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

28

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

29

Hora de praticar

constelacao02.parte02.classes.pacote1

constelacao02.parte02.classes.pacote2

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

30

Questes de concursos
[FCC 2010 TRT 4 Regio Analista Judicirio Especialidade
Informtica Questo 45] Sobre a orientao a objetos, correto
afirmar:

[A] Os modificadores de acesso public, private e protected


controlam o acesso apenas aos mtodos de uma classe.

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

31

Questes de concursos
[FCC 2010 TRT 4 Regio Analista Judicirio Especialidade
Informtica Questo 45] Sobre a orientao a objetos, correto
afirmar:

[A] Os modificadores de acesso public, private e protected


controlam o acesso apenas aos atributos e mtodos de uma
classe.

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

32

Questes de concursos
[FCC 2009 TRT 16 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 27] A diretiva public
utilizada em Java para aplicar a encapsulao pblica

[A] aos mtodos e classes, apenas.

[B] aos atributos, mtodos e classes.

[C] s classes, apenas.

[D] aos atributos, apenas.

[E] aos atributos e classes, apenas.

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

33

Questes de concursos
[FCC 2009 TRT 16 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 27] A diretiva public
utilizada em Java para aplicar a encapsulao pblica

[A] aos mtodos e classes, apenas.

[B] aos atributos, mtodos e classes.

[C] s classes, apenas.

[D] aos atributos, apenas.

[E] aos atributos e classes, apenas.

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

34

Questes de concursos
[FCC 2009 TRE/AM Tcnico Judicirio Especialidade
Programao de Sistemas Questo 66] Dentre as aplicaes
dadas, Public aplica-se a

[I] Atributo.

[II] Varivel local.

[III] Mtodo.

[IV] Classe.

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

35

Questes de concursos
[FCC 2009 TRE/AM Tcnico Judicirio Especialidade
Programao de Sistemas Questo 66] Dentre as aplicaes
dadas, Public aplica-se a

[I] Atributo.

[II] Varivel local.

[III] Mtodo.

[IV] Classe.

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

36

Questes de concursos
[FCC 2009 TRE/AM Tcnico Judicirio Especialidade
Programao de Sistemas Questo 66] Dentre as aplicaes
dadas, Public aplica-se a

[A] I, III e IV, apenas.

[B] I, II, III e IV.

[C] II, III e IV, apenas.

[D] II e IV, apenas.

[E] III e IV, apenas.

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

37

Questes de concursos
[CESPE 2012 BASA Cargo 17] Julgue o item seguinte, acerca da
linguagem de programao Java.

[97] Em Java, para toda classe, mtodo e varivel de instncia


que se declara h um controle de acesso, independentemente
de o controle ser explicitamente indicado.
[98] Os mtodos de uma classe Java criada com controle de
acesso protect podem ser acessados apenas por classes do
mesmo pacote.

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

38

Questes de concursos
[CESPE 2012 BASA Cargo 17] Julgue o item seguinte, acerca da
linguagem de programao Java.

[97] Em Java, para toda classe, mtodo e varivel de instncia


que se declara h um controle de acesso, independentemente
de o controle ser explicitamente indicado.

Gabarito: CERTO.

[98] Os mtodos de uma classe Java criada com controle de


acesso protected default podem ser acessados apenas por
classes do mesmo pacote.

Gabarito: ERRADO.

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

39

Questes de concursos
[AOCP 2012 BRDE Analista de Sistemas Desenvolvimento de
Sistemas Prova TIPO 4] Preencha as lacunas e, em seguida,
assinale a alternativa correta.

Na linguagem Java o escopo (visibilidade) de uma varivel de


instncia pode ser controlado atravs do uso dos seguintes
modificadores de variveis. _______________: qualquer um
pode acessar variveis de instncia pblicas.
___________________: apenas mtodos do mesmo pacote ou
subclasse podem acessar variveis de instncia protegidas.
___________________: apenas mtodos da mesma classe
(excluindo mtodos de uma subclasse) podem acessar
variveis de instncias privadas.

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

40

Questes de concursos
[AOCP 2012 BRDE Analista de Sistemas Desenvolvimento de
Sistemas Prova TIPO 4] Preencha as lacunas e, em seguida,
assinale a alternativa correta.

Na linguagem Java o escopo (visibilidade) de uma varivel de


instncia pode ser controlado atravs do uso dos seguintes
modificadores de variveis. public: qualquer um pode acessar
variveis de instncia pblicas. protected: apenas mtodos do
mesmo pacote ou subclasse podem acessar variveis de
instncia protegidas. private: apenas mtodos da mesma
classe (excluindo mtodos de uma subclasse) podem acessar
variveis de instncias privadas.

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

41

Questes de concursos
[AOCP 2012 BRDE Analista de Sistemas Desenvolvimento de
Sistemas Prova TIPO 4] Preencha as lacunas e, em seguida,
assinale a alternativa correta.

[A] public / protected / private

[B] private / final / public

[C] public / protected / abstrat

[D] final / static / protect

[E] private / libre / shuld

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

42

Classes

Na declarao de classes, temos:

Modificadores de acesso de nvel superior:

public

default

Outros modificadores:

final

Torna uma classe impossvel de ser estendida

abstract

Pode ter ou no mtodos abstratos

No pode ser instanciada, mas pode ter subclasses

Palavra-chave class

Nome da classe

Comea com letra maiscula por conveno

A nomeao segue as regras de nomeao de variveis


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

43

Classes

Na declarao de classes, temos:

Nome da superclasse a ser estendida

Se houver

Precedida da palavra-chave extends

Uma classe deve estender apenas uma superclasse

Lista de nomes das interfaces a serem implementadas

Se houver

A lista precedida pela palavra-chave implements

Os nomes so separados por vrgulas

Uma classe pode implementar mais de uma interface

Corpo da classe

Envolvido por chaves {}

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

44

Classes

Exemplos:

Classe default:

class Classe {

Classe que estende outra:

public class Classe extends SuperClasse {

...

Classe que implementa uma interface:

class Classe implements Interface {

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

45

Classes

Exemplos:

Classe que estende outra e implementa mais de uma interface:

public class Classe extends SuperClasse implements IF1, IF2 {

Classe final que no pode ser estendida:

public final class Classe {

Classe abstrata que no pode ser instanciada:

public abstract class Classe {

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

46

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

47

Hora de praticar

constelacao02.parte02.classes

SuperClasse

ClasseFilha

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

48

Questes de concursos
[FCC 2011 TRT 14 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 56] Em Java,

[B] classes so definidas atravs do uso da palavra-chave


class, seguido do nome da classe, que, entre outras
restries, no pode ser iniciado por um nmero.

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

49

Questes de concursos
[FCC 2011 TRT 14 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 56] Em Java,

[B] classes so definidas atravs do uso da palavra-chave


class, seguido do nome da classe, que, entre outras
restries, no pode ser iniciado por um nmero.

Gabarito: ERRADO, mas deveria estar CERTO.

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

50

Atributos

Na declarao de atributos, temos:

Modificadores de acesso de nvel membro:

private

public

protected

default

Outros modificadores:

final

Torna o atributo imutvel (constante em Java)

static

Torna o atributo uma varivel de classe

Tipo do atributo

Nome do atributo
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

51

Atributos

Exemplos:

public class Classe {

// Variveis de instncia.

private String nome;

private int idade;

// Varivel de classe.

public static String atributoClasse;

// Varivel de classe e imutvel.

public static final String NOME_CLASSE = Classe; // Varivel


imutvel.

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

52

Mtodos

Na declarao de mtodos, temos:

Modificadores de acesso de nvel superior:

private

public

protected

default

Outros modificadores:

final

abstract

Torna o mtodo impossvel de ser sobrescrito


um mtodo que declarado sem uma implementao

static

Torna o mtodo um mtodo de classe

No operam em objetos

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

53

Mtodos

Na declarao de mtodos, temos:

Tipo de retorno do mtodo

o tipo do valor retornado pelo mtodo

void se o mtodo no retornar nada

Nome do mtodo

usada a declarao return

A nomeao dos mtodos segue as regras de nomeao de


variveis

Lista de parmetros

Entre parnteses ()

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

54

Mtodos

Na declarao de mtodos, temos:

Lista de excees

Variveis locais

Se houver
Declaradas dentro do corpo do mtodo

Corpo do mtodo

Envolvido por chaves {}

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

55

Mtodos

Modificador
Modificador de
de acesso
acesso

Tipo
Tipo de
de retorno
retorno

Nome
Nome do
do mtodo
mtodo

public int dividir(int x, int y) throws Exception {


int divisao = x / y;
}

return divisao;
Parmetros
Parmetros

Exceo
Exceo

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

Corpo
Corpo do
do mtodo
mtodo

56

Mtodos

Exemplos:

public class Classe {

public int somar(int x, int y) { // Mtodo que retorna um inteiro.

public void escrever(String x) { // Mtodo que retorna nada.


System.out.println(x);

public int dividir(int x, int y) throws ArithmeticException {

return total;

int total = x + y;

// Mtodo que lana uma exceo.


int divisao = x / y;
return divisao;

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

57

Mtodos

Exemplos:

public class Classe {

public static void main(String[] args) { // Mtodo esttico.

int x = 7;
int y = 8;

int total = x + y;

System.out.println(O total : + total);

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

58

Mtodos

Mtodos sobrecarregados

So mtodos com:

Nomes iguais

Nmero e tipos de parmetros diferentes

O tipo de retorno dos mtodos no considerado pelo


compilador para diferenci-los
No se pode declarar dois mtodos com a mesma assinatura

Mesmo que tenham um tipo de retorno diferente

Devem ser usados com moderao

J que podem tornar o cdigo muito menos legvel

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

59

Mtodos

Exemplo:

public class Escrita {

public void escrever(int x) { // Mtodo sobrecarregado.

public void escrever(double x) { // Mtodo sobrecarregado.

System.out.println("double: " + x);

public int escrever(double x) {

System.out.println("int: " + x);

// Mtodo no sobrecarregado.
// Erro na compilao.
return x;

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

60

Mtodos

Mtodos getters e setters

So usados, por conveno, para:

(Getters) Recuperar o valor de um atributo privado

(Setters) Alterar o valor de um atributo privado

A conveno dos nomes desses mtodos colocar antes do


nome do atributo as palavras:

Get

set

getNome para um atributo privado nome


setNome para um atributo privado nome

Utilize esses mtodos apenas para se houver real necessidade

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

61

Mtodos

Mtodos getters e setters

Exemplo:

public class Candidato {

private String nome;

public void setNome(String nome) {

public String getNome() {

this.nome = nome;

return this.nome;

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

62

Mtodos

Retorno de mtodos

Um mtodo retorna para o cdigo que o chama quando ocorrer


uma das situaes:

Quando o mtodo completa todas as declaraes no mtodo

Quando se atinge uma instruo return

Quando o mtodo lana uma exceo

Tipo de retorno do mtodo

o tipo do valor retornado pelo mtodo

usada a declarao return

void se o mtodo no retornar nada

No necessrio incluir return nesse caso

Se for usada, a instruo return ir forar a sada do mtodo

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

63

Mtodos

Retorno de mtodos

Erros de compilao

Informar um valor de retorno em mtodos que no retornam nada


(void)

public void metodo(String x) {

return 15; // Errado.


return; // Certo. Tambm poderia omiti-lo.

Informar um tipo de valor de retorno diferente do tipo informado


na declarao do mtodo

public int metodo() {

return 15; // Errado.


Return 15; // Certo.

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

64

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

65

Hora de praticar

constelacao02.parte02

Exemplo01_Metodos

constelacao02.parte02.classes

Escrita

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

66

Questes de concursos
[FCC 2012 TRE/CE Tcnico Judicirio Especialidade
Programao de Sistemas Questo 22]

public class Calculo {

public static double soma(double n1, double n2){

public static double soma(double n1, double n2, double n3){

return n1 + n2;

return n1 + n2 + n3;

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

67

Questes de concursos
[FCC 2012 TRE/CE Tcnico Judicirio Especialidade
Programao de Sistemas Questo 22]Para chamar o mtodo
soma da classe Calculo, e mostrar na tela o retorno desse
mtodo, correto utilizar:

[A] Calculo c = new Calculo(); System.out.println (c.soma(10, 20,


30)); ou System.out.println (Calculo.soma(10, 20));
[B] Exclusivamente as instrues Calculo c = new Calculo();
System.out.println (c.soma(10, 20));
[C] Exclusivamente a instruo System.out.println
(Calculo.soma(10, 20, 50));
[D] Exclusivamente as instrues Calculo c = new Calculo();
double r = c.soma(10, 20); System.out.println(r);
[E] Calculo c = Calculo.soma(10,20,30); System.out.println [C];
ou System.out.println (Calculo.soma(10, 20));
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

68

Questes de concursos
[FCC 2012 TRE/CE Tcnico Judicirio Especialidade
Programao de Sistemas Questo 22]Para chamar o mtodo
soma da classe Calculo, e mostrar na tela o retorno desse
mtodo, correto utilizar:

[A] Calculo c = new Calculo(); System.out.println (c.soma(10,


20, 30)); ou System.out.println (Calculo.soma(10, 20));
[B] Exclusivamente as instrues Calculo c = new Calculo();
System.out.println (c.soma(10, 20));
[C] Exclusivamente a instruo System.out.println
(Calculo.soma(10, 20, 50));
[D] Exclusivamente as instrues Calculo c = new Calculo();
double r = c.soma(10, 20); System.out.println(r);
[E] Calculo c = Calculo.soma(10,20,30); System.out.println [C];
ou System.out.println (Calculo.soma(10, 20));
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

69

Questes de concursos
[FCC 2012 TRE/CE Tcnico Judicirio Especialidade
Programao de Sistemas Questo 23]

public class Calculo {

public static double soma(double n1, double n2){

public static double soma(double n1, double n2, double n3){

return n1 + n2;

return n1 + n2 + n3;

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

70

Questes de concursos
[FCC 2012 TRE/CE Tcnico Judicirio Especialidade
Programao de Sistemas Questo 23] O mtodo soma
representa um exemplo de

[A] sobrescrita de mtodos.

[B] herana de parmetros.

[C] recursividade.

[D] encapsulamento.

[E] sobrecarga de mtodos.

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

71

Questes de concursos
[FCC 2012 TRE/CE Tcnico Judicirio Especialidade
Programao de Sistemas Questo 23] O mtodo soma
representa um exemplo de

[A] sobrescrita de mtodos.

[B] herana de parmetros.

[C] recursividade.

[D] encapsulamento.

[E] sobrecarga de mtodos.

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

72

Questes de concursos
[FCC 2010 TRT 9 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 50] Algumas caractersticas
de operaes, quando definidas para uma determinada classe,
constituem o que se denomina assinatura da operao. So elas

[A] nome e tipo de retorno, apenas.

[B] lista de argumentos e tipo de retorno, apenas.

[C] nome, lista de argumentos e tipo de retorno, apenas.

[D] visibilidade, nome e tipo de retorno, apenas.

[E] visibilidade, nome, lista de argumentos e tipo de retorno.

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

73

Questes de concursos
[FCC 2010 TRT 9 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 50] Algumas caractersticas
de operaes, quando definidas para uma determinada classe,
constituem o que se denomina assinatura da operao. So elas

[A] nome e tipo de retorno, apenas.

[B] lista de argumentos e tipo de retorno, apenas.

[C] nome, lista de argumentos e tipo de retorno, apenas.

[D] visibilidade, nome e tipo de retorno, apenas.

[E] visibilidade, nome, lista de argumentos e tipo de retorno.

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

74

Questes de concursos
[FCC 2010 TRT 4 Regio Analista Judicirio Especialidade
Informtica Questo 45] Sobre a orientao a objetos, correto
afirmar:

[D] Ao implementar um mtodo de uma classe, devem ser


utilizados os mtodos set e get da classe para acessar apenas
os dados pblicos (publics) da classe.

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

75

Questes de concursos
[FCC 2010 TRT 4 Regio Analista Judicirio Especialidade
Informtica Questo 45] Sobre a orientao a objetos, correto
afirmar:

[D] Ao implementar um mtodo de uma classe, devem ser


utilizados os mtodos set e get da classe para acessar apenas
os dados pblicos (publics) private da classe.

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

76

Questes de concursos
[FCC 2010 Assemblia Legislativa/SP Agente Legislativo de
Servios Tcnicos e Administrativos Processamento de Dados
Questo 56] Mtodos estticos em Java so aqueles que

[A] realizam alguma tarefa que dependente do contedo de


algum objeto.
[B] no podem ser acessados diretamente pelo nome da classe
a que pertencem, mas sim por meio de um objeto da classe.
[C] realizam alguma tarefa que no dependente do contedo
de algum objeto.
[D] so acessados por objetos que no necessitam de ser
instanciados explicitamente.
[E] existem em subclasses de uma herana.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

77

Questes de concursos
[FCC 2010 Assemblia Legislativa/SP Agente Legislativo de
Servios Tcnicos e Administrativos Processamento de Dados
Questo 56] Mtodos estticos em Java so aqueles que

[A] realizam alguma tarefa que dependente do contedo de


algum objeto.
[B] no podem ser acessados diretamente pelo nome da classe
a que pertencem, mas sim por meio de um objeto da classe.
[C] realizam alguma tarefa que no dependente do
contedo de algum objeto.
[D] so acessados por objetos que no necessitam de ser
instanciados explicitamente.
[E] existem em subclasses de uma herana.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

78

Questes de concursos
[FCC 2009 TRT 7 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 53] Em Java, main um
mtodo

[A] pblico associado ao objeto e que retorna um valor no


vazio.
[B] esttico associado ao objeto e que retorna um valor vazio.
[C] abstrato associado ao objeto e que retorna um valor no
vazio.
[D] esttico associado classe e que retorna um valor vazio.
[E] abstrato associado classe e que retorna um valor no
vazio.

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

79

Questes de concursos
[FCC 2009 TRT 7 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 53] Em Java, main um
mtodo

[A] pblico associado ao objeto e que retorna um valor no


vazio.
[B] esttico associado ao objeto e que retorna um valor vazio.
[C] abstrato associado ao objeto e que retorna um valor no
vazio.
[D] esttico associado classe e que retorna um valor vazio.
[E] abstrato associado classe e que retorna um valor no
vazio.

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

80

Questes de concursos
[FCC 2009 TRE/AM Tcnico Judicirio Especialidade
Programao de Sistemas Questo 67] Dentre as aplicaes
dadas, Static aplica-se a

[I] Atributo.

[II] Varivel local.

[III] Mtodo.

[IV] Classe.

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

81

Questes de concursos
[FCC 2009 TRE/AM Tcnico Judicirio Especialidade
Programao de Sistemas Questo 67] Dentre as aplicaes
dadas, Static aplica-se a

[I] Atributo.

[II] Varivel local.

[III] Mtodo.

[IV] Classe.

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

82

Questes de concursos
[FCC 2009 TRE/AM Tcnico Judicirio Especialidade
Programao de Sistemas Questo 67] Dentre as aplicaes
dadas, Static aplica-se a

[A] I e II.

[B] I, II e IV.

[C] I e III.

[D] II, III e IV.

[E] III e IV.

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

83

Questes de concursos
[CESPE 2011 EBC Cargo 12] Julgue o item subsequente,
referentes aos mdulos que constituem a tcnica de
modularizao, utilizada para desenvolver algoritmos.

[92] Em Java, os mdulos, sejam eles procedimentos ou


funes, so representados pelas classes, nas quais a
instruo retornar indica que o controle do fluxo de dados
dever retornar ao algoritmo principal.

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

84

Questes de concursos
[CESPE 2011 EBC Cargo 12] Julgue o item subsequente,
referentes aos mdulos que constituem a tcnica de
modularizao, utilizada para desenvolver algoritmos.

[92] Em Java, os mdulos, sejam eles procedimentos ou


funes, so representados pelas classes pelos mtodos, nas
quais a instruo retornar indica que o controle do fluxo de
dados dever retornar ao algoritmo principal.

Gabarito: ERRADO.

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

85

Questes de concursos
[CESPE 2010 DETRAN/ES Cargo 3] A respeito da orientao a
objetos e das respectivas linguagens de programao, julgue o
item subsequente.

[73] Caso dois mtodos em Java tenham o mesmo nome e um


nome de funo seja utilizado duas ou mais vezes, haver
uma sobrecarga.

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

86

Questes de concursos
[CESPE 2010 DETRAN/ES Cargo 3] A respeito da orientao a
objetos e das respectivas linguagens de programao, julgue o
item subsequente.

[73] Caso dois mtodos em Java tenham o mesmo nome e um


nome de funo seja utilizado duas ou mais vezes, haver
uma sobrecarga.

Gabarito: CERTO.

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

87

Construtores

So chamados para criar objetos a partir de uma classe

Usa-se o operador new para criar objetos

Exemplo:

Classe objeto = new Classe();

So blocos declarados com o mesmo nome da classe

A sua declarao parece com as declaraes de mtodos

Porm, os construtores:

Usam o mesmo nome da classe

No possuem nenhum tipo de retorno

Nem mesmo void declarado

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

88

Construtores

Construtor padro (default)

automaticamente fornecido pelo compilador

No recebe nenhum parmetro de construtor

Possui o corpo vazio

No necessrio declarar nenhum construtor para uma classe

Se houver a declarao de pelo menos um construtor para uma


classe, o construtor padro no mais fornecido

Construtores sobrecarregados

So construtores com numero e tipos de parmetros diferentes

No se pode declarar dois construtores com a mesma assinatura

Construtores chamando construtores

Construtores podem chamar outros


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

89

Construtores

Exemplo 1:

Classe sem construtor:

public class Classe {

private String nome;

private String sobrenome;

Instanciando a classe utilizando o construtor padro:

Classe variavelObjeto = new Classe();

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

90

Construtores

Exemplo 2:

Classe com um construtor declarado:

public class Classe {

private String nome;

private String sobrenome;

public Classe(String nome, String sobrenome) {

Instanciando a classe utilizando o construtor declarado:

this.nome = nome;
this.sobrenome = sobrenome;

Classe variavelObjeto = new Classe(Kal-El Gildo, Arajo);

Se instanciar a classe usando o construtor padro, ocorrer um


erro de compilao

Pois foi declarado pelo menos um construtor

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

91

Construtores

Exemplo 3:

Classe com construtores sobrecarregados:

public class Classe {

private String nome;

private String sobrenome;


public Classe() {

public Classe(String nome) {

this.nome = nome;

public Classe(String nome, String sobrenome) {

this.nome = Kal-El Gildo Arajo;

this.nome = nome;
this.sobrenome = sobrenome;

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

92

Construtores

Exemplo 3:

Instanciando a classe utilizando o construtor 1:

Instanciando a classe utilizando o construtor 2:

Classe variavelObjeto = new Classe();


Classe variavelObjeto = new Classe(Kal-El Gildo);

Instanciando a classe utilizando o construtor 3:

Classe variavelObjeto = new Classe(Kal-El Gildo, Arajo);

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

93

Construtores

Exemplo 4:

Classe com um construtor chamando outro:

public class Classe {

private String nome;

private String sobrenome;

public Classe(String nome) {

public Classe(String nome, String nome) {

this.nome = nome;

this(nome);
this.sobrenome = sobrenome;

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

94

Construtores

Exemplo 4:

Instanciando a classe utilizando o construtor 1:

Classe variavelObjeto = new Classe(Kal-El Gildo);

Instanciando a classe utilizando o construtor 2:

Classe variavelObjeto = new Classe(Kal-El Gildo, Arajo);

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

95

Questes de concursos
[FCC 2012 MPE/RN Tcnico do Ministrio Pblico Estadual rea Suporte Tcnico Tecnologia da Informao Questo 51]
Considere a seguinte classe em Java.

public class Teste {

private int a=1;

private double b=2;

private long c=3;

public Teste(int i) {

this.a=i;

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

96

Questes de concursos
[FCC 2012 MPE/RN Tcnico do Ministrio Pblico Estadual rea Suporte Tcnico Tecnologia da Informao Questo 51]
Considere a seguinte classe em Java.

public class Teste {

public Teste(double d) {

public Teste(long l) {

this.b=d;

this.c=l;

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

97

Questes de concursos
[FCC 2012 MPE/RN Tcnico do Ministrio Pblico Estadual rea Suporte Tcnico Tecnologia da Informao Questo 51]
Considere a seguinte classe em Java.

public class Teste {

public void printValues(){

System.out.print(this.a+" ");

System.out.print(this.b+" ");

System.out.print(this.c+".");

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

98

Questes de concursos
[FCC 2012 MPE/RN Tcnico do Ministrio Pblico Estadual rea Suporte Tcnico Tecnologia da Informao Questo 51]
Considere a seguinte classe em Java.

public class Teste {

public static void main(String[] args) {

try {

Teste t = new Teste(l);


t.printValues();

} catch(Exception e) {

double l=4.0;

e.printStackTrace();

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

99

Questes de concursos
[FCC 2012 MPE/RN Tcnico do Ministrio Pblico Estadual rea Suporte Tcnico Tecnologia da Informao Questo 51]
Aps a execuo do mtodo main, o contedo impresso no
console ser

[A] 1 4.0 3.

[B] 1 2 4.0.

[C] 1 2 3.

[D] java.lang.ClassCastException: java.lang.Double cannot be


cast to java.lang.Long.
[E] java.lang.NumberFormatException: For input number: 4.0.

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

100

Questes de concursos
[FCC 2012 MPE/RN Tcnico do Ministrio Pblico Estadual rea Suporte Tcnico Tecnologia da Informao Questo 51]
Aps a execuo do mtodo main, o contedo impresso no
console ser

[A] 1 4.0 3.

[B] 1 2 4.0.

[C] 1 2 3.

[D] java.lang.ClassCastException: java.lang.Double cannot be


cast to java.lang.Long.
[E] java.lang.NumberFormatException: For input number: 4.0.

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

101

Questes de concursos
[FCC 2010 TRT 4 Regio Analista Judicirio Especialidade
Informtica Questo 45] Sobre a orientao a objetos, correto
afirmar:

[B] possvel criar vrios construtores sobrecarregados em


uma classe para permitir que objetos dessa classe sejam
inicializados de diferentes maneiras.
[C] Um construtor invocado sem argumentos inicializa o
objeto, mas causa um erro em tempo de execuo, pois todo
construtor de classe deve receber pelo menos um parmetro.

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

102

Questes de concursos
[FCC 2010 TRT 4 Regio Analista Judicirio Especialidade
Informtica Questo 45] Sobre a orientao a objetos, correto
afirmar:

[B] possvel criar vrios construtores sobrecarregados em


uma classe para permitir que objetos dessa classe sejam
inicializados de diferentes maneiras.
[C] Um construtor invocado sem argumentos inicializa o
objeto, mas no causa um erro em tempo de execuo, pois
todo construtor de classe deve receber pelo menos um
parmetro.

Construtor padro

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

103

Questes de concursos
[FCC 2010 TRT 20 Regio Analista Judicirio Especialidade
Tecnologia da Informao Questo 30] Na orientao a objetos,
construtores e destrutores so mtodos especiais responsveis
pela criao e destruio de objetos. Nesse aspecto, considere:

[III] Em JAVA, se nenhum construtor for explicitamente


definido pelo programador da classe, um construtor padro
includo para a classe pelo compilador Java.

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

104

Questes de concursos
[FCC 2010 TRT 20 Regio Analista Judicirio Especialidade
Tecnologia da Informao Questo 30] Na orientao a objetos,
construtores e destrutores so mtodos especiais responsveis
pela criao e destruio de objetos. Nesse aspecto, considere:

[III] Em JAVA, se nenhum construtor for explicitamente


definido pelo programador da classe, um construtor padro
includo para a classe pelo compilador Java.

Gabarito: CERTO.

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

105

Questes de concursos
[FCC 2009 SEFAZ/SP Agente Fiscal de Rendas Nvel Bsico
SQC III Tecnologia da Informao Questo 54] O mtodo
utilizado para inicializar objetos de uma classe quando estes so
criados denominado

[A] void.

[B] interface.

[C] agregao.

[D] composio.

[E] construtor.

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

106

Questes de concursos
[FCC 2009 SEFAZ/SP Agente Fiscal de Rendas Nvel Bsico
SQC III Tecnologia da Informao Questo 54] O mtodo
utilizado para inicializar objetos de uma classe quando estes so
criados denominado

[A] void.

[B] interface.

[C] agregao.

[D] composio.

[E] construtor.

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

107

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 36] Com base no
cdigo abaixo, assinale a opo correta.

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

108

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 36] Com base no
cdigo abaixo, assinale a opo correta.

[D] Na classe em questo, que tem dois destrutores, o


primeiro destrutor recebe dois argumentos, de nomes x e y,
que definem as coordenadas do ponto criado.

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

109

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 36] Com base no
cdigo abaixo, assinale a opo correta.

[D] Na classe em questo, que tem dois destrutores


construtores, o primeiro destrutor construtor recebe dois
argumentos, de nomes x e y, que definem as coordenadas do
ponto criado.

Gabarito: ERRADO.

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

110

Questes de concursos
[CESPE 2010 TRE/ES Cargo 3] Julgue o itens que se segue,
referente a fundamentos de computao e a linguagens de
programao.

[68] Em programao orientada a objetos, um construtor java


serve para inicializar os atributos, sendo automaticamente
executado sempre que se cria um novo objeto.

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

111

Questes de concursos
[CESPE 2010 TRE/ES Cargo 3] Julgue o itens que se segue,
referente a fundamentos de computao e a linguagens de
programao.

[68] Em programao orientada a objetos, um construtor java


serve para inicializar os atributos, sendo automaticamente
executado sempre que se cria um novo objeto.

Gabarito: CERTO.

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

112

Questes de concursos
[CESPE 2010 TRE/BA Cargo 21] Considerando o cdigo
apresentado abaixo, escrito em Java, julgue o item que se segue.

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

113

Questes de concursos
[CESPE 2010 TRE/BA Cargo 21] Considerando o cdigo
apresentado abaixo, escrito em Java, julgue o item que se segue.

[41] Em Java, todo mtodo construtor deve ter o mesmo nome


da classe, a exemplo do mtodo public Questo(), no cdigo
apresentado.

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

114

Questes de concursos
[CESPE 2010 TRE/BA Cargo 21] Considerando o cdigo
apresentado abaixo, escrito em Java, julgue o item que se segue.

[41] Em Java, todo mtodo construtor deve ter o mesmo nome


da classe, a exemplo do mtodo public Questo(), no cdigo
apresentado.

Gabarito: CERTO.

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

115

Palavra-chave this

uma referncia ao objeto atual dentro de:

Um mtodo de instncia

Um construtor

Pode passar a referncia do objeto atual como argumento

Exemplos:

this.nome = Kal-El Gildo Arajo; // Referenciando um atributo


(varivel de instncia) do objeto atual;
this(Kal-El Gildo Arajo); // Chamando um construtor.

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

116

Palavra-chave this

Referenciando uma varivel de instncia

this usado para referenciar as variveis de instncia do objeto


atual diferenciando-os dos parmetros de mtodos ou de
construtores
Exemplo:

public class Classe {

private String nome;

private String sobrenome;

public Classe(String nome) {

public Classe(String nome, String sobrenome) {

this.nome = nome; // Referenciando a varivel de instncia nome.

this(nome);
this.sobrenome = sobrenome;

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

117

Palavra-chave this

Referenciando um construtor

this pode ser usado para referenciar um construtor dentro de


outro
Exemplo:

public class Classe {

private String nome;

private String sobrenome;

public Classe(String nome) {

public Classe(String nome, String nome) {

this.nome = nome;

this(nome); // Referenciando outro construtor.


this.sobrenome = sobrenome;

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

118

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 36] Com base no
cdigo abaixo, assinale a opo correta.

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

119

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 36] Com base no
cdigo abaixo, assinale a opo correta.

[E] A referida classe define um mtodo pblico para calcular a


distncia entre o ponto sobre o qual o mtodo invocado e o
outro ponto, especificado como argumento p, de modo que
no preciso usar a palavra-chave this antes dos atributos da
coordenada do objeto.

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

120

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 36] Com base no
cdigo abaixo, assinale a opo correta.

[E] A referida classe define um mtodo pblico para calcular a


distncia entre o ponto sobre o qual o mtodo invocado e o
outro ponto, especificado como argumento p, de modo que
no preciso usar a palavra-chave this antes dos atributos da
coordenada do objeto.

Gabarito: CERTO.

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

121

Objetos

Classe variavelObjeto = new Classe(Kal-El);

Declarao
Declarao

Inicializao
Inicializao
Instanciao
Instanciao

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

122

Objetos

Classe variavelObjeto = new Classe(Kal-El);

Objeto criado
nome
variavelObjeto

Kal-El
Kal-El

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

123

Objetos

Fases da criao de um objeto:

Declarao

Definio da varivel-objeto para referenciar um novo objeto

Neste momento, no se pode utilizar o objeto, pois ele ainda no


foi criado

Instanciao

Utilizao do operador new para criar um novo objeto

O operador new instancia uma classe

Usando um dos seus construtores

Alocando memria para um novo objeto

Retornando uma referncia para a memria

Esta referncia geralmente atribuda a uma varivel do tipo


apropriado

Inicializao

Inicializao do novo objeto atravs de um construtor


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

124

Objetos

Varivel-objeto

No o mesmo que um objeto

Referencia um objeto

Pode:

Ser inicializada com um objeto recm-criado

Classe variavelObjeto = new Classe(Kal-El);

Referenciar um objeto j criado anteriormente

Classe variavelObjeto1 = new Classe(Kal-El);


Classe variavelObjeto2 = variavelObjeto1;

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

125

Objetos

Classe variavelObjeto1 = new Classe(Kal-El);

Classe variavelObjeto2 = variavelObjeto1;

variavelObjeto1

Objeto criado
nome

Kal-El
Kal-El
variavelObjeto2
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

126

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

127

Hora de praticar

constelacao02.parte02

Exemplo02_ObjetoVariavelObjeto

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

128

Questes de concursos
[FCC 2009 TRT 16 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 26] Uma classe Java pode
ser instanciada por um comando, cuja sintaxe

[A] nome_Objeto nome_Classe = new nome_Objeto();

[B] nome_Classe nome_Objeto = new nome_Classe();

[C] nome_Classe nome_instancia = new nome_Objeto();

[D] nome_Instancia nome_Objeto = new nome_Instancia();

[E] nome_Instancia nome_Classe = new nome_Instancia();

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

129

Questes de concursos
[FCC 2009 TRT 16 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 26] Uma classe Java pode
ser instanciada por um comando, cuja sintaxe

[A] nome_Objeto nome_Classe = new nome_Objeto();

[B] nome_Classe nome_Objeto = new nome_Classe();

[C] nome_Classe nome_instancia = new nome_Objeto();

[D] nome_Instancia nome_Objeto = new nome_Instancia();

[E] nome_Instancia nome_Classe = new nome_Instancia();

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

130

Questes de concursos
[FCC 2009 TJ/SE Tcnico Judicirio Especialidade
Programao de Sistemas Questo 61] Um objeto instanciado
em Java por meio do operador

[A] instanceof.

[B] extend.

[C] new.

[D] this.

[E] type.

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

131

Questes de concursos
[FCC 2009 TJ/SE Tcnico Judicirio Especialidade
Programao de Sistemas Questo 61] Um objeto instanciado
em Java por meio do operador

[A] instanceof.

[B] extend.

[C] new.

[D] this.

[E] type.

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

132

Questes de concursos
[CESPE 2010 SAD/PE Cargo 4 Questo 50] O termo algoritmo
universalmente usado na cincia da computao na descrio
de mtodos para soluo de problemas, adequados
implementao na forma de programas de computador. A esse
respeito, assinale a opo correta.

[D] Na linguagem Java, a avaliao de uma expresso que


constri uma nova instncia, quando bem sucedida, retorna
uma referncia ou ponteiro rea de memria na qual a
instncia foi alocada.

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

133

Questes de concursos
[CESPE 2010 SAD/PE Cargo 4 Questo 50] O termo algoritmo
universalmente usado na cincia da computao na descrio
de mtodos para soluo de problemas, adequados
implementao na forma de programas de computador. A esse
respeito, assinale a opo correta.

[D] Na linguagem Java, a avaliao de uma expresso que


constri uma nova instncia, quando bem sucedida, retorna
uma referncia ou ponteiro rea de memria na qual a
instncia foi alocada.

Gabarito: CERTO.

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

134

Passando valores para mtodos e construtores

Na lgica de programao:

Tipos de parmetros:

Formais

So os que esto declarados nos mtodos

public class Escrita {

public void escrever(int x) { // x um parmetro formal.

System.out.println("int: " + x);

}
}

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

135

Passando valores para mtodos e construtores

Na lgica de programao:

Tipos de parmetros:

Reais

So os utilizados pela unidade ativadora

public class Classe {

public static void main(String[] args) {

int x = 15;

Escrita escrita = new Escrita();

escrita.escrever(x); // O valor x um parmetro real.

}
}

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

136

Passando valores para mtodos e construtores

Na lgica de programao:

Tipos de passagem de parmetros:

Por valor

O valor do parmetro real transferido

O parmetro formal faz uma cpia do valor do parmetro real

Por referncia

Fazendo com que todas as aes nos mtodos manipulem somente


o valor copiado
Evitando a alterao do valor original

O endereo do parmetro real transferido

As alteraes nos parmetros formais dos mtodos na verdade esto


sendo feitas sobre os parmetros reais

A relao existente entre os parmetros formal e real est no endereo


dos parmetros e no em seus valores

Na linguagem Java, toda passagem de parmetros acontece


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

137

Passando valores para mtodos e construtores

Passagem de valor de uma varivel de tipo primitivo


Valor
Valor copiado
copiado

parametroReal =

22

parametroFormal =

44
Valor
Valor duplicado
duplicado

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

138

Passando valores para mtodos e construtores

Passagem de valor de uma varivel-objeto


Valor
Valor da
da referncia
referncia copiado
copiado

candidatoReal =

22

Objeto
Objeto instanciado
instanciado

candidatoFormal =

44

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

139

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

140

Hora de praticar

constelacao02.parte02

Exemplo03_PassagemValorMetodosConstrutores

constelacao02.parte02.classes

PassagemValor

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

141

Questes de concursos
[CESPE 2010 DETRAN/ES Cargo 3] A respeito da orientao a
objetos e das respectivas linguagens de programao, julgue o
item subsequente.

[70] Entre os mecanismos de passagem de parmetros


utilizados em Java, h os tipos definidos, em que h
associao direta entre parmetro formal e real, e os tipos de
mecanismos por cpias, em que os parmetros formais so
variveis locais.

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

142

Questes de concursos
[CESPE 2010 DETRAN/ES Cargo 3] A respeito da orientao a
objetos e das respectivas linguagens de programao, julgue o
item subsequente.

[70] Entre os mecanismos de passagem de parmetros


utilizados em Java, h os tipos definidos, em que h
associao direta entre parmetro formal e real, e os tipos de
mecanismos por cpias, em que os parmetros formais so
variveis locais.

Gabarito: CERTO, mas deveria ser ERRADO.

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

143

Garbage collection e garbage collector

Garbage collection

a coleta de lixo
o processo em que o JRE (Java Runtime Environment) exclui
objetos quando aquele determina que estes no esto mais
sendo usados

Um objeto elegvel para coleta de lixo quando no houver


mais referncias a esse objeto

No necessrio a destruio explcita dos objetos criados

Todas as referncias a um objeto devem ser descartadas antes que


o objeto seja elegvel para coleta de lixo

Referncias mantidas em uma varivel so normalmente


descartados quando:

A varivel sai do escopo em que ela se encontra

Explicitamente, um valor null atribudo varivel-objeto


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

144

Garbage collection e garbage collector

Garbage collector

Est dentro do JRE


Libera periodicamente a memria usada por objetos que no so
mais referenciados
Faz o seu trabalho automaticamente quando determina que a
hora certa

No h um momento pr-determinado

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

145

Garbage collection e garbage collector

Exemplo:

Classe a;

Classe b;

Classe c;

a = new Classe(A);

b = a;

c = new Classe(C);

aa

A
A

bb

cc

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

C
C

146

Garbage collection e garbage collector

Exemplo (continuao):

b = null;

c = new Classe(D);

aa

bb

A
A

Objeto
Objeto sem
sem referncia
referncia
candidato
candidato remoo
remoo

cc

C
C

D
D

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

147

Questes de concursos
[FCC 2011 TRT 14 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 56] Em Java,

[A] possvel criar e manipular objetos, mas no remov-los,


pois a remoo manipulada automaticamente pelo sistema.

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

148

Questes de concursos
[FCC 2011 TRT 14 Regio Tcnico Judicirio Especialidade
Tecnologia da Informao Questo 56] Em Java,

[A] possvel criar e manipular objetos, mas no remov-los,


pois a remoo manipulada automaticamente pelo sistema
garbage collector.

Gabarito: ERRADO.

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

149

Questes de concursos
[FCC 2010 TRT 20 Regio Analista Judicirio Especialidade
Tecnologia da Informao Questo 30] Na orientao a objetos,
construtores e destrutores so mtodos especiais responsveis
pela criao e destruio de objetos. Nesse aspecto, considere:

[IV] Java possui uma gerncia automtica de memria, ou seja,


quando um objeto no mais referenciado pelo programa,
automaticamente destrudo.

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

150

Questes de concursos
[FCC 2010 TRT 20 Regio Analista Judicirio Especialidade
Tecnologia da Informao Questo 30] Na orientao a objetos,
construtores e destrutores so mtodos especiais responsveis
pela criao e destruio de objetos. Nesse aspecto, considere:

[IV] Java possui uma gerncia automtica de memria, ou seja,


quando um objeto no mais referenciado pelo programa,
automaticamente destrudo elegvel para coleta de lixo.

Gabarito: CERTO, mas deveria ser ERRADO.


Vrias fontes citam esse texto, porm um objeto elegvel para
coleta de lixo quando no houver mais referncias a esse objeto
Garbage collector faz o seu trabalho automaticamente quando
determina que a hora certa

No h um momento pr-determinado
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

151

Respostas dos desafios

[RGA] Qual a estrutura de uma classe em Java?

Nome da classe

Zero ou mais atributos

Zero ou mais construtores

Zero ou mais mtodos

[RGA] O que so modificadores de acesso?

So padres de visibilidade de acessos a:

Classes

Atributos

Mtodos

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

152

Respostas dos desafios

[RGA] Quais so os dois nveis de controle de acesso?

Nvel superior

Aplicados a classes

Modificadores:

public

default

Nvel de membro

Aplicados a:

Atributos
Mtodos

Modificadores:

private
public

protected

default (sem modificador explcito)

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

153

Respostas dos desafios

[RGA] Uma classe default em um pacote 1 no pode ser


visualizada por outra classe no pacote 2.

[RGA] O modificador de acesso default mais restritiva do o


modificador protected.

Gabarito: CERTO.

[RGA] Uma classe com o modificador final no pode ser


estendida.

Gabarito: ERRADO.

Gabarito: ERRADO.

[RGA] Em Java, uma classe pode estender apenas uma


superclasse, porm pode implementar vrias interfaces.

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

154

Respostas dos desafios

[RGA] O que faz o modificador final a um mtodo? E o static?

final

static

Torna o mtodo um mtodo de classe

[RGA] O que um mtodo sobrecarregado?

Torna o mtodo impossvel de ser sobrescrito

So mtodos com:

Nomes iguais

Nmero e tipos de parmetros diferentes

[RGA] O tipo de retorno dos mtodos no considerado pelo


compilador para diferenciar mtodos.

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

155

Respostas dos desafios

[RGA] No se pode declarar dois mtodos com a mesma


assinatura.

Gabarito: CERTO.

[RGA] Para que serve o operador new?

Usa-se o operador new para criar objetos

Exemplo:

[RGA] Se houver a declarao de pelo menos um construtor


para uma classe, o construtor padro no mais fornecido.

Classe objeto = new Classe();

Gabarito: CERTO.

[RGA] Construtores podem chamar outros?

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

156

Respostas dos desafios

[RGA] Para que serve o this?

uma referncia ao objeto atual dentro de:

Um mtodo de instncia

Um construtor

Pode passar a referncia do objeto atual como argumento

[RGA] Quais so as fases da criao de um objeto?

Declarao

Instanciao

Inicializao

[RGA] Uma varivel-objeto contm uma referncia a um


objeto.

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

157

Respostas dos desafios

[RGA] Na linguagem Java, toda passagem de parmetros


acontece por valor.

[RGA] O que o garbage collection?

o processo em que o JRE (Java Runtime Environment) exclui


objetos quando aquele determina que estes no esto mais
sendo usados

[RGA] Quando um objeto elegvel para coleta de lixo?

Gabarito: CERTO.

Quando no houver mais referncias a esse objeto

[RGA] O que faz o garbage collector?

Libera periodicamente a memria usada por objetos que no so


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

158

Respostas dos desafios

[RGA] No H um momento pr-determinado do garbage


collector agir.

Gabarito: ERRADO.
O garbage collector faz o seu trabalho automaticamente quando
determina que a hora certa

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

159

Referncias

Apostila Java e Orientao a Objetos da Caelum:


http://www.caelum.com.br/download/caelum-java-objetosfj11.pdf
Apostila Java e Orientao a Objetos da K19:
http://www.k19.com.br/downloads/apostilas/java/k19-k11orientacao-a-objetos-em-java
HORSTMANN, Cay S. e CORNELL, Gary. Core Java Volume I Fundamentos. 8 Edio. Editora Pearson Prentice Hall, 2010.
Modificadores de acesso do Java:
http://www.devmedia.com.br/modificadores-de-acesso-dojava/25404
public, private e protected:
http://www.tiexpert.net/programacao/java/public-privateprotected.php
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

160

Referncias

SIERRA, Kate e BATES, Bert. Certificao Sun para


Programador e Desenvolvedor em Java 2 Guia de Estudos. 3
Edio. Editora Alta Books, 2003.
The Java Language Specification - Java SE 7 Edition:
http://docs.oracle.com/javase/specs/jls/se7/html/
The Java Tutorials - Classes and Objects:
http://docs.oracle.com/javase/tutorial/java/javaOO/
The Java Tutorials - Object-Oriented Programming
Concepts:
http://docs.oracle.com/javase/tutorial/java/concepts/

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

161