30
Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense © 2016 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense Campus Sapucaia do Sul Visibilidade e Encapsulamento Professor: Ricardo Luis dos Santos IFSUL – Campus Sapucaia do Sul

Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense© 2016 Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense

Campus Sapucaia do Sul

Visibilidade e EncapsulamentoProfessor: Ricardo Luis dos Santos

IFSUL – Campus Sapucaia do Sul

Page 2: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense

• Pacotes

• Visibilidade

• Encapsulamento

• Hands-On

2

Agenda

Campus Sapucaia do Sul

Page 3: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense

• Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote (package)

• A identificação de um package corresponde à hierarquia de diretórios na qual a classe está inserida

• Observar que o package é utilizado para mapear os diretórios e devem ser separados por ponto “.”

• Observar para que os nomes dos diretórios sejam válidos em todas as plataformas

3

Pacotes

Campus Sapucaia do Sul

Page 4: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense4

Pacotes

Campus Sapucaia do Sul

Page 5: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense

• Podemos utilizar diversos packages em uma classe para isso devemos simplesmente importa-los

• A sintaxe para a importação já é conhecida

5

Pacotes

Campus Sapucaia do Sul

Page 6: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense

VISIBILIDADE

6Campus Sapucaia do Sul

Page 7: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense

• A visibilidade e seus modificadores de acesso definem quais classes podem usar ou ter acesso a um determinado elemento

• Tais elementos podem ser

• Uma classe

• Atributos de uma classe (variáveis)

• Os métodos de uma classe

7

Visibilidade

Campus Sapucaia do Sul

Page 8: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense8

Visibilidade

Campus Sapucaia do Sul

Como impedir esse

tipo de problema?

Page 9: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense9

Visibilidade

Campus Sapucaia do Sul

• A melhor solução para isto é “forçar” quem utiliza a classe Conta a chamar os métodos corretos e não permitir acesso aos atributos da classe

• Quem chama o método não deve saber como os métodos são executados, apenas o que eles fazem

• Podemos definir métodos que não podem ser utilizados e nem vistos fora da classe

• Sempre deves expor o mínimo possível de funcionalidades, para criar um baixo acoplamento entre as classes

Page 10: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense10

Visibilidade

Campus Sapucaia do Sul

• Em Java, possuímos quatro modificadores de acesso

• public

• protected

• private

• “friendly” ou “default”

Page 11: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense11

Visibilidade

Campus Sapucaia do Sul

• public

• A classe pode ser instanciada por qualquer outra classe

• Atributos e métodos são acessíveis (leitura, escrita) por objetos de qualquer classe

• private

• Não se aplica a classes

• Atributos só podem ser acessados por objetos da mesma classe

• Métodos só podem ser chamados por métodos da própria classe

Page 12: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense12

Visibilidade

Campus Sapucaia do Sul

• protected

• Não se aplica a classes

• Atributos e métodos são acessíveis dentro da própria classe, das subclasses e das classes que façam parte do mesmo pacote

• Nada especificado

• Classe é visível somente por classes do mesmo pacote

• Atributos e métodos são acessíveis somente dentro das classes que pertencem ao mesmo pacote.

• Este modo de acesso é também chamado de default(friendly) (amigável)

Page 13: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense13

Visibilidade

Campus Sapucaia do Sul

• Onde podemos aplicar os modificadores de acesso?

Modificador Símbolo Classe Atributos Métodos

public + sim sim sim

protected # não sim sim

default ~ sim sim sim

private - não sim sim

Page 14: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense14

Visibilidade

Campus Sapucaia do Sul

• Grau de visibilidade (quem pode utilizar) os elementos anotados com os modificadores de acesso?

Modificador Classe Package Subclasse* Global**

public sim sim sim sim

protected sim sim sim não

default sim sim não não

private sim não não não

* Subclasse contida em outro package** Acesso por classes de outros projetos ou sistemas

Page 15: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense

ENCAPSULAMENTO

15Campus Sapucaia do Sul

Page 16: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense16

Encapsulamento

Campus Sapucaia do Sul

