programação orientada a objeto - ariel diasarieldias.com/material/2019-2/pg2/aula2.pdf ·...

34
Programação Orientada a Objetos Encapsulamento

Upload: others

Post on 25-Aug-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

Programação Orientada a ObjetosEncapsulamento

Page 2: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 3: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 4: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 5: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 6: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 7: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 8: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 9: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 10: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 11: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 12: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 13: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 14: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 15: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 16: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 17: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 18: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 19: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 20: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 21: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 22: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 23: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 24: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

Construtores

▪ Na linha 5 temos o método construtor

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 25: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 26: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 27: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 28: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 29: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

Objetos como Parâmetros de Métodos

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 30: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 31: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

Métodos que retornam Objetos

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 32: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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

Page 33: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

Por hoje é só!

▪ Qualquer dúvida:

▪ www.arieldias.com

Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda

Page 34: Programação Orientada a Objeto - Ariel Diasarieldias.com/material/2019-2/PG2/Aula2.pdf · Encapsulamento Como vimos na aula anterior, em orientação a objetos nós temos os modificadores

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