Prévia do material em texto
1. Crie uma classe chamada “Círculo” que possua um atributo para armazenar o raio
e métodos para calcular a área e o perímetro do círculo.
#include <iostream>
#include <cmath>
class Circulo {
private:
double raio;
public:
// Construtor
Circulo(double r) {
raio = r;
}
// Método para calcular a área do círculo
double calcularArea() {
return M_PI * raio * raio;
}
// Método para calcular o perímetro do círculo
double calcularPerimetro() {
return 2 * M_PI * raio;
}
};
int main() {
double raio;
std::cout << "Digite o raio do círculo: ";
std::cin >> raio;
Circulo circ(raio);
std::cout << "Área do círculo: " << circ.calcularArea() << std::endl;
std::cout << "Perímetro do círculo: " << circ.calcularPerimetro() << std::endl;
return 0;
}
2. Implemente uma classe chamada “ContaBancária” que possua atributos para
armazenar o número da conta, nome do titular e saldo. Adicione métodos para
realizar depósitos e saques.
#include <iostream>
#include <string>
class ContaBancaria {
private:
std::string numeroConta;
std::string nomeTitular;
float saldo;
public:
// Construtor
ContaBancaria(std::string numero, std::string nome, float saldo_inicial) {
numeroConta = numero;
nomeTitular = nome;
saldo = saldo_inicial;
}
// Método para realizar um depósito
void depositar(float valor) {
saldo += valor;
std::cout << "Depósito de " << valor << " realizado com sucesso." << std::endl;
}
// Método para realizar um saque
void sacar(float valor) {
if (valor > saldo) {
std::cout << "Saldo insuficiente." << std::endl;
} else {
saldo -= valor;
std::cout << "Saque de " << valor << " realizado com sucesso." << std::endl;
}
}
// Método para exibir informações da conta
void exibirInformacoes() {
std::cout << "Número da Conta: " << numeroConta << std::endl;
std::cout << "Nome do Titular: " << nomeTitular << std::endl;
std::cout << "Saldo: " << saldo << std::endl;
}
};
int main() {
// Exemplo de uso da classe ContaBancaria
ContaBancaria conta("12345", "Fulano", 1000.0); // Criando uma conta com número
"12345", titular "Fulano" e saldo inicial de 1000.0
conta.exibirInformacoes(); // Exibindo informações da conta
conta.depositar(500); // Realizando um depósito de 500
conta.sacar(200); // Realizando um saque de 200
conta.exibirInformacoes(); // Exibindo informações atualizadas da conta
return 0;
}
3. Crie uma classe chamada “Retângulo” que possua atributos para armazenar a
largura e a altura. Implemente métodos para calcular a área e o perímetro do
retângulo.
#include <iostream>
class Retangulo {
private:
float largura;
float altura;
public:
// Construtor
Retangulo(float l, float a) {
largura = l;
altura = a;
}
// Método para calcular a área do retângulo
float calcularArea() {
return largura * altura;
}
// Método para calcular o perímetro do retângulo
float calcularPerimetro() {
return 2 * (largura + altura);
}
};
int main() {
// Exemplo de uso da classe Retangulo
Retangulo retangulo(5, 3); // Criando um retângulo com largura 5 e altura 3
// Calculando e exibindo a área do retângulo
std::cout << "Área do retângulo: " << retangulo.calcularArea() << std::endl;
// Calculando e exibindo o perímetro do retângulo
std::cout << "Perímetro do retângulo: " << retangulo.calcularPerimetro() << std::endl;
return 0;
}
4. Implemente uma classe chamada “Aluno” que possua atributos para armazenar o
nome, a matrícula e as notas de um aluno. Adicione métodos para calcular a média
das notas e verificar a situação do aluno (aprovado ou reprovado).
#include <iostream>
#include <string>
#include <vector>
class Aluno {
private:
std::string nome;
std::string matricula;
std::vector<float> notas;
public:
// Construtor
Aluno(std::string nome_aluno, std::string matricula_aluno) {
nome = nome_aluno;
matricula = matricula_aluno;
}
// Método para adicionar uma nota
void adicionarNota(float nota) {
notas.push_back(nota);
}
// Método para calcular a média das notas
float calcularMedia() {
if (notas.empty()) {
return 0; // Retorna 0 se não houver notas registradas
}
float soma = 0;
for (float nota : notas) {
soma += nota;
}
return soma / notas.size();
}
// Método para verificar a situação do aluno
std::string verificarSituacao() {
float media = calcularMedia();
if (media >= 6.0) {
return "Aprovado";
} else {
return "Reprovado";
}
}
};
int main() {
// Exemplo de uso da classe Aluno
Aluno aluno("Fulano", "12345"); // Criando um aluno com nome "Fulano" e matrícula
"12345"
// Adicionando notas ao aluno
aluno.adicionarNota(7.5);
aluno.adicionarNota(8.0);
aluno.adicionarNota(5.5);
// Calculando a média e verificando a situação do aluno
float media = aluno.calcularMedia();
std::string situacao = aluno.verificarSituacao();
// Exibindo informações sobre o aluno
std::cout << "Nome do Aluno: " << aluno.nome << std::endl;
std::cout << "Matrícula: " << aluno.matricula << std::endl;
std::cout << "Média das Notas: " << media << std::endl;
std::cout << "Situação: " << situacao << std::endl;
return 0;
}
5. Crie uma classe chamada “Funcionário” com atributos para armazenar o nome, o
salário e o cargo do funcionário. Implemente métodos para calcular o salário líquido,
considerando descontos de impostos e benefícios.
#include <iostream>
#include <string>
using namespace std;
class Funcionario {
private:
string nome;
double salarioBruto;
string cargo;
public:
// Construtor
Funcionario(string nome, double salario, string cargo) {
this->nome = nome;
this->salarioBruto = salario;
this->cargo = cargo;
}
// Métodos getter e setter
string getNome() const {
return nome;
}
void setNome(string nome) {
this->nome = nome;
}
double getSalarioBruto() const {
return salarioBruto;
}
void setSalarioBruto(double salario) {
this->salarioBruto = salario;
}
string getCargo() const {
return cargo;
}
void setCargo(string cargo) {
this->cargo = cargo;
}
// Método para calcular o salário líquido
double calcularSalarioLiquido() const {
// Assumindo algumas taxas de desconto para imposto e benefícios
const double taxaImposto = 0.15; // 15% de imposto
const double valorBeneficios = 300.0; // Benefícios fixos
double descontoImposto = salarioBruto * taxaImposto;
double salarioLiquido = salarioBruto - descontoImposto + valorBeneficios;
return salarioLiquido;
}
// Método para exibir informações do funcionário
void exibirInformacoes() const {
cout << "Nome: " << nome << endl;
cout << "Cargo: " << cargo << endl;
cout << "Salário Bruto: R$ " << salarioBruto << endl;
cout << "Salário Líquido: R$ " << calcularSalarioLiquido() << endl;
}
};
int main() {
// Criando um objeto do tipo Funcionario
Funcionario funcionario("João Silva", 5000.0, "Engenheiro");
// Exibindo informações do funcionário
funcionario.exibirInformacoes();
return 0;
}
6. Implemente a classe Funcionario com nome, salario e os métodos
addAumento(double valor), ganhoAnual() e exibeDados() - imprime os valores do
funcionário.
a. crie a classe Assistente, que também é um funcionário, e que possui um
número de matrícula (faça os métodos GET e SET). Sobrescreva o método
exibeDados().
b. sabendo que os Assistentes Técnicos possuem um bônus salarial e que os
Assistentes Administrativos possuem um turno (dia ou noite) e um adicional
noturno, crie as classes Tecnico e Administrativo e sobrescreva o método
ganhoAnual() de ambas as classes (Administrativo e Tecnico).
Classe Funcionario
#include <iostream>
#include <string>
using namespace std;
class Funcionario {
protected:
string nome;
double salario;
public:
Funcionario(string nome, double salario) {
this->nome = nome;
this->salario = salario;
}
void addAumento(double valor) {
salario += valor;
}
double ganhoAnual() const {
return salario * 12;
}
virtual void exibeDados() const {
cout << "Nome: " << nome << endl;
cout << "Salário: R$ " << salario << endl;
cout << "Ganho Anual: R$ " << ganhoAnual() << endl;
}
// Getters and Setters
string getNome() const {
return nome;
}
void setNome(string nome) {
this->nome = nome;
}
double getSalario() const {
return salario;
}
void setSalario(double salario) {
this->salario= salario;
}
};
Classe Assistente
class Assistente : public Funcionario {
private:
int numeroMatricula;
public:
Assistente(string nome, double salario, int numeroMatricula)
: Funcionario(nome, salario) {
this->numeroMatricula = numeroMatricula;
}
int getNumeroMatricula() const {
return numeroMatricula;
}
void setNumeroMatricula(int numeroMatricula) {
this->numeroMatricula = numeroMatricula;
}
void exibeDados() const override {
Funcionario::exibeDados();
cout << "Número de Matrícula: " << numeroMatricula << endl;
}
};
Classe Tecnico
class Tecnico : public Assistente {
private:
double bonusSalarial;
public:
Tecnico(string nome, double salario, int numeroMatricula, double bonusSalarial)
: Assistente(nome, salario, numeroMatricula) {
this->bonusSalarial = bonusSalarial;
}
double ganhoAnual() const override {
return (salario + bonusSalarial) * 12;
}
void exibeDados() const override {
Assistente::exibeDados();
cout << "Bônus Salarial: R$ " << bonusSalarial << endl;
cout << "Ganho Anual com Bônus: R$ " << ganhoAnual() << endl;
}
// Getters and Setters
double getBonusSalarial() const {
return bonusSalarial;
}
void setBonusSalarial(double bonusSalarial) {
this->bonusSalarial = bonusSalarial;
}
};
Classe Administrativo
class Administrativo : public Assistente {
private:
string turno;
double adicionalNoturno;
public:
Administrativo(string nome, double salario, int numeroMatricula, string turno, double
adicionalNoturno)
: Assistente(nome, salario, numeroMatricula) {
this->turno = turno;
this->adicionalNoturno = adicionalNoturno;
}
double ganhoAnual() const override {
if (turno == "noite") {
return (salario + adicionalNoturno) * 12;
} else {
return salario * 12;
}
}
void exibeDados() const override {
Assistente::exibeDados();
cout << "Turno: " << turno << endl;
if (turno == "noite") {
cout << "Adicional Noturno: R$ " << adicionalNoturno << endl;
}
cout << "Ganho Anual: R$ " << ganhoAnual() << endl;
}
// Getters and Setters
string getTurno() const {
return turno;
}
void setTurno(string turno) {
this->turno = turno;
}
double getAdicionalNoturno() const {
return adicionalNoturno;
}
void setAdicionalNoturno(double adicionalNoturno) {
this->adicionalNoturno = adicionalNoturno;
}
};
```
Função main para testar as classes
int main() {
// Criando um objeto do tipo Funcionario
Funcionario funcionario("João Silva", 5000.0);
funcionario.exibeDados();
cout << endl;
// Criando um objeto do tipo Assistente
Assistente assistente("Maria Santos", 4000.0, 12345);
assistente.exibeDados();
cout << endl;
// Criando um objeto do tipo Tecnico
Tecnico tecnico("Carlos Pereira", 4500.0, 54321, 500.0);
tecnico.exibeDados();
cout << endl;
// Criando um objeto do tipo Administrativo
Administrativo administrativo("Ana Costa", 4200.0, 67890, "noite", 600.0);
administrativo.exibeDados();
cout << endl;
return 0;
}