Académique Documents
Professionnel Documents
Culture Documents
variveis de
instncia
Maurcio Linhares mauricio.linhares@gmail.com
Visibilidade, pacotes e
importando objetos
Todas as classes Java vivem dentro de pacotes (o diretrio
aonde elas se econtram);
Dividir as classes em pacotes necessrio para organizar o
cdigo, assim, classes relacionadas ficam juntas, nas mesmas
pastas;
O pacote aonde a classe est definido pela palavra reservada
package , que aparece no incio de um arquivo .java;
O nome do pacote sempre fica fora da definio de classe;
Exemplo de definiao de
pacote
package locadora.cadastro;
import java.util.List;
import locadora.util.Paginador;
public class CadastroDeClientes {
//mtodos e atributos
}
Packages
O package locadora.cadastro avisa que essa classe
pertence ao pacote locadora.cadastro e que deve estar
dentro da pasta locadora/cadastro;
O ponto (.) no nome de um pacote avisa a definio
de uma pasta, ento cada nome separado por ponto
simboliza uma pasta no sistema de arquivos do sistema
operacional, o arquivo .java que referencia o pacote
sempre deve estar na ltima pasta do pacote;
A definio de pacotes no obrigatria, quando eles
no so definidos, o compilador assume que o pacote o
diretrio atual;
Importando cdigo
Uma classe no pode acessar classes fora do seu pacote, a no
ser que a classe do outro pacote esteja visvel (pblica) e que
a classe que a deseja usar faa a importao dessa classe;
Para importar uma classe necessrio utilizar a palavra
reservada import seguida do nome completo da classe (o
nome do pacote junto do nome da classe, como em
java.util.Date);
Depois de importada, a classe externa pode ser utilizada
normalmente.
Exemplo do uso de
imports
import java.util.Random;
public class Sorteador {
public static void main(String[]
args) {
Random random = new Random();
System.out.println(
random.nextInt(7) + 1 );
}
}
Nveis de visibilidade em
Java
private apenas quem estiver na mesma classe pode ver;
protected apenas quem estiver no mesmo pacote ou em
subclasses pode ver;
default (sem definio) apenas quem estiver no mesmo
pacote pode ver;
public todos podem ver;
Invocando mtodos
Para se invocar um mtodo, ns utilizamos o operador
. (ponto);
possvel passar informaes para os mtodos atravs dos
parmetros, mas a definio de parmetros no obrigatria;
Mtodos podem ou no retornar valores;
Exemplo de definio de
mtodos
public class Cachorro {
public void latir() {
System.out.println("Huf! Huf!");
}
public boolean comFome() {
return true;
}
}
Anatomia da chamada
suaConta.sacar(200);
Passagem de primitivos
public void testeDeCopiaDeParametros() {
int x = 9;
int y = 5;
System.out.println(soma( x, y ));
System.out.println(x);
}
public int soma( int primeiro, int
segundo ) {
primeiro = segundo;
return primeiro + segundo;
}
Teste de passagem de
objetos
public void testeDePassagemDeObjetos() {
Conta conta = new Conta(300);
Conta outraConta = new Conta(400);
transferir( conta, outraConta, 200);
}
public void transferir( Conta origem,
Conta destino, double valor ) {
origem = new Conta(500);
origem.sacar( valor );
destino.depositar(valor);
}
Dissecando o cdigo
Referncia
1
conta
Conta 1
Referncia
2
outraConta
Conta
2
Referncia
3
origem
Referncia
4
des7no
Voltando a orientao a
objetos
Isso no uma boa idia:
conta.numero = 2;
Ento l vem o
encapsulamento
As informaes de um objeto devem ser escondidas dos
agentes externos;
Ningum deve ter acesso direto as variveis de instncia de
um objeto;
O objeto deve definir mtodos para que seja possvel alterar o
seu estado de forma segura e considerando as suas invariantes
(o seu estado correto);
Em java
} Os
mtodos
de
acesso
so
chamados
ge=ers
ou
accessors
(os
pegadores):
}
} Os
mtodos
de
alterao
so
chamados
de
se=ers
ou
mutators
(os
colocadores):
Um exemplo.
Usar datas em Java um martrio, as classes Date e Calendar
so tristes;
Na classe calendar, algum teve a brilhante idia de colocar os
meses comeando do 0 em vez do 1, ento dezembro o ms
11;
No existe um meio simples e direto de se trabalhar com
Java
Variveis de instncia e
inicializao
As variveis de instncia so inicializadas com um valor padro
se voc no der nenhum valor a elas;
Exemplo
public class Cliente {
int numero;
boolean pagador;
String nome;
public static void main(String[] args) {
Cliente cliente = new Cliente();
System.out.println( cliente.numero );
System.out.println( cliente.pagador );
System.out.println( cliente.nome );
}
}
Exemplo de variveis
locais
public static void main(String[]
args) {
int x;
System.out.println( x ); //erro
de compilao
int z = 20;
System.out.println(z);
}
Exerccio
-
1
Implemente
um
objeto
pessoa
que
tenha
nome
e
data
de
nascimento
como
propriedades
e
um
mtodo
getIdade()
que
retorne
a
idade
atual
da
pessoa
atravs
do
clculo
da
data
de
nascimento
pela
data
atual.
Dicas:
Lembre-se
que
a
data
de
nascimento
pode
ser
antes
ou
depois
da
data
atual
no
ano
atual,
ento
subs7tuir
os
anos
no
funciona;
Clculos
de
dadas
em
Java
so
sempre
feitos
atravs
da
classe
java.u7l.Calendar
Exerccio - 2
O sistema deve definir duas contas bancrias;
O sistema deve fornecer ao usurio na linha de comando as
opes de depositar ou sacar das contas, alm de transferir
dinheiro entre as duas;
O sistema deve avisar ao usurio quando ele tentar sacar ou
transferir mais dinheiro do que h na conta;
O sistema deve ter uma opao para fechar (o usurio no
deve fechar o sistema no brao);
Dicas de implementao
Um switch pode ser uma boa escolha para definir o que o
cliente quer fazer;
Todos os dados das contas devem ficar nos seus respectivos
objetos conta;
Scanners so a forma mais fcil de ler da linha de comando;