Anda di halaman 1dari 52

Programao Orientada a Objetos

Encapsulamento em Java
Tcnico em Informtica
Prof. Marcos Andr Pisching, M.Sc.

Encapsulamento
15/08/2012 08:48 Redes de Computadores
2
3
Atributos pblicos
Pode ser acessado ou modificado por cdigo
escrito por qualquer classe.
Os atributos pblicos ficam descentralizados
Exemplo:
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Atributos Pblicos Atributos Pblicos
4
Atributos pblicos
Para identificar algum erro relacionado a
manipulao dos salrios dos funcionrios,
necessrio verificar o cdigo de todos os
arquivos onde a classe Funcionario est
definida.
Quanto maior o nmero de arquivos,menos
eficiente ser a manuteno da aplicao.
Portanto, devemos evitar ao mximo a
definio de atributos PUBLICOS (public)
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Atributos Pblicos Atributos Pblicos
5
Atributos privados
Uso do modificador de acesso private.
Controle centralizado:
Tornar os atributos privados ;
definir mtodos para implementar todas as lgicas
que utilizam ou modificam o valor desse atributo.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Atributos Privados Atributos Privados
6
Atributos privados
Observao:
Em Java, se nenhum modificador de acesso
(visibilidade) for definido um atributo, esse
atributo ser considerado default por padro, o que
permitir acesso somente a nvel de pasta/pacote.
Boas prticas de programao:
Recomenda-se a declarao de atributos privados,
adicionando a palavra reservada private precedido da
declarao do atributo.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Atributos Privados Atributos Privados
7

A
t
r
i
b
u
t
o
s

p
r
i
v
a
d
o
s

E
x
e
m
p
l
o

Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Atributos Privados Atributos Privados
8

D
i
a
g
r
a
m
a

d
e

c
l
a
s
s
e

Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Atributos Privados Atributos Privados
9
Atributos privados
Um atributo privado s pode ser acessado ou
alterado por cdigo escrito dentro da classe na
qual ele foi definido.
Se algum cdigo fora da classe Funcionario
tentar acessar ou alterar o valor do atributo
privado salario, um erro de compilao ser
gerado.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Atributos Privados Atributos Privados
10
Atributos privados
Definir todos os atributos como privado e mtodos
para implementar as lgicas de acesso e alterao
quase uma regra da orientao a objetos.
O intuito ter sempre um controle centralizado do
dados dos objetos para facilitar a manuteno do
sistema e a deteco de erros.
Tambm fica mais fcil a implementao de alguns
requisitos de sistemas.
Exemplo: No permitir que o salrio do funcionrio seja
negativo!
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Atributos Privados Atributos Privados
Mtodos Privados
15/08/2012 08:48 Redes de Computadores
11
12
O papel de alguns mtodos pode ser o de
auxiliar outros mtodos da mesma classe.
Muitas vezes, no correto chamar esses
mtodos auxiliares de fora da sua classe
diretamente.
Exemplo: mtodo descontarTarifa()
um mtodo auxiliar dos mtodos depositar() e
sacar().
Ele no deve ser chamado diretamente, pois uma
tarifa s deve ser descontada quando ocorre um
depsito ou um saque.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Mtodos Privados Mtodos Privados
13
Para garantir que mtodos auxiliares no
sejam chamados por cdigo escrito fora da
classe na qual eles foram definidos,
podemos torn-los privados, acrescentando
o modificador private.
Exemplo:
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Mtodos Privados Mtodos Privados
14

E
x
e
m
p
l
o
:

Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Mtodos Privados Mtodos Privados
continua
15

E
x
e
m
p
l
o
:

Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Mtodos Privados Mtodos Privados
16
Exemplo:
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Mtodos Privados Mtodos Privados
Mtodos privados no podem ser
chamados a partir de outra
classe.
Mtodos Pblicos
15/08/2012 08:48 Redes de Computadores
17
18
Os mtodos que devem ser chamados a partir de
qualquer parte do sistema devem possuir o
modificador de visibilidade public.
Exemplo: mtodos de acesso (accessor), depositar(),
sacar() e outros.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Mtodos Pblicos Mtodos Pblicos
Implementao e Interface de Uso
15/08/2012 08:48 Redes de Computadores
19
20
Dentro de um sistema orientado a objetos,
cada objeto realiza um conjunto de tarefas
de acordo com as suas responsabilidades.
Por exemplo, os objetos da classe Conta
realizam as operaes de saque, depsito,
transferncia e gerao de extrato.

Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Implementao e Interface de Uso Implementao e Interface de Uso
21
Para descobrir o que um objeto pode fazer,
basta olhar para as assinaturas dos mtodos
pblicos definidos na classe desse objeto.
A assinatura de um mtodo composta por:
Nome do mtodo;
Parmetros;
Tipo de dado de retorno.
As assinaturas dos mtodos pblicos de um
objeto formam a sua interface de uso.
Faz a interface com a implementao do mtodo
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Implementao e Interface de Uso Implementao e Interface de Uso
22
Por outro lado, a exemplo disto, para descobrir
como um objeto da classe Conta realiza as
suas operaes, devemos observar o corpo de
cada um dos mtodos dessa classe. Os corpos
dos mtodos constituem a implementao
das operaes dos objetos.

