Aula 09 - Conceitos de POO 🏢
O que é POO?
- Programação Orientada a Objetos.
- Paradigma que aproxima o código de conceitos do mundo real.
Os 4 Pilares da POO
- Encapsulamento
- Abstração
- Herança
- Polimorfismo
Classe vs Objeto
- Classe: A planta do arquiteto (Molde).
- Objeto: A casa construída (Instância).
Definindo uma Classe
class ContaBancaria {
public:
string titular;
double saldo;
void depositar(double v) { saldo += v; }
};
Modificadores de Acesso
public: Acesso universal.
private: Acesso restrito à própria classe.
protected: Própria classe e herdeiros.
O Poder do Encapsulamento
- Não deixe que qualquer um mude seu saldo diretamente!
- Torne os atributos privados e use métodos para alterá-los.
Métodos Getters e Setters
void setSaldo(double v) { if (v > 0) saldo = v; }
double getSaldo() { return saldo; }
Abstração
- Focar no essencial e ignorar detalhes irrelevantes.
- Uma classe "Carro" no sistema de mecânica foca em peças; no sistema de trânsito foca em placa/velocidade.
Membros Estáticos (static)
- Atributos ou métodos que pertencem à classe, não ao objeto.
- Compartilhados por todas as instâncias.
Ponteiro implicitando: the this pointer
- Todo objeto possui um ponteiro
this que aponta para si mesmo.
- Útil para distinguir parâmetros de atributos com mesmo nome.
Diagrama de Classe (UML)
classDiagram
class Conta {
-double saldo
+string titular
+depositar(valor)
+sacar(valor)
}
Design de Classes
- Pense nas responsabilidades: "O que esta classe sabe e o que ela faz?"
Interação entre Objetos
- Objetos podem ser passados como parâmetros para outros objetos.
- Ex: Uma classe
Banco que contém uma lista de objetos Conta.
Getters e Setters automáticos?
- Diferente de outras linguagens, no C++ você deve escrevê-los ou usar snippets da IDE.
Composição (has-a)
- Uma classe que contém outra como atributo.
- Ex:
Carro tem um objeto Motor.
Delegação
- Quando um objeto pede para outro realizar uma tarefa.
Boas Práticas: Interface vs Implementação
- Mantenha a interface (pública) o mais simples possível.
- Esconda a complexidade (privada).
Por que C++ é bom para POO?
- Controle total sobre o ciclo de vida do objeto.
- Sem overhead obrigatório de Garbage Collection.
Atributos Constantes em Classes
- Atributos que nunca mudam após criados (ex: ID secreto).
Métodos Constantes
void exibir() const;
- Garante que o método não alterará nenhum atributo do objeto.
Resumo da Aula
- POO organiza sistemas complexos.
- Use classes para criar seus próprios tipos de dados inteligentes.
- Encapsule para proteger sua lógica.
Fim da Aula 09
- Próxima aula: Construtores e Destrutores!