1
resposta

Desafio: #: dominando Orientação a Objetos 03

  • Criar uma hierarquia de classes representando formas geométricas, como Quadrado, Círculo e Triângulo. Utilize herança para criar uma classe base chamada FormaGeometrica, que contenha métodos para calcular a área e o perímetro de uma forma.
class FormaGeometrica
{
    public virtual void CalcularArea()
    {
    }
    public virtual void CalcularPerimetro()
    {
    }
}
class Triangulo : FormaGeometrica
{
    public int LadoBase {  get; set; }
    public int Altura {  get; set; }
    public int LadoA {  get; set; }
    public int LadoC {  get; set; }

    public override void CalcularArea()
    {
        int areaTriangulo = LadoBase * Altura/2 ;
        Console.WriteLine($"A área do triângulo é: {areaTriangulo}");
    }
    public override void CalcularPerimetro()
    {
        int perimetro = LadoA + LadoBase + LadoC;
        Console.WriteLine($"O perímetro do triângulo é: {perimetro}");
    }
}
class Circulo : FormaGeometrica
{
    public int Raio { get; set; }

    public override void CalcularArea()
    {
        double areaCirculo = Math.PI * (Raio * Raio);
        Console.WriteLine($"A área do círculo é: {areaCirculo:f2}");
    }
    public override void CalcularPerimetro()
    {
        double perimetro = 2 * Math.PI * Raio;
        Console.WriteLine($"O perímetro do círculo é: {perimetro:f2}");
    }
}
class Quadrado : FormaGeometrica
{
    public int Lado {  get; set; }
    public override void CalcularArea()
    {
        int areaQuadrado = Lado * Lado;
        Console.WriteLine($"A área do quadrado é: {areaQuadrado}");
    }
    public override void CalcularPerimetro()
    {
        int perimetro = Lado * 4;
        Console.WriteLine($"O perímetro do quadrado é: {perimetro}");
    }
}
  • Crie uma hierarquia de classes representando funcionários de uma empresa. Utilize herança para criar classes como Gerente, Programador e Analista. Cada classe deve ter propriedades específicas, além das propriedades comuns a todos os funcionários, como Nome e Salário.
class Analista : Funcionario
{
    public string TipoAnalista {  get; set; }
}
class Funcionario
{
    public string Nome { get; set; }
    public decimal Salario { get; set; }
}
class Gerente : Funcionario
{
    public string Area { get; set; }
    public List<Programador> FuncionariosArea = new List<Programador>();
}
class Programador : Funcionario
{
    public string FocoDesenvolvimento { get; set; }
    public string Senioridade { get; set; }
}
  • Criar uma hierarquia de classes representando contas bancárias, como ContaCorrente e ContaPoupanca. Utilize herança e o conceito de métodos virtuais para implementar um método CalcularSaldo que retorne o saldo atual da conta.
class Conta
{
    public decimal Saldo { get; set; }
    internal virtual string CalcularSaldo()
    {
        decimal saldo = Saldo;
        return "Retorno da classe pai Conta";
    }
}
class ContaPoupanca : Conta
{
    internal override string CalcularSaldo()
    {
        decimal saldo = Saldo;
        return $"Saldo da conta poupança: {saldo}";
    }
}
class ContaCorrente : Conta
{
    internal override string CalcularSaldo()
    {
        decimal saldoConta = Saldo;
        return $"Saldo da conta corrente: {saldoConta}";
    }
}
  • Criar uma hierarquia de classes representando animais, como Mamifero, Ave e Peixe. Utilize herança e o conceito de métodos virtuais para implementar um método EmitirSom que represente o som característico de cada tipo de animal.
class Animal
{
    internal virtual string EmitirSom()
    {
        string som = "Animal emitindo som...";
        return som;
    }
}
class Ave : Animal
{
    internal override string EmitirSom()
    {
        string som = "Piu piu...";
        return som;
    }
}
class Mamifero : Animal
{
    internal override string EmitirSom()
    {
        string som = "Au au...";
        return som;
    }
}
class Peixe : Animal
{
    internal override string EmitirSom()
    {
        string som = "Glub glub...";
        return som;
    }
}
  • Criar uma hierarquia de classes representando produtos eletrônicos, como Smartphone, Tablet e Laptop. Utilize herança para implementar um método ExibirInformacoes que retorne informações específicas de cada produto.
class Eletronico
{
   //** construtor criado - economia caracteres
    public string Marca {  get; set; }
    public string Modelo {  get; set; }
    public string SistemaOperacional {  get; set; }
    internal virtual string ExibirInformacoes()
    {
        return $"Eletrônico: {Marca} - {Modelo}, SO utilizado: {SistemaOperacional}";
    }
}


Métodos só alteram eletrônico no texto.

1 resposta

Olá, Paulo, tudo bem?

Parabéns pela dedicação em resolver todos os desafios!

Você aplicou corretamente os pilares da Orientação a Objetos que estamos estudando. O uso das palavras-chave virtual e override para sobrescrever os métodos e garantir o comportamento específico de cada classe filha está certinho.

Continue mergulhando fundo nos estudos de C#!

Bons estudos!

Sucesso

Imagem da comunidade