AULA 10 ENCAPSULAMENTO É um mecanismo que coloca junto o código (métodos) e os dados (atributos), mantendo-os controlados em relação ao seu nível de acesso. O conceito de encapsulamento está intimamente ligado ao conceito de ocultamento da informação. Portanto, podemos afirmar que encapsular significa, na orientação à objetos, separar um programa em partes isolando-as o máximo possível, protegendo o acesso direto aos atributos de uma classe com o objetivo de deixar o programa mais flexível e facilitar o trabalho no código. Para isso se faz necessário o uso de modificadores de acesso mais restritivos nos atributos da classe. Esses atributos são manipulados indiretamente com o uso de métodos específicos. O padrão usado para a manipulação desses atributos são os métodos set (que define o valor do atributo) e get (que retorna o valor do atributo). PUBLIC Deixa visível a classe ou membro para todas as outras classes, subclasses e pacotes do projeto Java. PRIVATE Deixa o atributo visível apenas para a classe em que o mesmo se encontra. PROTECTED Deixa o atributo visível para todas as outras classes e subclasses que pertencem ao mesmo pacote. Neste caso apenas as classes do mesmo pacote tem acesso ao membro, enquanto nem mesmo pacotes de suas subclasses tem acesso. DEFAULT (PADRÃO) A classe e/ou seus membros são acessíveis somente por classes do mesmo pacote. Um objeto encapsula estado (dados) e métodos (código) que podem acessar dados. Ilustração do conceito de objeto: Prof. Marcelo Henrique dos Santos OBJETIVO: Controlar o acesso de atributos e métodos de um objeto, através de uma interface bem definida. BENEFÍCIOS: Manutenção de software; Evolução de software; VANTAGENS: Proteger os atributos do objeto quanto à manipulação por outros objetos (proteção contra acesso não autorizado, valores inconsistentes, entre outras possibilidades). Esconder a estrutura interna do objeto de modo que a interação com este objeto seja relativamente simples e, à medida do possível, siga um padrão de desenvolvimento que facilite o entendimento dos programadores que o utilizem. SINTAXE DOS MODERADORES DE ACESSO Prof. Marcelo Henrique dos Santos ATIVIDADE – ENCAPSULAMENTO 01 – Crie uma classe em Java que: a) Contenha os atributos nome, idade e altura; b) Encapsule os atributos; c) Crie um método main que mostre os valores que estão nos atributos. Prof. Marcelo Henrique dos Santos 02 – Quais são as restrições impostas pelos comandos public, protected e private em Java? 03 – O método main de uma classe deve, obrigatoriamente, usar o modificador public? Justifique a sua resposta. 04 – Dada a classe abaixo, faça as modificações necessárias para encapsular os atributos. public class ContaBancaria { public String correntista; public float saldo; } 05 – Considere o Código abaixo e responda às seguintes questões: a) A classe Tempo segue os princípios do encapsulamento? Comente a respeito. b) Como é possível estender o código para atender aos princípios do encapsulamento? Quais seriam as vantagens que isto traria? Faça as modificações necessárias no código. -------------------------------------------------------------------------------------------------------class Tempo { int hora; int minuto; Tempo() { }; Prof. Marcelo Henrique dos Santos public static void main(String arg[]) { Tempo t = new Tempo(); t.hora = 3; t.minuto = 25; System.out.println("A hora agora é " + t.hora + ":" + t.minuto); } } -------------------------------------------------------------------------------- Prof. Marcelo Henrique dos Santos