2
respostas

Desafio: hora da prática

Atividade 1: O sistema funciona por meio de menus interativos, nos quais o usuário escolhe a figura e o tipo de cálculo. As opções são mapeadas em um dicionário que associa números a objetos do tipo FormaGeometrica, responsáveis por executar os cálculos.

A arquitetura é composta por uma classe base (FormaGeometrica) e várias classes derivadas (Triangulo, Quadrado, Retangulo, Circulo e Losango), cada uma implementando suas próprias regras de cálculo.

Mais informações: https://github.com/diegotassodev/Exercicios/tree/main/Formas%20Geometricas

Atividade 2: O sistema modela diferentes tipos de funcionários dentro de uma empresa, utilizando herança e orientação a objetos.

A classe base Funcionario define atributos e comportamentos comuns, enquanto as classes derivadas especializam funções específicas, como Funcionário de TI, Programador, Analista, Jovem Aprendiz e Secretário.

Além disso, a classe Gerente é responsável pela gestão da equipe, permitindo adicionar membros, atribuir tarefas, visualizar informações dos funcionários e realizar ações administrativas, como alteração de salário e promoção.

Mais informações: https://github.com/diegotassodev/Exercicios/tree/main/Empresa


A partir da Atividade 3, as resoluções serão mais simples, considerando que já me aprofundei bastante no tema, foram mais de 5 horas nas atividades anteriores e consegui compreender bem os conceitos de orientação a objetos com herança.

Atividade 3

Conta.cs

namespace Banco.Modelo;
internal class Conta {
    public virtual void CalcularSaldo() {
        Console.Clear();
    }
    public virtual void AdicionarSaldoCorrente() {
        Console.Clear();
    }
    public virtual void AdicionarSaldoPoupanca() {
        Console.Clear();
    }
}

ContaCorrente.cs

namespace Banco.Modelo;
internal class ContaCorrente : Conta {
    internal decimal Saldo;
    public override void CalcularSaldo() {
        base.CalcularSaldo();
        Console.WriteLine($"Você tem R${Saldo} na conta corrente.");
        Console.ReadKey();
    }
    public override void AdicionarSaldoCorrente() {
        base.AdicionarSaldoCorrente();
        Console.Write("Quanto você deseja adicionar a conta corrente: R$");
        decimal saldoExtra; decimal.TryParse(Console.ReadLine()!, out saldoExtra);
        Saldo += saldoExtra;
    }
}

ContaPoupanca.cs

namespace Banco.Modelo;
internal class ContaPoupanca : Conta {
    internal decimal Saldo;
    public override void CalcularSaldo() {
        base.CalcularSaldo();
        Console.WriteLine($"Você tem R${Saldo} na conta poupança.");
        Console.ReadKey();
    }
    public override void AdicionarSaldoPoupanca() {
        base.AdicionarSaldoPoupanca();
        Console.Write("Quanto você deseja adicionar a conta poupança: R$");
        decimal saldoExtra; decimal.TryParse(Console.ReadLine()!, out saldoExtra);
        Saldo += saldoExtra;
    }
}

Program.cs

namespace Banco.Modelo;
internal class Conta {
    public virtual void CalcularSaldo() {
        Console.Clear();
    }
    public virtual void AdicionarSaldoCorrente() {
        Console.Clear();
    }
    public virtual void AdicionarSaldoPoupanca() {
        Console.Clear();
    }
}
2 respostas

Atividade 4

Program.cs

using Zoo.Modelos;

int opcao;
void VisualizarOpcoes() {
    Console.Clear();
    Console.WriteLine("=============================");
    Console.WriteLine("       Sons de Animais       ");
    Console.WriteLine("=============================");
    Console.WriteLine("1. Cachorro");
    Console.WriteLine("2. Arara");
    Console.WriteLine("3. Sair");
    Console.Write("Escolha sua opção: ");
    int.TryParse(Console.ReadLine()!, out opcao);
    ValidarOpcao();
}

Dictionary <int, Animal> listaAnimais = new();
listaAnimais.Add(1, new Cachorro());
listaAnimais.Add(2, new Arara());

void ValidarOpcao() {
    if (listaAnimais.ContainsKey(opcao)) {
        Animal animal = listaAnimais[opcao];
        animal.EmitirSom();
        VisualizarOpcoes();
    }
    else if (opcao == 3) return;
    else VisualizarOpcoes();
}
VisualizarOpcoes();
Console.WriteLine("Terminando programa...");

Animal.cs

namespace Zoo.Modelos;
public class Animal {
    public virtual void EmitirSom() {
        Console.Clear();
    }
    public virtual void Executar() {
        Console.Clear();
    }
}