Explorar a API Java
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Implementao e Interface de Uso Implementao e Interface de Uso
Por qu Encapsular?
15/08/2012 08:48 Redes de Computadores
23
24
Uma das ideias mais importantes da
orientao a objetos o encapsulamento.
Encapsular significa:
esconder a implementao dos objetos.
O encapsulamento favorece principalmente
dois aspectos de um sistema:
a manuteno e o desenvolvimento
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Por qu encapsular? Por qu encapsular?
25
Manuteno:
A manuteno favorecida pois, uma vez
aplicado o encapsulamento, quando o
funcionamento de um objeto deve ser
alterado, em geral, basta modificar a classe do
mesmo.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Por qu encapsular? Por qu encapsular?
26
Desenvolvimento:
O desenvolvimento favorecido pois, uma vez
aplicado o encapsulamento, conseguimos
determinar precisamente as responsabilidades
de cada classe da aplicao.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Por qu encapsular? Por qu encapsular?
27
O conceito de encapsulamento pode ser
identificado em diversos exemplos do
cotidiano.

Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Por qu encapsular? Por qu encapsular?
28
Exemplo 1: telefone celular

Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Por qu encapsular? Por qu encapsular?
29
Exemplo 2: Carro (uma leitura para refletir)
A interface de uso de um carro composta pelos dispositivos que
permitem que o motorista conduza o veculo (volante, pedais, alavanca
do cmbio, etc).
A implementao do carro composta pelos dispositivos internos (motor,
caixa de cmbio, radiador, sistema de injeo eletrnica ou carburador,
etc) e pelos processos realizados internamente por esses dispositivos.
Nos carros mais antigos, o dispositivo interno que leva o combustvel
para o motor o carburador. Nos carros mais novos, o carburador foi
substitudo pelo sistema de injeo eletrnica. Inclusive, algumas oficinas
especializadas substituem o carburador pelo sistema de injeo
eletrnica. Essa alterao na implementao do carro no afeta a
maneira que o motorista dirige. Todo mundo que sabe dirigir um carro
com carburador tambm sabe dirigir um carro com injeo eletrnica.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Por qu encapsular? Por qu encapsular?
30
Exemplo 2: Carro (uma leitura para refletir)
Hoje em dia, as montadoras fabricam veculos com
cmbio mecnico ou automtico. O motorista
acostumado a dirigir carros com cmbio mecnico
pode ter dificuldade para dirigir carros com
cmbio automtico e vice-versa.
Quando a interface de uso do carro alterada, a
maneira de dirigir afetada, fazendo com que as
pessoas que sabem dirigir tenham que se adaptar.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Por qu encapsular? Por qu encapsular?
31
Exemplo 2: Carro (uma leitura para refletir)
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Por qu encapsular? Por qu encapsular?
Substituio de um volante por um joystick
32
Exemplo 2: Carro (uma leitura para refletir)
No contexto da orientao a objetos, aplicando o
conceito do encapsulamento, as implementaes dos
objetos ficam escondidas.
Dessa forma, podemos modific-las sem afetar a
maneira de utilizar esses objetos.
Por outro lado, se alterarmos a interface de uso que
est exposta, afetaremos a maneira de usar os objetos.
Considere, por exemplo, a mudana do nome de um mtodo
pblico. Todas as chamadas a esse mtodo devem ser
alteradas, o que pode causar diversos efeitos colaterais nas
classes da aplicao.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Por qu encapsular? Por qu encapsular?
Acessando ou modificando atributos
15/08/2012 08:48 Redes de Computadores
33
34
Aplicando a ideia do encapsulamento, os
atributos deveriam ser todos privados.
Consequentemente, os atributos no
podem ser acessados ou modificados por
cdigo escrito fora da classe na qual eles
foram definidos.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando
atributos atributos
35
Porm, muitas vezes, as informaes
armazenadas nos atributos precisam ser
consultadas de qualquer lugar do sistema.
Nesse caso, podemos disponibilizar
mtodos para consultar (obter) os valores
dos atributos.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando
atributos atributos
36
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando
atributos atributos
Permitir a consulta do valor do
atributo em qualquer parte do sistema.
Permitir a consulta do valor do
atributo em qualquer parte do sistema.
37
Da mesma forma, eventualmente,
necessrio modificar (definir) o valor de um
atributo a partir de qualquer lugar do
sistema.
Nesse caso, tambm poderamos criar um
mtodo para essa tarefa.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando
atributos atributos
38
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando
atributos atributos
Permitir a alterao do valor do
atributo em qualquer parte do sistema.
Permitir a alterao do valor do
atributo em qualquer parte do sistema.
39
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando
atributos atributos
Exemplo de alterao e consulta
de valor do atributo
objeto
Exemplo de alterao e consulta
de valor do atributo nome de um
objeto cliente.
40
Uma analogia: carro e celular
Muitas vezes, necessrio consultar e alterar o
valor de um atributo a partir de qualquer lugar
do sistema.
Nessa situao, podemos definir os dois
mtodos definir e obter.
Mas, o que melhor? Criar os dois mtodos
(um de leitura e outro de escrita) ou deixar o
atributo pblico?
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando
atributos atributos
41
Uma analogia: carro e celular
Quando queremos consultar a quantidade de
combustvel de um automvel, olhamos o
painel ou abrimos o tanque de combustvel?
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando
atributos atributos
42
Uma analogia: carro e celular
Quando queremos alterar o toque da
campainha de um celular, utilizamos os menus
do celular ou desmontamos o aparelho?
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando
atributos atributos
43
Acessar ou modificar as propriedades de um
objeto manipulando diretamente os seus
atributos uma abordagem que normalmente
gera problemas.
Por isso, mais seguro para a integridade dos
objetos e, consequentemente, para a integridade
da aplicao, que esse acesso ou essa modificao
sejas realizados atravs de mtodos do objeto.
Utilizando mtodos, podemos controlar como as
alteraes e as consultas so realizadas. Ou seja,
temos um controle maior.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando
atributos atributos
Getter e Setter
15/08/2012 08:48 Redes de Computadores
44
45
Na linguagem Java, h uma conveno de
nomenclatura para os mtodos que tm como
finalidade acessar ou alterar as propriedades
de um objeto.
get - os nomes dos mtodos que permitem a
consulta (obter) dos atributos de um objeto
devem possuir o prefixo get.
set - os nomes dos mtodos que permitem a
alterao (definir) dos atributos de um objeto
devem possuir o prefixo set.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Getter Getter e e Setter Setter
46
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Getter Getter e e Setter Setter -- exemplo exemplo
47
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Getter Getter e e Setter Setter -- exemplo exemplo
Exemplo de alterao e consulta
de valor do atributo de um
objeto
set
Exemplo de alterao e consulta
de valor do atributo numero de um
objeto agencia por meio de
set e get.
getter, setter e is
Todo atributo dever ter o seu respectivo get
e set.
Atributos booleanos tero uma exceo
quanto o mtodo de consulta. Ao invs de
usarmos get deveremos usar is como prefixo
do nome do atributo:
Exemplo no prximo slide:

15/08/2012 08:48 Redes de Computadores
48
49
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Getter Getter,, Setter Setter e e is is -- exemplo exemplo
Exemplo de alterao e consulta
de valor do atributo booleano ativo
por meio de
Exemplo de alterao e consulta
de valor do atributo booleano ativo
por meio de is e set.
50
Programao Orientada a Objetos
Prof. Marcos Andr Pisching
Getter Getter,, Setter Setter e e is is -- exemplo exemplo
Acessando o atributo ativo do
objeto
mtodos
Acessando o atributo ativo do
objeto cliente por meio dos
mtodos set e is.
Automatizando a implementao de
getter, setter e is por meio da
refatorao
15/08/2012 08:48 Redes de Computadores
51
52
Referncias Bibliogrficas Referncias Bibliogrficas
www.k19.com.br (o contedo deste
material baseado na apostila Java e
Orientao a Objetos, de propriedade da
K19 Treinamentos)

Agradecimento:
Agradeo a K19 pela disponibilizao da
excelente apostila sobre Java e Orientao a
Objetos.
Programao Orientada a Objetos
Prof. Marcos Andr Pisching