Classes vs. objetos
Parte da seção Programação Orientada a Objetos do Journey de C++ da Coddy. Lição 6 de 104.
Uma classe é um modelo que define a estrutura. Um objeto é uma instância específica criada a partir desse modelo.
A classe (modelo)
class Car {
public:
std::string brand;
int year;
std::string getInfo() {
return brand + " (" + std::to_string(year) + ")";
}
};Criando vários objetos (instâncias)
Car car1;
car1.brand = "Tesla";
car1.year = 2023;
Car car2;
car2.brand = "Honda";
car2.year = 2020;
std::cout << car1.getInfo() << std::endl; // Tesla (2023)
std::cout << car2.getInfo() << std::endl; // Honda (2020)Cada objeto é independente. Alterar car1 não afeta car2. Você pode criar vários objetos a partir da mesma classe, cada um contendo seus próprios dados.
Desafio
MédioCrie uma classe Car (modelo). O programa cria dois objetos separados (instâncias) a partir dela, cada um com seus próprios dados:
- Membros
public:brand(string),year(int) getInfo():returns"<brand> (<year>)"
Experimente você mesmo
#include <iostream>
#include "Car.h"
int main() {
std::string brand1, brand2;
int year1, year2;
std::getline(std::cin, brand1);
std::cin >> year1;
std::cin.ignore();
std::getline(std::cin, brand2);
std::cin >> year2;
Car car1;
car1.brand = brand1;
car1.year = year1;
Car car2;
car2.brand = brand2;
car2.year = year2;
std::cout << "Car 1: " << car1.getInfo() << std::endl;
std::cout << "Car 2: " << car2.getInfo() << 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 POO
Arquivos externosBuild e compilação em C++Arquivos de cabeçalho e arquivos-fonteNamespaces e escopoIntrodução à POO em C++Classes vs. objetosO ponteiro 'this'Métodos (funções membro)Atributos (membros de dados)Noções básicas de construtores e destruidoresRevisão - calculadora simples4Propriedades de Classe
Membros de Instância vs. EstáticosGetters e SettersFunções Membro ConstPalavra-chave MutableMétodos e Variáveis EstáticosFunções e Classes FriendRevisão - Gerenciador de Contas Bancárias7Herança
Herança básicaNíveis de acesso da herançaOrdem de chamada de construtor e destrutorSobrescrita de métodosFunções virtuais e VTableHerança múltiplaHerança virtualRevisão - Hierarquia de funcionários10Visão geral da STL
Visão geral e filosofia da STLContêineres da STLIteradoresAlgoritmos da STLFunctors e expressões lambdaRecapitulação - Frequência de palavras13Padrões de Projeto — Parte 1
Introdução aos Padrões de ProjetoPadrão SingletonFactory e Abstract FactoryPadrão BuilderPadrão ObserverPadrão Strategy2Gerenciamento de Memória
Memória Stack vs. HeapPonteiros e ReferênciasMemória Dinâmica (new/delete)Ponteiros Inteligentes em C++RAII em C++Revisão - Gerenciador de Array Dinâmico5Encapsulamento
Especificadores de acesso em C++Especificadores de acesso em profundidadeOcultação de informaçõesStruct vs ClasseClasses aninhadas e internasRecapitulação - Sistema de registros de alunos8Polimorfismo
Polimorfismo em compilação vs. execuçãoSobrecarga de funçõesFunções virtuais revisadasFunções virtuais purasClasses abstratasDesign de interfaces em C++Conversão dinâmica e RTTIRecapitulação — Calculadora de formas11Conceitos Avançados de OOP
Composição vs. HerançaMixins via CRTPIdioma PimplApagamento de TiposClasses Enum e Tipagem ForteTratamento de Exceções em OOPHierarquias de Exceções Personalizadas14Padrões de Projeto — Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão CompositeRAII como Padrão3Construtores e Destrutores
Construtor PadrãoConstrutor ParametrizadoConstrutor de CópiaConstrutor de MovimentoListas de Inicialização do ConstrutorConstrutores DelegantesAprofundamento em DestrutoresRegra dos Três / Cinco / ZeroRevisão - Classe String6Sobrecarga de Operadores
Introdução à Sobrecarga de OperadoresSobrecarga de Operadores AritméticosSobrecarga de Operadores de ComparaçãoOperadores de FluxoSobrecarga do Operador de AtribuiçãoSobrecarga dos Operadores [] e ()Operadores de Conversão de TipoRecapitulação - Classe Matrix9Templates
Templates de FunçõesTemplates de ClassesEspecialização de TemplatesTemplates VariádicosNoções Básicas de SFINAE e Traits de TiposRecapitulação - Contêiner GenéricoPratique por conta própria: Compilador de C++ online