poo aula04 encapsulamento

52
Programação Orientada a Objetos Encapsulamento em Java Técnico em Informática Prof. Marcos André Pisching, M.Sc.

Upload: andre-da-silva

Post on 23-Nov-2015

25 views

Category:

Documents


0 download

TRANSCRIPT

  • 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