Você está na página 1de 16

AULA 03 -

REFERÊNCIA E
ENCAPSULAMENTO

Linguagem de Programação II
Dário L. Beutler
dario.beutler@erechim.ifrs.edu.br
Objetivo da aula
 Entender o acesso a objetos por referência e
os principais conceitos do encapsulamento.

Programa da aula
1 ) Objetos são acessados por referência
2) Os três pilares da POO
3) Encapsulamento

2
1) Objetos são acessados por
referência
 Quando declaramos uma variável para associar a um
objeto, na verdade, essa variável não guarda o objeto, e
sim uma maneira de acessá-lo, chamada de referência.

public static void main(String[] args) {


Conta c1;
c1 = new Conta();

Conta c2;
c2 = new Conta();
}

 Por mais que se fale “eu tenho um objeto c1 do tipo Conta”, está
errado, o correto é “tenho uma referência c1 a um objeto do tipo
Conta”.

3
1) Objetos são acessados por
referência
public static void main(String[] args) {
Conta c1;
c1 = new Conta();
Conta c2;
c2 = new Conta();
}
 c1 não é um objeto e sim uma variável referência
 Em Java uma variável nunca é um objeto
 Todo objeto em Java é acessado por uma variável referência
 C1 e c2 vão guardar um número que identifica em que posição da
memória cada Conta se encontra
 Assim, ao usarmos o “.”, o Java vai acessar a Conta que se encontra
naquela posição de memória, e não uma outra.
 Por isso, para criarmos de fato objeto na memória é necessário dar
o comando new.

4
1) Objetos são acessados por
referência
public static void main(String[] args) {
Conta c1 = new Conta();
c1.deposita(100);

Conta c2 = c1; // linha importante!


c2.deposita(200);

System.out.println(c1.saldo);
System.out.println(c2.saldo);
}

 Exercicio:
 a) Faça um teste deste código acima e diga qual é o resultado.
 b) Explique o que aconteceu ?

5
1) Objetos são acessados por
referência
public static void main(String[] args) {
Conta c1 = new Conta();
c1.titular = "Duke";
c1.saldo = 227;

Conta c2 = new Conta();


c2.titular = "Duke";
c2.saldo = 227;
if (c1 == c2) {
System.out.println("Contas iguais");
}
}
Exercicio:
 a) Faça um teste deste código acima e diga qual é o resultado.
 b) Explique o que aconteceu ?

6
2) Os três pilares da POO
 Importante!!!!
 Para adotar uma estratégia de OO para o
desenvolvimento de software, você não pode
simplesmente sair programando.

 Você deve ter um planejamento cuidadoso e uma BOA


BASE NAS IMPORTANTES TEORIAS EXISTENTES POR
TRÁS DA POO.

 O domínio destas teorias não virá rapidamente, assim


como qualquer habilidade, seus conhecimentos de POO
melhorarão e aumentarão apenas com o estudo e
prática.

7
2) Os três pilares da POO
 Os três conceitos que precisam estar
presentes para que uma linguagem seja
considerada realmente OO:

1) Encapsulamento
2) Herança
3) Polimorfismo

8
3) Encapsulamento
 Em vez de pensar um programa como uma única
entidade grande e monolítica, o encapsulamento
permite que você divida em várias partes menores e
independentes.

 Cada parte possui implementação e realiza seu


trabalho independente de outras partes.

 O encapsulamento mantém essa independência,


ocultando os detalhes internos (a implementação de
cada parte), através de uma interface externa.

9
3) Encapsulamento
CONCEITO:
 É a característica da OO de ocultar partes
independentes da implementação. O
encapsulamento permite que você construa partes
ocultas da implementação do software, que atinjam
uma funcionalidade e ocultam os detalhes da
implementação do mundo exterior.

Observação: Ao invés de falar “software encapsulado” , usam-se como


sinônimos do mesmo os termos módulo, componente ou bean.

1
3) Encapsulamento

TERMOS IMPORTANTES:
 Interface – é a lista dos serviços fornecidos por um
componente. A interface é um contrato com o mundo exterior,
que define exatamente o que uma entidade externa pode fazer
com o objeto. É o painel de controle do objeto (o nome dos
métodos). A interface é semelhante a API (Interface de Programa Aplicativo)
para um objeto.
 Implementação – define como um componente realmente
fornece um serviço. Define os detalhes internos do
componente (é o código dentro de cada método).

1
3) Encapsulamento
 Um software encapsulado é como uma caixa preta.

 Você sabe o que a caixa faz, pois conhece a sua


interface externa, mas não sabe como ela é por
dentro.

 Você simplesmente envia mensagens para a caixa


preta.

 Você não se preocupa com o que acontece dentro da


caixa, você só se preocupa em solicitar o serviço e
esperar que a caixa o forneça.

1
3) Encapsulamento
A maioria das linguagens OO suporta três níveis de
acesso:

 Público – garante o acesso a todos os objetos

 Protegido – garante o acesso à instância, ou seja,


para aquele objeto, e para todas as subclasses

 Privado – garante o acesso apenas para a instância,


ou seja para aquele objeto

1
Exercícios
1) Crie na classe Conta um método chamado
calculaRendimento que não recebe parâmetro algum e
devolve o valor do saldo multiplicado por 0.1.

Use o método criado para imprimir na tela o valor do


rendimento de cada um dos objetos Conta
instanciados.

1
Exercícios
2) Use a classe Conta para testar o código do slide 5 e
responda as questões a e b do mesmo slide.

3) Use a classe Conta para testar o código do slide 6 e


responda as questões a e b do mesmo slide.

4) Classe: Pessoa
Atributos: nome, idade.
Método: void fazAniversario()
Depois de criada a classe, crie (instancie) um objeto da classe
pessoa, coloque seu nome e idade iniciais, faça alguns
aniversários (aumentando a idade) e imprima na tela seu nome e
sua idade.

1
Exercícios
5) Classe: Porta
Atributos: aberta, cor, dimensaoX, dimensaoY, dimensaoZ
Métodos: void abre()
void fecha()
void pinta(String s)
boolean estaAberta()

Use a classe Porta para criar um objeto da classe Porta, abra e


feche a mesma, pinte-a de diversas cores, altere suas dimensões e
use o método estaAberta para verificar se ela está aberta.

Você também pode gostar