O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Encapsulamento em Orientação a Objetos

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 23 Anúncio

Encapsulamento em Orientação a Objetos

Baixar para ler offline

Um dos pilares da orientação a objetos, o Encapsulamento é o conceito responsável pela definição de acessos as classes e seus métodos e atributos. Juntamente com a Herança e o Polimorfismo, itens essenciais a compreensão deste paradigma de programação.

Um dos pilares da orientação a objetos, o Encapsulamento é o conceito responsável pela definição de acessos as classes e seus métodos e atributos. Juntamente com a Herança e o Polimorfismo, itens essenciais a compreensão deste paradigma de programação.

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Quem viu também gostou (20)

Anúncio

Semelhante a Encapsulamento em Orientação a Objetos (20)

Anúncio

Mais recentes (20)

Encapsulamento em Orientação a Objetos

  1. 1. Metodologia e Linguagem de Programação 1
  2. 2. Encapsulamento
  3. 3. Encapsulamento - Definição • Encapsular seria o mesmo que esconder todos os membros de uma classe, além de esconder como funcionam as rotinas (no caso métodos) do nosso sistema. Seria uma espécie de proteção. • Encapsular é fundamental para que seu sistema seja suscetível a mudanças: não precisaremos mudar uma regra de negócio em vários lugares, mas sim em apenas um único lugar, já que essa regra está encapsulada. Metodologia e Linguagem de Programação 4
  4. 4. Encapsulamento - Definição • Para protegermos os atributos e métodos, por tanto, podemos mudar seus modificadores. O principal deles é o modificador private que faz com que ninguém consiga modificar, nem mesmo ler, o atributo em questão. • No exemplo a seguir, temos uma classe chamada Funcionário com um atributo do tipo Double chamado salário: Metodologia e Linguagem de Programação 5 class Funcionario { double salario ; }
  5. 5. Encapsulamento - Definição • No exemplo, o atributo salario pode ser acessado ou modificado por código escrito em qualquer classe que esteja no mesmo diretório que a classe Funcionario. Portanto, o controle desse atributo é descentralizado. • Como fazer para proteger o acesso a este atributo para que ele não seja alterado por qualquer classe? Metodologia e Linguagem de Programação 6
  6. 6. Encapsulamento - Definição • Podemos fazê-lo incluindo o modificador Private no atributo. Exemplo: Metodologia e Linguagem de Programação 7 class Funcionario { private double salario ; void aumentaSalario ( double aumento ) { // lógica para aumentar o salário } }
  7. 7. Encapsulamento - Definição • Um atributo privado só pode ser acessado ou alterado por código escrito dentro da classe na qual ele foi definido. Se algum código fora da classe Funcionário tentar acessar ou alterar o valor do atributo privado salario, um erro de compilação será gerado. • Por isso, apenas um método pertencente a própria classe podem alterar o valor deste atributo. O intuito é ter sempre um controle centralizado do dados dos objetos para facilitar a manutenção do sistema e a detecção de erros. Metodologia e Linguagem de Programação 8
  8. 8. Encapsulamento Basicamente, usamos quatro tipos de encapsulamento que são divididos em dois níveis: • Nível de classe ou topo: Quando determinamos o acesso de uma classe inteira que pode ser public ou package- private (padrão); • Nível de membro: Quando determinamos o acesso de atributos ou métodos de uma classe que podem serpublic, private, protected ou package-private (padrão). Metodologia e Linguagem de Programação 9
  9. 9. Encapsulamento • Public: O modificador public deixará visível a classe ou membro para todas as outras classes, subclasses e pacotes do projeto Java. • Private: O modificador private deixará visível o atributo apenas para a classe em que este atributo se encontra. • Protected: O modificador protected deixará visível o atributo para todas as outras classes e subclasses que pertencem ao mesmo pacote. A principal diferença é que apenas as classes do mesmo pacote tem acesso ao membro. O pacote da subclasse não tem acesso ao membro. • Sem Modificador (Padrão ou Default): Por padrão, a linguagem Java permite acesso aos membros apenas ao pacote em que ele se encontra. Metodologia e Linguagem de Programação 10
  10. 10. Métodos Privados • O papel de alguns métodos pode ser o de auxiliar outros métodos da mesma classe. E muitas vezes, não é correto chamar esses métodos auxiliares de fora da sua classe diretamente. • No próximo exemplo, temos o método descontaTarifa() como um método auxiliar dos métodos deposita() e saca(). Além disso, ele não deve ser chamado diretamente, pois a tarifa só deve ser descontada quando ocorre um depósito ou um saque. Exemplo: Metodologia e Linguagem de Programação 11
  11. 11. Exemplo: Metodologia e Linguagem de Programação 12 class Conta { private double saldo ; void deposita ( double valor ) { this.saldo += valor ; this.descontaTarifa (); } void saca ( double valor ) { this.saldo -= valor ; this.descontaTarifa (); } // Método privado para que não seja alterado fora da classe private void descontaTarifa () { this.saldo -= 0.1; } }
  12. 12. Métodos Públicos • Para que um método seja visível em outras classes, é necessário que ele seja do tipo Public. Do contrário, seu modificador será o padrão (default), que permite que ele seja visível apenas dentro do próprio pacote de criação. • Os pacotes em Java são os responsáveis pela organização do projeto e pela proteção de parte do código em restrições específicas. Exemplo: Metodologia e Linguagem de Programação 13
  13. 13. Exemplo: Metodologia e Linguagem de Programação 14 class Conta { private double saldo ; // Método público public void deposita ( double valor ) { this.saldo += valor ; this.descontaTarifa (); } // Método público public void saca ( double valor ) { this.saldo -= valor ; this.descontaTarifa (); } // Método privado private void descontaTarifa () { this.saldo -= 0.1; } }
  14. 14. MAS... Por quê encapsular? Metodologia e Linguagem de Programação 15
  15. 15. MAS... Por quê encapsular? • Uma das ideias mais importantes da orientação a objetos é o encapsulamento. Encapsular significa esconder a Implementação dos objetos. O encapsulamento favorece principalmente dois aspectos de um sistema: a manutenção e o desenvolvimento. Metodologia e Linguagem de Programação 16
  16. 16. MAS... Por quê encapsular? • A manutenção é favorecida pois, uma vez aplicado o encapsulamento, quando o funcionamento de um objeto deve ser alterado, em geral, basta modificar a classe do mesmo. • O desenvolvimento é favorecido pois, uma vez aplicado o encapsulamento, conseguimos determinar precisamente as responsabilidades de cada classe da aplicação. • O conceito de encapsulamento pode ser identificado em diversos exemplos do cotidiano. Metodologia e Linguagem de Programação 17
  17. 17. MAS... E se tudo for encapsulado? • Se todos os atributos forem do tipo Private, teremos um acesso a esses atributos exclusivamente por Métodos. Exemplo: Metodologia e Linguagem de Programação 18 class Cliente { private String nome ; public String consultaNome () { return this . nome ; } }
  18. 18. MAS... E se tudo for encapsulado? • Da mesma forma, eventualmente, é necessário modificar o valor de um atributo a partir de qualquer lugar do sistema. Nesse caso, também poderíamos criar um método para essa tarefa. Exemplo: Metodologia e Linguagem de Programação 19 class Cliente { private String nome ; public void alteraNome (String nome) { return this . nome = nome ; } }
  19. 19. Exercício 1 • Crie um projeto no Eclipse chamado Encapsulamento. • Defina uma classe para representar os funcionários do banco com um atributo para guardar os salários e outro para os nomes. • Crie uma classe Teste, testando a classe Funcionario, criando um objeto e manipulando diretamente os seus atributos. Metodologia e Linguagem de Programação 20
  20. 20. Exercício 2 • Modifique a classe anterior (Funcionario), utilizando os conceitos de encapsulamento (tornando os atributos privados). Depois, tente compilar a classe teste e observe o resultado. Metodologia e Linguagem de Programação 21
  21. 21. Exercício 3 • Crie métodos de acesso com nomes padronizados para os atributos definidos na classe Funcionario (gets e sets). • Altere a classe Teste também para que ela utilize os métodos de acesso ao invés de manipular os atributos do objeto da classe Funcionario diretamente. Metodologia e Linguagem de Programação 22
  22. 22. Exercício 4 • Crie um método chamado Aumenta Salário dentro da classe Funcionário, que deverá receber um valor e somar ao valor do salário. Teste o mesmo dentro da classe Teste. Metodologia e Linguagem de Programação 23
  23. 23. Exercício 5 • Crie um método chamado Descontos dentro da classe Funcionário, que deverá subtrair de salario os descontos (tipo INSS) do valor do salário. Teste o mesmo dentro da classe Teste. Metodologia e Linguagem de Programação 24

×