Наследование, полиморфные методы - C#

Узнай цену своей работы

Формулировка задачи:

№1 Составить программу с одним родительским классом и двумя потомками. Потомки должны содержать виртуальные функции. Создать виртуальную функцию выдачи результатов расчета методов на экран монитора с указанием названий и полей и их значений соответствующего объекта. При этом создать объекты базового и производных типов, используя полиморфный контейнер - массив ссылок базового класса на объекты базового и производных классов (кол-во объектов >=5); Родительский класс: Автомобили (поле название) Потомки: Грузовой (поле - грузоподъемность р в тоннах) Легковой (поле - объем двигателя V в см кубических) Полиморфные методы: расход горючего на 100 км: Грузовой автомобиль М=(Sqrt(p))* 100 Легковой M= 2,5*V №2 Составить программу с абстрактным родительским классом и двумя объектами - потомками, модифицировать первую задачу.. Ребята, помогите пожалуйста, я честно признаюсь что не понимаю как делать подобные вещи (задачи более легкие - расчеты подсчеты даются легко) но тут, просто не могу понять, хочу разобраться, учителя к сожалению на встречу не идут, просто не объясняют - либо ты шаришь, либо отчисляйся.. Спасите хоть чем нибудь

Решение задачи: «Наследование, полиморфные методы»

textual
Листинг программы
class Program
{
    static void Main(string[] args)
    {
        Car[] cars = {
            new PassengerCar("Toyota", 250), 
            new PassengerCar("Mersedes", 200), 
            new Truck("Mersedes Truck", 1500), 
            new Truck("Mazda Truck", 20000), 
            new Truck("MAN Truck", 30000), 
        };
 
        foreach (Car car in cars)
        { car.Print(); } // полиморфный вызов
    }
}
    
abstract class Car
{
    public string Name { get; }
 
    public Car(string name)
    { Name = name; }
 
    public virtual void Print()
    { Console.WriteLine($"Name: {Name}"); }
 
    public abstract double FuelConsumption();
}
 
// Грузовик
class Truck : Car
{
    public double Carrying { get; }
 
    public Truck(string name, double carrying) : base(name)
    { Carrying = carrying; }
 
    public override double FuelConsumption()
    { return Math.Sqrt(Carrying) * 100; }
 
    public override void Print()
    {
        base.Print();
        Console.WriteLine($"Carrying: {Carrying:F} T");
        Console.WriteLine($"Fuel consumption: {FuelConsumption():F} l/100km\n");
    }
}
 
// Легковушка
class PassengerCar : Car
{
    public double EngineVolume { get; }
 
    public PassengerCar(string name, double engineVolume) : base(name)
    { EngineVolume = engineVolume; }
 
    public override double FuelConsumption()
    { return 2.5 * EngineVolume; }
 
    public override void Print()
    {
        base.Print();
        Console.WriteLine($"Engine volume: {EngineVolume:F} cm^3");
        Console.WriteLine($"Fuel consumption: {FuelConsumption():F} l/100km\n");
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы