1
The abstract class Figura
has the virtual method CalculoArea()
, where the derived classes called Quadrado
, Retangulo
and Circunferência
override this method according to its geometric figure calculation, but I find the **decimal conversion problem for double
in the methods CalculoArea()
class Retangulo
and Circunferencia
.
Code:
using static System.Console;
abstract class Figura
{
public virtual decimal CalculoArea() => CalculoArea();
}
class Quadrado : Figura
{
public decimal Lado { get; set; } = 0M;
public override decimal CalculoArea() => System.Math.Pow(Lado, 4); // Erro de conversão
}
class Triangulo : Figura
{
public decimal Altura { get; set; }
public decimal Base { get; set; }
public override decimal CalculoArea() => Altura * Base / 2;
}
class Circunferencia : Figura
{
public decimal Raio { get; set; } = 0M;
public override decimal CalculoArea() => System.Math.PI * System.Math.Pow(Raio,2); // Erro de conversão
}
class Imprimir
{
static int Main(string[] args)
{
// Não usar pontos em números decimais e sim vírgulas (Exemplo 7,5 ao invéz de 7.5)
Quadrado quadrado = new Quadrado();
Triangulo triangulo = new Triangulo();
Circunferencia circulo = new Circunferencia();
WriteLine("Classe Quadrado");
Write("Digite o lado do quadrado: ");
if (!decimal.TryParse(ReadLine(), out decimal digitelado)) return 1;
quadrado.Lado = digitelado;
WriteLine();
WriteLine("Classe Triângulo");
Write("Digite a altura do triângulo: ");
if (!decimal.TryParse(ReadLine(), out decimal digitealtura)) return 1;
triangulo.Altura = digitealtura;
Write("Digite a base do triângulo: ");
if (!decimal.TryParse(ReadLine(), out decimal digitebase)) return 1;
triangulo.Base = digitebase;
WriteLine();
WriteLine("Classe Círculo");
Write("Digite o raio do círculo: ");
if (!decimal.TryParse(ReadLine(), out decimal digiteraio)) return 1;
circulo.Raio = digiteraio;
WriteLine();
WriteLine($"O cálculo da área do quadrado é {quadrado.CalculoArea()}cm2");
WriteLine($"O cálculo da área do triângulo é {triangulo.CalculoArea()}cm2");
WriteLine($"O cálculo da área do círculo é {circulo.CalculoArea()}cm2");
return 0;
}
}
Polymorphism is also present in codes that use
interface
?– Carlos A.
In a way yes, especially now that it has implementation in interface, but the problem of this question has nothing to do with polymorphism. Already have information on the subject on the website.
– Maniero
I was with this doubt when in a link I saw about when to use
interface
– Carlos A.