1
resposta

Referente ao desafio

Boa noite,

Estou com dificuldade de criar uma classe para as operações, até o momento meu código ficou assim:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace ProjetoOperacoesMatematica.Matematica
{
    public class Soma
    {   
        public double X { get; set; }
        public double Y { get; set; }

    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ProjetoOperacoesMatematica.Matematica
{
    public class Subtracao
    {
        public double X { get; set; }
        public double Y { get; set; }

    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ProjetoOperacoesMatematica.Matematica
{
    public class Multiplicacao
    {
        public double X { get; set; }
        public double Y { get; set; }

    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ProjetoOperacoesMatematica.Matematica
{
    public class Divisao
    {
        public double X { get; set; }   
        public double Y { get; set; }

    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace ProjetoOperacoesMatematica.Utilitario
{
    public class Operacao
    {
        public double Somar(double x, double y)
        {
            return x + y;
        }
        public double Subtrair(double x, double y)
        {
            return x - y;
        }
        public double Multiplicar(double x, double y)
        {
            return x * y;
        }
        public double Dividir(double x, double y)
        {
            return x / y;
        }
    }
}

using ProjetoOperacoesMatematica.Matematica;
using ProjetoOperacoesMatematica.Utilitario;

Soma soma = new Soma();
Operacao operacao = new Operacao();
Console.WriteLine(operacao.Somar(5,10));

Subtracao subtracao = new Subtracao();
Operacao operacao1 = new Operacao();
Console.WriteLine(operacao1.Subtrair(20,7));

Multiplicacao multiplicacao = new Multiplicacao();
Operacao operacao2 = new Operacao();
Console.WriteLine(operacao2.Multiplicar(7, 5));

Divisao divisao = new Divisao();
Operacao operacao3 = new Operacao();
Console.WriteLine(operacao3.Dividir(100, 5));



Ainda não entendi muito bem a questão da sobrecarga de métodos e polimorfismo......pode me ajudar?

1 resposta

Olá Marcelo. Como vai?

A sobrecarga de métodos permite que você tenha vários métodos com o mesmo nome, mas com parâmetros diferentes. Isso é útil quando você quer realizar a mesma operação, mas com tipos de dados diferentes. Por exemplo, na sua classe Operacao, você tem os métodos Somar, Subtrair, Multiplicar e Dividir. Todos eles têm o mesmo nome, mas recebem parâmetros diferentes. Dessa forma, você pode chamar o método Somar passando dois números inteiros ou dois números decimais, por exemplo.

Já o polimorfismo permite que você trate objetos de classes diferentes de maneira uniforme. Isso é útil quando você quer realizar a mesma operação em diferentes objetos, mas cada objeto pode ter uma implementação diferente dessa operação. Por exemplo, você pode ter uma lista de objetos do tipo Operacao e, mesmo que cada objeto seja de uma classe diferente (como Soma, Subtracao, etc.), você pode chamar o método Somar em todos eles sem se preocupar com a implementação específica de cada classe.

Vamos a um exemplo prático: suponha que você tenha uma lista de objetos do tipo Operacao que podem ser tanto Soma quanto Subtracao. Você pode fazer um loop na lista e chamar o método Somar em todos os objetos, mesmo que alguns sejam do tipo Soma e outros do tipo Subtracao. O polimorfismo vai garantir que o método Somar correto seja chamado em cada objeto, de acordo com sua implementação específica.

Espero ter ajudado e bons estudos!