Programação Orientada a Objetos (DPADF 0063) Aula 4 – Encapsulamento Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati – www.cafw.ufsm.br/~bruno Separação da interface pública da implementação interna Encapsulamento • Consiste em esconder dados da classe deixando-os apenas disponíveis através de métodos. • Uma classe bem definida deve separar completamente sua interface pública da implementação interna. Como garantir o encapsulamento? • O conceito de encapsulamento se aplica utilizando modificadores de acesso nos membros da classe. • Atributos de instância devem ser declarados com modificador private; • O acesso ao estado do objeto somente deve ser feito por métodos public (que constituem a interface do objeto). Modificadores de acesso (definem o escopo/visibilidade de um método/atributo) • public ▫ Simbolizado por “+” ▫ Indica que o atributo/método pode ser acessado por objetos de outras classes; • private ▫ Simbolizado por “-” ▫ Protege o atributo do acesso externo, permitindo ao mesmo ser acessado somente por métodos daquela classe e pelo objeto instanciado; • protected ▫ Simbolizado por “#” ▫ Permite o acesso a objetos de classes filhas mas protege do acesso de objetos que não fazem parte da hierarquia de classes (permite o acesso ao atributo se a classe que estiver acessando fizer parte do mesmo pacote); Modificadores de acesso (cont.) • Toda vez que um membro tem modificador de acesso public, ele é considerado uma interface, pois interage com o meio externo ao objeto, • Toda vez que um membro tem modificador de acesso private ele é considerado encapsulado pois não existe interação externa. Getters & Setters • Uma vez que os atributos são privados, precisamos de mecanismos para alterar (set) e pegar seu conteúdo (get). • Um método set é um método sem retorno (void) e com parâmetros que altera o valor de um ou mais atributos; • Um método get é um método sem parâmetros e com tipo de retorno definido que devolve o valor de determinado atributo. Atenção para o uso indiscriminado de Getters & Setters • Observe as duas classes: Nunca crie um getter ou setter sem uma necessidade real. Exercícios para fixação Encapsulando as eleições • Codifique uma classe para representar uma urna eletrônica. A classe deve conter um contador de votos brancos, um contador de votos nulos e um contador para cada candidato (utilize um vetor). A urna deve ser inicializada e após sua apuração não deve mais permitir votos. • Deve ser permitido; ▫ ▫ ▫ ▫ Votar; Votar em branco; Anular o voto; Apurar a eleição.