Introdução a OOP em C++
Parte da seção Programação Orientada a Objetos do Journey de C++ da Coddy — lição 5 de 104.
A Programação Orientada a Objetos organiza o código em classes que agrupam dados e comportamento.
Uma classe simples com membros públicos
class Dog {
public:
std::string name;
int age;
std::string bark() {
return name + " says Woof!";
}
};Criando e usando um objeto
Dog dog;
dog.name = "Buddy";
dog.age = 3;
std::cout << dog.bark() << std::endl;Saída:
Buddy says Woof!Uma classe define a estrutura — quais dados ela contém e quais ações ela pode realizar. Um objeto é uma instância específica que você cria e usa. Membros sob public: podem ser acessados de qualquer lugar.
Desafio
FácilCrie uma classe Dog com membros e métodos públicos:
- Membros públicos:
name(string) eage(int) bark()— retorna"<name> says Woof!"info()— retorna"<name> is <age> years old"
Folha de consulta
A Programação Orientada a Objetos organiza o código em classes que agrupam dados e comportamento.
Uma classe define a estrutura — quais dados ela contém e quais ações ela pode realizar. Um objeto é uma instância específica que você cria e utiliza.
Definindo uma classe com membros públicos:
class Dog {
public:
std::string name;
int age;
std::string bark() {
return name + " says Woof!";
}
};Criando e usando um objeto:
Dog dog;
dog.name = "Buddy";
dog.age = 3;
std::cout << dog.bark() << std::endl;
// Saída: Buddy says Woof!Membros sob public: podem ser acessados de qualquer lugar.
Experimente você mesmo
#include <iostream>
#include "Dog.h"
int main() {
std::string name;
int age;
std::getline(std::cin, name);
std::cin >> age;
Dog dog;
dog.name = name;
dog.age = age;
std::cout << dog.bark() << std::endl;
std::cout << dog.info() << std::endl;
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Fundamentos de OOP
Arquivos ExternosBuild e Compilação em C++Arquivos Header e SourceNamespaces e EscopoIntrodução a OOP em C++Classes vs ObjetosO Ponteiro 'this'Métodos (Funções Membro)Atributos (Membros de Dados)Básico de Ctors e DtorsRecapitulação - Calculadora Simples4Propriedades de Classe
Membros de Instância vs EstáticosGetters e SettersFunções de Membro ConstPalavra-chave MutableMétodos e Variáveis EstáticosFunções e Classes FriendRecapitulação - Gerenciador de Conta Bancária7Herança
Herança BásicaNíveis de Acesso na HerançaOrdem de Chamada de Ctor e DtorSobrescrita de MétodosFunções Virtuais e VTableHerança MúltiplaHerança VirtualRecapitulação - Hierarquia de Funcionários2Gerenciamento de Memória
Memória Stack vs HeapPonteiros e ReferênciasMemória Dinâmica (new/delete)Smart Pointers em C++RAII em C++Recapitulação - Gerenciador de Array Dinâmico5Encapsulamento
Especificadores de Acesso em C++Especificadores de Acesso em DetalhesOcultação de InformaçãoStruct vs ClassClasses Aninhadas e InternasRecapitulação - Sistema de Registros de Alunos8Polimorfismo
Polimorfismo de Compilação vs Tempo de ExecuçãoSobrecarga de FunçõesFunções Virtuais RevisitadasFunções Virtuais PurasClasses AbstratasDesign de Interfaces em C++Dynamic Casting e RTTIRecapitulação - Calculadora de Formas3Construtores e Destrutores
Construtor PadrãoConstrutor ParametrizadoConstrutor de CópiaConstrutor de MovimentaçãoListas de Inicialização do ConstrutorConstrutores DelegadosMergulho Profundo em DestrutoresRegra dos Três / Cinco / ZeroRecapitulação - Classe String6Sobrecarga de Operadores
Introdução à Sobrecarga de OperadoresSobrecarga de Operadores AritméticosSobrecarga de Operadores de ComparaçãoOperadores de StreamSobrecarga do Operador de AtribuiçãoSobrecarga dos Operadores [] e ()Operadores de Conversão de TipoRecapitulação - Classe Matrix9Templates
Templates de FunçãoTemplates de ClasseEspecialização de TemplatesTemplates VariádicosFundamentos de SFINAE e Type TraitsRecapitulação - Container Genérico