Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução
▪ Abstração
▪ Simplificação de um problema difícil
Programação e Desenvolvimento de Software 2 ▪ É o ato de representar as características
Programação Orientada a Objetos (Encapsulamento) essenciais sem incluir os detalhes por trás
Prof. Douglas G. Macharet
douglas.macharet@dcc.ufmg.br ▪ Ocultação de dados
▪ Informações desnecessárias devem ser
escondidas do mundo externo
▪ Usuário do TAD x Programador do TAD
Introdução Introdução
▪ Encapsulamento
▪ Mecanismo que coloca juntos os dados e suas
funções associadas, mantendo-os controlados
em relação ao seu nível de acesso
▪ Proporciona abstração
▪ Separa a visão externa da visão interna
▪ Protege a integridade dos dados do Objeto
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 3 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 4
Introdução Introdução
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 5 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 6
1
12/04/2019
Encapsulamento Encapsulamento
Método
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 7 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 8
Encapsulamento Encapsulamento
Benefícios C++
https://en.cppreference.com/w/cpp/language/access
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 9 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 10
Encapsulamento Encapsulamento
Modificadores de acesso Modificadores de acesso – Public
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 11 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 12
2
12/04/2019
Encapsulamento Encapsulamento
Modificadores de acesso – Public Modificadores de acesso – Protected
int y;
};
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 13 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 14
Encapsulamento Encapsulamento
Modificadores de acesso – Protected Modificadores de acesso – Private
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 15 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 16
Encapsulamento Encapsulamento
Modificadores de acesso – Private Modificadores de acesso – Private (Exemplo 1)
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 17 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 18
3
12/04/2019
Encapsulamento Encapsulamento
Modificadores de acesso – Private (Exemplo 2) Modificadores de acesso – Private (Exemplo 3)
class Ponto {
private:
class Ponto { class EstruturaPonto {
public:
double x;
private: double y;
int _x; };
int _y;
EstruturaPonto p;
Ponto(int x, int y) : _x(x), _y(y) {}
public:
Ponto(int x, int y) {
}; p.x = x;
p.y = y;
}
};
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 19 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 20
Encapsulamento Encapsulamento
Modificadores de acesso Modificadores de acesso
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 21 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 22
Encapsulamento Encapsulamento
Acessando e modificando atributos Getters e Setters
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 23 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 24
4
12/04/2019
Encapsulamento Encapsulamento
Getters e Setters Getters e Setters
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 25 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 26
Encapsulamento Exercício
Getters e Setters
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 27 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 28
Exercício Exercício
class Conta {
private:
int _agencia;
class Conta { int _numero;
double _saldo = 0;
public:
int agencia; public:
int numero;
double saldo; Conta(int agencia, int numero) : _agencia(agencia), _numero(numero){}
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 29 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 30
5
12/04/2019
Exercício Exercício
class Conta { class Conta {
private: {...}
int _agencia;
int _numero; public:
double _saldo = 0;
{...}
public:
void depositar(double valor) {
{...} this->_saldo += valor;
this->_saldo -= 0.25;
void depositar(double valor) { }
this->_saldo += valor;
} void sacar(double valor) {
this->_saldo -= valor;
void sacar(double valor) { this->_saldo -= 0.25;
this->_saldo -= valor; }
} };
};
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 31 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 32
Exercício Exercício
class Conta { class Conta {
{...} private:
{...}
public:
void _descontarTarifa() {
{...} this->_saldo -= 0.25;
}
void depositar(double valor) {
this->_saldo += valor; public:
descontarTarifa(); {...}
}
void depositar(double valor) {
void sacar(double valor) { this->_saldo += valor;
this->_saldo -= valor; descontarTarifa();
descontarTarifa(); }
}
void sacar(double valor) {
void descontarTarifa() { this->_saldo -= valor;
this->_saldo -= 0.25; descontarTarifa();
} }
}; };
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 33 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 34
Exercício Exercício
private: private:
{...} {...}
public: public:
{...} {...}
}; };
https://wandbox.org/permlink/gMs86x8taTO0CLJj
https://en.cppreference.com/w/cpp/language/constexpr
PDS 2 - Programação Orientada a Objetos (Encapsulamento) 35 PDS 2 - Programação Orientada a Objetos (Encapsulamento) 36