• Encapsulamento é um dos conceitos fundamentais da programação orientada a objetos

• Encapsulamento (information hiding) é o que se faz quando se restringe o acesso aos dados (atributos) de uma classe ou aos detalhes internos da implementação (métodos)

Page 17: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense17

Encapsulamento

Campus Sapucaia do Sul

• A ideia é fazer da classe uma cápsula, onde seus atributos só poderão ser acessados por determinados métodos

• Técnica de encapsulamento – Pode-se alcançar o encapsulamento de dados configurando as classes da seguinte forma:

• Atributos PRIVATE (Dados encapsulados)

• Métodos PUBLIC

Page 18: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense18

Encapsulamento

Campus Sapucaia do Sul

• Pra que encapsular?

• Para reduzir o acoplamento e assim

• Facilitar alterações na aplicação

• Uma determinada regra de negócio só precisa ser alterada em um único lugar

• Facilitar o aprendizado, pois o mínimo de funcionalidades são expostas tornando o processo menos complexo

• Incrementar o reuso de código

Page 19: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense19

Encapsulamento

Campus Sapucaia do Sul

Page 20: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense20

Encapsulamento

Campus Sapucaia do Sul

• Principais benefícios

• Proteção dos atributos da classe de acessos indevidos ou acidentais

• Possibilidade de definir regras para alteração dos valores mantidos pelos atributos

• Possibilidade de limitar as operações e alterações realizadas pelos elementos que estão acessando a classe

Page 21: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense21

Encapsulamento

Campus Sapucaia do Sul

Isso funcionaria?

Page 22: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense22

Encapsulamento

Campus Sapucaia do Sul

Se não funciona

como deveríamos

fazer para funcionar?

Page 23: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense23

Encapsulamento

Campus Sapucaia do Sul

• Como acessamos os atributos?

• MÉTODOS GET E SET

• São métodos definidos para cada atributo da classe (quando necessário)

• Método get é utilizado para recuperar o valor mantido por um atributo

• Método set é utilizado para alterar o valor mantido por um atributo

Page 24: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense24

Encapsulamento

Campus Sapucaia do Sul

Page 25: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense25

Encapsulamento

Campus Sapucaia do Sul

Page 26: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense26

Encapsulamento

Campus Sapucaia do Sul

Page 27: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense

• Escreva a classe Departamento com as seguintes definições:

• Dois atributos:

• codigo (Integer): não pode receber valores menores que zero

• nome (String): não pode receber valores nulos ou string vazia

• Métodos de acesso aos atributos (get / set)

• Um construtor que receba valores para todos os atributos da classe

• Um método public String toString( ) que retorna todos os dados do departamento em um formato string

• OBS: Usar a técnica de encapsulamento aprendida em aula

27

Hands-On

Campus Sapucaia do Sul

Page 28: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense

• Escreva a classe Funcionário com as seguintes definições:

• Três atributos:

• matricula (inteiro): não pode receber valores menores que zero

• nome (String): não pode receber valores nulos ou string vazia

• depto (utilize a classe Departamento implementada anteriormente): não pode receber valores nulos

• Métodos de acesso aos atributos (get / set)

• Um construtor que receba valores para todos os atributos

• Um método string toString( ) que retorna todos os dados do funcionário em um formato string.

• OBS: Usar a técnica de encapsulamento aprendida em aula28

Hands-On

Campus Sapucaia do Sul

Page 29: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote

Instituto Federal de Educação, Ciência e Tecnologia Sul-Rio-Grandense

• Implementar uma aplicação (uma outra classe com o método main) que cria 02 objetos do tipo Departamento e 10 objetos do tipo Funcionario, a partir de dados fornecidos pelo usuário e, ao final, imprime os valores dos atributos dos objetos criados

• Crie a UML (diagrama de classes) para as classes desse exercício

29

Hands-On

Campus Sapucaia do Sul

Page 30: Visibilidade e Encapsulamento - ricardoluis.com · •Em Java, a visibilidade ou grau de acesso a um determinado atributo ou método está intimamente ligado ao conceito de pacote