Capítulo 12: Classes e Objetos (POO) 🦸‍♂️💥

Bem-vindo ao coração do C++! Neste capítulo, vamos aprender o pilar da Programação Orientada a Objetos (POO): as Classes e os Objetos, usando o tema Os Vingadores!


📖 O que é Programação Orientada a Objetos?

Até agora, programamos de forma procedural (focada em funções e passos). Na POO, pensamos no mundo como um conjunto de Objetos que interagem entre si.

  • Classe: É o molde, a planta ou a receita de bolo. (Ex: A classe Heroi).
  • Objeto: É a instância real criada a partir do molde. (Ex: O objeto homem_de_ferro).

📖 Exemplo Guiado: Criando um Herói

Vamos criar uma classe Heroi com atributos (nome, poder) e um método (ação).

  1. Crie o arquivo herois.cpp na pasta src/:
#include <iostream>
#include <string>
 
using namespace std;
 
// Definindo a Classe
class Heroi {
public: // Permite que os atributos sejam acessados de fora
    string nome;
    string poder;
 
    // Método (Função da classe)
    void usar_poder() {
        cout << nome << " usou o poder: " << poder << "!" << endl;
    }
};
 
int main() {
    // Criando objetos a partir da classe
    Heroi heroi1;
    heroi1.nome = "Homem de Ferro";
    heroi1.poder = "Super Armadura";
 
    Heroi heroi2;
    heroi2.nome = "Thor";
    heroi2.poder = "Trovao";
 
    // Usando os métodos
    cout << "--- Batalha Iniciada ---" << endl;
    heroi1.usar_poder();
    heroi2.usar_poder();
 
    return 0;
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Compile: g++ herois.cpp -o herois
  3. Execute: ./herois

Resultado Esperado:

--- Batalha Iniciada ---
Homem de Ferro usou o poder: Super Armadura!
Thor usou o poder: Trovao!

📊 Ilustração Visual: Classe vs Objeto

Veja como a classe serve de molde para vários objetos:

graph TD
    A["Classe: Heroi <br> - nome <br> - poder <br> + usar_poder()"] -->|"Instancia"| B["Objeto: heroi1 <br> nome: Homem de Ferro"]
    A -->|"Instancia"| C["Objeto: heroi2 <br> nome: Thor"]

🛠️ Prática Obrigatória 1: Criando Vilões

Crie um programa chamado viloes.cpp com uma classe Vilao que tenha os atributos nome, plano_maligno e um método executar_plano(). Instancie dois vilões (ex: Thanos e Loki) e faça-os executar seus planos!


🔑 Gabarito de Código

Prática 1: viloes.cpp

#include <iostream>
#include <string>
 
using namespace std;
 
class Vilao {
public:
    string nome;
    string plano_maligno;
 
    void executar_plano() {
        cout << nome << " esta executando o plano: " << plano_maligno << "!" << endl;
    }
};
 
int main() {
    Vilao vilao1;
    vilao1.nome = "Thanos";
    vilao1.plano_maligno = "Dizimar metade do universo";
 
    Vilao vilao2;
    vilao2.nome = "Loki";
    vilao2.plano_maligno = "Dominar a Terra";
 
    cout << "--- Planos Malignos Ativados ---" << endl;
    vilao1.executar_plano();
    vilao2.executar_plano();
 
    return 0;
}

📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

(Siga o padrão estabelecido no Guia)


Capitulo Anterior | Proximo Capitulo