Linguagem C++: POO, Templates e Standard Template Library (STL)
🧩 Exercícios Práticos — Linguagem C++: POO, Templates e Standard Template Library (STL)
Instruções Gerais:
- Resolva as atividades em ordem progressiva de maturidade.
- Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
- Consulte o gabarito comentado ao final de cada questão para autoavaliação.
🎯 Nível 1: Fundamentos
Problema 02.1 — Encapsulamento com Classes em C++ e Construtores
Contexto: Encapsulamento com Classes em C++ e Construtores no contexto de Linguagem C++: POO, Templates e Standard Template Library (STL).
Requisitos de Execução:
- Criar classe
ContaBancariacom saldo privado e métodosdepositar()esacar().
Resultado Esperado
Classe instanciada com encapsulamento de estado.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_02_1_SeuNome - Envie na tarefa:
Atividade Cap 02 - Linguagem C++: POO, Templates e Standard Template Library (STL)
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <string>
class Conta {
private:
std::string titular;
double saldo;
public:
Conta(std::string t, double s) : titular(t), saldo(s) {}
void depositar(double v) { saldo += v; }
double getSaldo() const { return saldo; }
};
int main() {
Conta c("Carlos", 1000.0);
c.depositar(250.0);
std::cout << "Saldo atual: R$ " << c.getSaldo() << std::endl;
return 0;
}
🔍 Nível 2: Prática
Problema 02.2 — Standard Template Library (STL): std::vector, std::map e Algoritmos
Contexto: Standard Template Library (STL): std::vector, std::map e Algoritmos no contexto de Linguagem C++: POO, Templates e Standard Template Library (STL).
Requisitos de Execução:
- Utilizar
std::vectorcomstd::sortestd::mappara contagem de frequências.
Resultado Esperado
Coleções STL manipuladas com algoritmos canônicos.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_02_2_SeuNome - Envie na tarefa:
Atividade Cap 02 - Linguagem C++: POO, Templates e Standard Template Library (STL)
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
int main() {
std::vector<int> nums = {40, 10, 30, 20};
std::sort(nums.begin(), nums.end());
std::map<std::string, int> estoque = {{"Notebook", 5}, {"Mouse", 20}};
std::cout << "Menor numero: " << nums[0] << " | Mouse no estoque: " << estoque["Mouse"] << std::endl;
return 0;
}
⚡ Nível 3: Integração
Problema 02.3 — Gerenciamento RAII e Smart Pointers (std::unique_ptr)
Contexto: Gerenciamento RAII e Smart Pointers (std::unique_ptr) no contexto de Linguagem C++: POO, Templates e Standard Template Library (STL).
Requisitos de Execução:
- Gerenciar recurso dinâmico com
std::unique_ptrgarantindo liberação automática no fim de escopo.
Resultado Esperado
Smart pointers RAII eliminando risco de Memory Leak.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_02_3_SeuNome - Envie na tarefa:
Atividade Cap 02 - Linguagem C++: POO, Templates e Standard Template Library (STL)
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <memory>
class ConexaoBD {
public:
ConexaoBD() { std::cout << "Conexao aberta.
"; }
~ConexaoBD() { std::cout << "Conexao liberada com seguranca (RAII).
"; }
};
int main() {
auto conn = std::make_unique<ConexaoBD>();
return 0;
}
🏆 Nível 4: Desafio Corporativo
Problema 02.4 — Templates Genéricos com Concepts em C++20
Contexto: Templates Genéricos com Concepts em C++20 no contexto de Linguagem C++: POO, Templates e Standard Template Library (STL).
Requisitos de Execução:
- Criar template restrito com
std::integralque realize operações numéricas seguras.
Resultado Esperado
Templates modernos C++20 com checagem estática de restrições.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_02_4_SeuNome - Envie na tarefa:
Atividade Cap 02 - Linguagem C++: POO, Templates e Standard Template Library (STL)
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <concepts>
template<std::integral T>
T somarSegura(T a, T b) {
return a + b;
}
int main() {
std::cout << "Soma de inteiros com Concept: " << somarSegura(15, 25) << std::endl;
return 0;
}