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 PblicosAtributos 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 PblicosAtributos 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 PrivadosAtributos 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 PrivadosAtributos Privados
7
A
trib
uto
s p
riva
do
s
Exem
plo
Programao Orientada a Objetos Prof. Marcos Andr Pisching
Atributos PrivadosAtributos Privados
8
D
iagr
ama
de
clas
se
Programao Orientada a Objetos Prof. Marcos Andr Pisching
Atributos PrivadosAtributos 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 PrivadosAtributos 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 PrivadosAtributos 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 PrivadosMtodos 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 PrivadosMtodos Privados
14
Ex
emp
lo:
Programao Orientada a Objetos Prof. Marcos Andr Pisching
Mtodos PrivadosMtodos Privados
continua
15
Ex
emp
lo:
Programao Orientada a Objetos Prof. Marcos Andr Pisching
Mtodos PrivadosMtodos Privados
16
Exemplo:
Programao Orientada a Objetos Prof. Marcos Andr Pisching
Mtodos PrivadosMtodos 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 PblicosMtodos 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 UsoImplementao 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 UsoImplementao 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 UsoImplementao 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 atributosatributos
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 atributosatributos
36 Programao Orientada a Objetos Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando atributosatributos
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 atributosatributos
38 Programao Orientada a Objetos Prof. Marcos Andr Pisching
Acessando ou modificando Acessando ou modificando atributosatributos
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 atributosatributos
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 atributosatributos
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 atributosatributos
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 atributosatributos
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 atributosatributos
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
GetterGetter e e SetterSetter
46 Programao Orientada a Objetos Prof. Marcos Andr Pisching
GetterGetter e e SetterSetter -- exemploexemplo
47 Programao Orientada a Objetos Prof. Marcos Andr Pisching
GetterGetter e e SetterSetter -- exemploexemplo
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
GetterGetter,, SetterSetter e e is is -- exemploexemplo
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
GetterGetter,, SetterSetter e e is is -- exemploexemplo
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 BibliogrficasReferncias 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
Top Related