Как добраться до нужного метода? C#
Я начинаю осваивать ООП и у меня есть задание на калькулятор, получаем на вход список чисел и операций, затем выполняем. Операции нужно добавить перегрузкой через override и я вот вроде бы написал идею самих классов, а теперь не могу даже вызвать метод, подскажите как это сделать, вот код:
using System;
using System.Collections.Generic;
namespace Calculator
{
public class Calculator
{
public List<int> Numbers = new List<int> { 1, 2, 3 };
public List<string> Opereations = new List<string> { "+", "-", "*", "/" };
public abstract class Calculations
{
public abstract int Calculate(List<int> numbers, List<string> operations);
}
public class Plus : Calculations
{
public override int Calculate(List<int> numbers, List<string> operations)
{
return numbers[0] + numbers[1];
}
}
public class Minus : Calculations
{
public override int Calculate(List<int> numbers, List<string> operations)
{
return numbers[0] - numbers[1];
}
}
public class Multiply : Calculations
{
public override int Calculate(List<int> numbers, List<string> operations)
{
return numbers[0] * numbers[1];
}
}
public class Devide : Calculations
{
public override int Calculate(List<int> numbers, List<string> operations)
{
return numbers[0] / numbers[1];
}
}
}
public class Program
{
static void Main(string[] args)
{
}
}
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Вы не должны использовать вложенные классы, это вас и путает. Разместите все классы рядом друг с другом, а не внутри. Станет легче.
Простой пример.
public abstract class Calculation
{
public abstract int Calculate(int left, int right);
}
public class Plus : Calculation
{
public override int Calculate(int left, int right)
{
return left + right;
}
}
// ... остальные типы
public class Calculator
{
public int Calculate(int left, int right, char opChar)
{
Calculation op;
switch (opChar)
{
case '+': op = new Plus(); break;
default: throw new NotSupportedException("Неверная операция");
}
return op.Calculate(left, right);
}
}
public class Program
{
static void Main(string[] args)
{
var calc = new Calculator();
int result = calc.Calculate(2, 2, '+');
Console.WriteLine(result);
Console.ReadKey();
}
}