Pular para conteúdo

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

  1. Encapsulamento
  2. Abstração
  3. Herança
  4. 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!