Programação Orientada a ObjetosEncapsulamento
Encapsulamento
▪ Como vimos na aula anterior, em orientação a objetos nós temos os modificadores de acesso
▪ A visibilidade de um atributo/método por outras classes está diretamente relacionado ao tipo de modificador de acesso atribuído
▪ Uma boa prática de programação é sempre encapsular dados, pois o encapsulamento garante maior segurança e integridade aos programas
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento
▪ Uma TV pode estar ligada ou desligada
▪ Nela é possível
▪ Mudar o canal
▪ Liga-la
▪ Desliga-la
▪ Mudar o volume
▪ Interagir com aplicativos
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento
▪ Os métodos definem o estado interno de um objeto
▪ E servem como mecanismo primário de comunicação entre objetos.
▪ Esconder o estado interno e requerer que toda interação seja feita através de métodos é exatamente o objetivo do encapsulamento de dados
▪ Um princípio fundamental de OO.
▪ Um dos conceitos de encapsulamento é que as informações só devem estar visíveis para quem deve ve-las
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento
▪ Encapsular significa separar o programa em partes, em “cápsulas” autocontidas, tornando-o mais flexível
▪ Desta forma, promove-se a reutilização de código e a segurança
▪ Além disso, o programa se torna mais fácil de modificar e de dar manutenção
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento
▪ Diversos aspectos da linguagem de programação contribuem para o encapsulamento:
▪ uso correto dos modificadores de acesso
▪ métodos get e set
▪ construtores
▪ entre outros
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – modificadores de acesso
▪ Vimos na aula anterior os modificadores: private, public e protected que podem ser atribuídos para um atributo ou para um método
▪ A tabela a seguir apresenta os modificadores e sua visibilidade dentro de uma mesma classe, do mesmo pacote, de uma subclasse e no projeto (global)
▪ O símbolo verde significa que há visibilidade, o “x” vermelho indica que não há visibilidade
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Modificador Classe Pacote Subclasse Projeto (global)
public
private
protected
nenhum
Encapsulamento – métodos get e set
▪ Métodos para trabalharmos com encapsulamento de dados
▪ setAtributo(parametro) ➔métodos set são conhecidos como métodos modificadores
▪ getAtributo() ➔ métodos get são conhecidos como métodos de acesso
▪ métodos com retorno (com prefixo get) são utilizados para transferir informações entre objetos
▪ o método set não retorna nenhum tipo de informação, por outro lado, ele insere um valor no objeto
▪ Não necessariamente ele precisa iniciar com o prefixo “set”, porém este prefixo pode ajudar na manutenção do código e é uma boa prática na programação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método set
▪ Métodos para trabalharmos com encapsulamento de dados
▪ setAtributo(parametro) ➔métodos set são conhecidos como métodos modificadores
▪ getAtributo() ➔ métodos get são conhecidos como métodos de acesso
▪ métodos com retorno (com prefixo get) são utilizados para transferir informações entre objetos
▪ o método set não retorna nenhum tipo de informação, por outro lado, ele insere um valor no objeto
▪ Não necessariamente ele precisa iniciar com o prefixo “set”, porém este prefixo pode ajudar na manutenção do código e é uma boa prática na programação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método set
▪ Métodos para trabalharmos com encapsulamento de dados
▪ setAtributo(parametro) ➔métodos set são conhecidos como métodos modificadores
▪ getAtributo() ➔ métodos get são conhecidos como métodos de acesso
▪ métodos com retorno (com prefixo get) são utilizados para transferir informações entre objetos
▪ o método set não retorna nenhum tipo de informação, por outro lado, ele insere um valor no objeto
▪ Não necessariamente ele precisa iniciar com o prefixo “set”, porém este prefixo pode ajudar na manutenção do código e é uma boa prática na programação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método set
▪ Métodos para trabalharmos com encapsulamento de dados
▪ setAtributo(parametro) ➔métodos set são conhecidos como métodos modificadores
▪ getAtributo() ➔ métodos get são conhecidos como métodos de acesso
▪ métodos com retorno (com prefixo get) são utilizados para transferir informações entre objetos
▪ o método set não retorna nenhum tipo de informação, por outro lado, ele insere um valor no objeto
▪ Não necessariamente ele precisa iniciar com o prefixo “set”, porém este prefixo pode ajudar na manutenção do código e é uma boa prática na programação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método set
▪ Métodos para trabalharmos com encapsulamento de dados
▪ setAtributo(parametro) ➔métodos set são conhecidos como métodos modificadores
▪ getAtributo() ➔ métodos get são conhecidos como métodos de acesso
▪ métodos com retorno (com prefixo get) são utilizados para transferir informações entre objetos
▪ o método set não retorna nenhum tipo de informação, por outro lado, ele insere um valor no objeto
▪ Não necessariamente ele precisa iniciar com o prefixo “set”, porém este prefixo pode ajudar na manutenção do código e é uma boa prática na programação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método set
▪ Métodos para trabalharmos com encapsulamento de dados
▪ setAtributo(parametro) ➔métodos set são conhecidos como métodos modificadores
▪ getAtributo() ➔ métodos get são conhecidos como métodos de acesso
▪ métodos com retorno (com prefixo get) são utilizados para transferir informações entre objetos
▪ o método set não retorna nenhum tipo de informação, por outro lado, ele insere um valor no objeto
▪ Não necessariamente ele precisa iniciar com o prefixo “set”, porém este prefixo pode ajudar na manutenção do código e é uma boa prática na programação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método set
▪ Métodos para trabalharmos com encapsulamento de dados
▪ setAtributo(parametro) ➔métodos set são conhecidos como métodos modificadores
▪ getAtributo() ➔ métodos get são conhecidos como métodos de acesso
▪ métodos com retorno (com prefixo get) são utilizados para transferir informações entre objetos
▪ o método set não retorna nenhum tipo de informação, por outro lado, ele insere um valor no objeto
▪ Não necessariamente ele precisa iniciar com o prefixo “set”, porém este prefixo pode ajudar na manutenção do código e é uma boa prática na programação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método set
▪ Criaremos uma classe Aluno, e nela vamos criar o atributo nome (tipo String)
▪ O atributo nome é privado, ou seja, só acessível dentro da própria classe
▪ Para inserirmos um valor para o objeto do tipo aluno, criaremos um método setNome(parâmetro), recebendo entre parênteses o nome do aluno
▪ A variável nome da classe Aluno recebe o conteúdo da variável n que está sendo passada por parâmetro
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método set
▪ Agora veja a classe principal criando dois objetos do tipo Aluno (da classe Aluno)
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método get
▪ O método Get retorna uma informação. Não necessariamente ele precisa iniciar com o prefixo “get”, porém este prefixo pode ajudar na manutenção do código e é uma boa prática na programação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método get
▪ O método Get retorna uma informação. Não necessariamente ele precisa iniciar com o prefixo “get”, porém este prefixo pode ajudar na manutenção do código e é uma boa prática na programação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método get
▪ O método Get retorna uma informação. Não necessariamente ele precisa iniciar com o prefixo “get”, porém este prefixo pode ajudar na manutenção do código e é uma boa prática na programação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método set
▪ Na classe Aluno criaremos um método getNome() que será responsável de retornar para a classe principal (ou para outro método) o valor da variável nome
▪ Veja que obrigatoriamente ele tem a ação return nome
▪ O return é obrigatório em um método get, e por isso ao cria-lo é necessário também informar o tipo de retorno (String, int, double, etc)
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Encapsulamento – método set
▪ Na classe principal criamos duas variáveis: nome1 e nome2
▪ Estas variáveis vão receber o retorno do método get da classe Aluno
▪ É extremamente importante que tenha uma variável recebendo retorno do método get
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Construtores
▪ Quando um objeto da classe aluno é criado, a sua cópia do atributo nome é inicializada como vazia
▪ Por padrão.
▪ Mas e se quiséssemos que o atributo fosse inicializado com um valor padrão?
▪ Podemos criar um método construtor, para inicializar cada objeto criado.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Construtores
▪ Um construtor é um método especial, definido com o mesmo nome da classe e executado automaticamente quando um objeto é criado
▪ Não retorna valores;
▪ Não possui tipo de retorno;
▪ Deve ser declarado como público.
▪ Se não especificarmos um construtor, o compilador utilizará o construtor padrão
▪ Vejamos nosso exemplo, agora com um construtor.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Construtores
▪ Na linha 5 temos o método construtor
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Construtores
▪ Notem que um construtor pode possuir parâmetros ou não
▪ Por exemplo, poderíamos não passar nenhum parâmetro e definir um valor padrãodentro do próprio construtor.
▪ Quando um atributo for objeto de outra classe, podemos chamar o construtor da outra classe em um construtor definido por nós
▪ E opcionalmente, especificar inicializações adicionais.
▪ Todas nossas classes devem possuir construtores, para evitarmos lixo em nossosatributos.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Construtores
▪ É possível criarmos mais de um construtor na mesma classe
▪ Sobrecarga de construtores (veremos mais adianta no curso)
▪ O construtor default não possui parâmetros.
▪ Da mesma forma que sobrecarregamos funções;
▪ A diferenciação é feita pelo número de parâmetros enviados no momento da criaçãodo objeto
▪ Diferentes objetos de uma mesma classe podem ser inicializados por construtoresdiferentes.
▪ Escolhemos qual construtor é mais adequado a cada momento.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Construtores
▪ Podemos ainda ter construtores com parâmetros padronizados
▪ O construtor recebe parâmetros para inicializar atributos;
▪ Porém, define parâmetros padronizados, caso não receba nenhum parâmetro.
▪ Suponha uma classe Venda, em que temos os atributos valor e peças
▪ Ao criar um objeto, o programador pode definir a quantidade de peças e o valor da venda;
▪ Porém, se nada for informado, inicializaremos os atributos com o valor -1, usando o mesmo construtor;
▪ É uma forma de economizar o trabalho de sobrecarregar um construtor.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Objetos como Parâmetros de Métodos
▪ Entre os parâmetros que um método pode receber, podemos incluir objetos
▪ Como dito anteriormente, um método só possui acesso aos atributos do objeto que o chamou;
▪ E se precisarmos acessar os atributos de outros objetos?
▪ Podemos passá-los como parâmetros.
▪ Note que para o método acessar os atributos de outros objetos é necessário a utilização do operador .
▪ Suponha uma classe Venda, em que temos os atributos valor e peças
▪ Deseja-se totalizar os valores e as peças de uma venda.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Objetos como Parâmetros de Métodos
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Métodos que retornam Objetos
▪ Podemos modificar nosso exemplo anterior para retornar um objeto com a totalização dos valores
▪ Devemos definir o tipo de retorno como sendo um objeto da classe;
▪ Algum objeto deve receber o valor retornado.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Métodos que retornam Objetos
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Exercício
▪ Na classe Aluno que utilizamos como exemplo, crie os atributos: notaRegimental, notaContinuada, notaTotal, ra;
▪ notaRegimental e notaContinuada deixe como private;
▪ notaTotal deixe como protected;
▪ ra deixe sem modificador de acesso;
▪ Crie na classe Aluno os métodos get e set para cada atributo, todos como public;
▪ Crie o objeto Aluno na classe principal e veja o que acontece ao tentar invocar estes atributos
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Por hoje é só!
▪ Qualquer dúvida:
▪ www.arieldias.com
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Referência
▪ Notas de aula Professor José Romildo Malaquias - UFOP
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda