Skip to content

Latest commit

 

History

History
50 lines (46 loc) · 1.95 KB

encapsulamento.org

File metadata and controls

50 lines (46 loc) · 1.95 KB

Encapsulamento

1 Encapsulamento em orientação a objetos

Agrupar dados e subrotinas em um único lugar

  • Relação com o mecanismo de herança

\pause Algumas questões

  • Membros privados da base → visíveis nas derivações?
  • \pause Membros públicos na base → continuam públicos?
  • \pause Controle da classe base → visibilidade dos seus atrib.?

\pause Encapsulamento através de controladores de visibilidade

  • Público, privado e protegido

2 Exemplo de regras de visibilidade (C++)

Classe limita a visibilidade dos seus membros

  • public: visível onde a classe está no escopo
  • private: visível dentro dos métodos da própria classe
  • protected: como private, mas visível para derivadas
    • \pause Quebrando estas regras com friend

\pause Relação através da herança (base, derivada)

  • Derivada restringe, jamais aumenta a visibilidade
  • Membros privados da base não são visíveis nas derivadas
  • Membros públicos e protegidos assim se mantém
  • Se class derivada : protected base
    • Membros públicos e protegidos → protegidos
  • Se class derivada : private base
    • Membros públicos e protegidos → privados

\pause Alterar visibilidade de membros da base

  • Usando using dentro da definição da derivada

3 Caso das linguagens Smalltalk e Objective-C

Atributo → público, privado e protegido

\pause Inútil discustir visibilidade de métodos

  • Natureza dinâmica da chamada de métodos
  • Tudo é público
    • \pause Python tem abordagem semelhante