Modele dados com classes
Encapsule o estado e preserve invariantes válidas dos objetos.
- Definir uma classe com estado privado, um construtor e comportamento público.
Uma classe define um tipo que agrupa estado e operações. Mantenha os detalhes de implementação privados e exponha uma interface pública pequena. Um construtor estabelece a invariante inicial do objeto; as listas de inicialização de membros inicializam os campos diretamente. Em C++, structs e classes são parecidas, exceto que os membros de uma struct são públicos por padrão e os de uma class são privados por padrão.
1#include <iostream>
2#include <string>
3
4class Counter {
5public:
6 explicit Counter(std::string label) : label_(label), value_(0) {}
7 void increment() { ++value_; }
8 void print() const { std::cout << label_ << ": " << value_ << "\n"; }
9private:
10 std::string label_;
11 int value_;
12};Counter keeps its state private and exposes operations.
O const depois de print() promete que o método não modifica o estado observável do objeto. explicit impede uma conversão implícita acidental de uma string para um Counter.
Principais conclusões
O encapsulamento protege as invariantes dos objetos.
Inicialize os membros nos construtores.
Funções-membro const permitem acesso só de leitura.
Quiz da aula
5 perguntas · aprovação com 4 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: escreva código em C++
Escreva C++20 no editor e execute com entradas de exemplo. O GCC 14 compila o código pelo Compiler Explorer, um serviço público gratuito; seu código-fonte e a entrada de teste são enviados para lá.
Crie uma pequena classe de contador
Implemente um Counter com um inteiro privado, um método público increment() e um acessor value() const. Leia uma quantidade, incremente essa quantidade de vezes e imprima o valor final.
- Três incrementos
- Nenhum incremento
Seu código é compilado como C++20 com gcc 14 (-Wall -Wextra) e executado no Compiler Explorer (godbolt.org), um serviço público gratuito.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…