Mamifero.cs

namespace Zoo.Modelos;
public class Mamifero: Animal {
    public override void EmitirSom() {
        base.EmitirSom();
        Executar();
    }
    public override void Executar() {
        Console.WriteLine("Classe Mamífero: ");
    }
}

Ave.cs

namespace Zoo.Modelos;
public class Ave: Animal {
    public override void EmitirSom() {
        base.EmitirSom();
        Executar();
    }
    public override void Executar() {
        Console.WriteLine("Classe Ave: ");
    }
}

Cachorro.cs

namespace Zoo.Modelos;
public class Cachorro: Mamifero {
    public override void EmitirSom() {
        base.EmitirSom();
        Console.WriteLine("Au Au Au");
        Console.ReadKey();
    }
}

Arara.cs

namespace Zoo.Modelos;
public class Arara: Ave {
    public override void EmitirSom() {
        base.EmitirSom();
        Console.WriteLine("Ark Ar Ark");
        Console.ReadKey();
    }
}

Atividade 5

Program.cs

using Loja.Modelos;

Eletronico telefone = new Smartphone("Iphone Celular", 128, "Apple", "Core I5");
telefone.AdicionarContato();
telefone.ExibirInformacoes();

Eletronico tablet = new Tablet("Galaxy Tab", 256, "Samsung", "Core Drawl");
tablet.AdicionarAplicativos();
tablet.ExibirInformacoes();

Eletronico laptop = new Laptop("Asus Tabtop", 1000, "Asus", "Ryzen Core", "Linux");
laptop.ExibirInformacoes();

Eletronico.cs

namespace Loja.Modelos;
internal class Eletronico {
    public string? Nome {get; set;}
    public double Armazenamento {get; set;}
    public string? Marca {get; set;}
    public string? Processador {get; set;}
    public virtual void ExibirInformacoes() {
        Console.Clear();
        Console.WriteLine($"Nome: {Nome}");
        Console.WriteLine($"Marca: {Marca}");
        Console.WriteLine($"Armazenamento: {Armazenamento}GB");
        Console.WriteLine($"Processador: {Processador}");
    }
    public virtual void AdicionarContato() {
        Console.Clear();
    }
    public virtual void AdicionarAplicativos() {
        Console.Clear();
    }
}

Smartphone.cs

namespace Loja.Modelos;
internal class Smartphone : Eletronico {
    internal Dictionary <long, string> contatos = new();
    public Smartphone(string? nome, double armazenamento, string? marca, string? processador) {
        Nome = nome;
        Armazenamento = armazenamento;
        Marca = marca;
        Processador = processador;
    }
    public override void ExibirInformacoes() {
        base.ExibirInformacoes();
        Console.WriteLine("Lista de Contatos:");
        foreach (int numero in contatos.Keys) Console.WriteLine($"- {contatos[numero]}: {numero} ");
        Console.ReadKey();
    }
    public override void AdicionarContato() {
        base.AdicionarContato();
        Console.Write("Qual o número do contato: ");
        long numero; long.TryParse(Console.ReadLine()!, out numero);
        Console.Write("Qual o nome do contato: ");
        string nomeContato = Console.ReadLine()!;
        contatos.Add(numero, nomeContato);
    }
}

Tablet.cs

namespace Loja.Modelos;
internal class Tablet : Eletronico {
    internal List<string> aplicativos = new();
    public Tablet(string? nome, double armazenamento, string? marca, string? processador) {
        Nome = nome;
        Armazenamento = armazenamento;
        Marca = marca;
        Processador = processador;
    }
    public override void ExibirInformacoes() {
        base.ExibirInformacoes();
        Console.WriteLine("Lista de Aplicativos:");
        aplicativos.ForEach(aplicativo => Console.WriteLine($"- {aplicativo} "));
        Console.ReadKey();
    }
    public override void AdicionarAplicativos() {
        base.AdicionarAplicativos();
        Console.Write("Qual o nome do Aplicativo: ");
        string aplicativo = Console.ReadLine()!;
        aplicativos.Add(aplicativo);
    }
}

Laptop.cs

namespace Loja.Modelos;
internal class Laptop : Eletronico {
    internal string? sistemaOperacional;
    public Laptop(string? nome, double armazenamento, string? marca, string? processador, string sistemaOperacional) {
        Nome = nome;
        Armazenamento = armazenamento;
        Marca = marca;
        Processador = processador;
        this.sistemaOperacional = sistemaOperacional;
    }
    public override void ExibirInformacoes() {
        base.ExibirInformacoes();
        Console.WriteLine($"Sistema operacional: {sistemaOperacional}");
    }
}