eliasum
@eliasum
cd ..

Правильна ли реализация АПИ: new Car().Run(100)?

Здравствуйте! У меня есть задача: есть машина и велосипед, у машины макс. скорость 300 км/ч, у велосипеда 40 км/ч, надо реализовать соответствующие классы и учесть эти ограничения. Предполагаемый АПИ: new Car().Run(100)

Я решил эту задачу так:
public class Trans
    {
        public Trans()
        {
            Vmax = 0;
        }

        public int Vmax { get; set; }

        public string Run(int v)
        {
            if (v <= Vmax) return "Скорость движения транспорта в пределах нормы\n";
            else return "Скорость движения транспорта выше максимальной\n";
        }
    }

    public class Car : Trans
    {
        public Car()
        {
            Vmax = 300;
        }
    }

    public class Byke : Trans
    {
        public Byke()
        {
            Vmax = 40;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.Write(new Car().Run(100));

            Console.Write(new Byke().Run(100));

            Console.ReadKey();
        }
    }
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
Я бы переписал этот код так:
public abstract class Transport {
    public int MaxSpeed { get; private set; }

    public Transport(int maxSpeed) {
        MaxSpeed = maxSpeed;
    }

    public string Run(int speed)
        => $"Скорость движения транспорта {(speed <= MaxSpeed ? "в пределах нормы" : "выше максимальной")}";
}

public class Car : Transport {
    public Car() : base(300) {}
}

public class Bike : Transport {
    public Bike() : base(40) {}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Ну а в чём вопрос-то? Нет никакого правильного или неправильного. Оно работает или нет. А если работает то насколько эффективно (критерии эффективности не прилогаются).
Если это вся задача, то раскручивание классов это оверхед по коду.
enum Transport
{
    Car,
    Byke
}

static void Main(string[] args)
{
    var maxSpeed = new Dictionary<Transport, int>()
    {
        { Transport.Car, 300 },
        { Transport.Byke, 40 }
    };

    int testSpeed = 100;
    string test = maxSpeed[Transport.Car] <= testSpeed ? "Скорость движения транспорта в пределах нормы\n" : "Скорость движения транспорта выше максимальной\n";
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы