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

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

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

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

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

textual
Листинг программы
  1. class Program
  2. {
  3.     static void Main(string[] args)
  4.     {
  5.         Car[] cars = {
  6.             new PassengerCar("Toyota", 250),
  7.             new PassengerCar("Mersedes", 200),
  8.             new Truck("Mersedes Truck", 1500),
  9.             new Truck("Mazda Truck", 20000),
  10.             new Truck("MAN Truck", 30000),
  11.         };
  12.  
  13.         foreach (Car car in cars)
  14.         { car.Print(); } // полиморфный вызов
  15.     }
  16. }
  17.    
  18. abstract class Car
  19. {
  20.     public string Name { get; }
  21.  
  22.     public Car(string name)
  23.     { Name = name; }
  24.  
  25.     public virtual void Print()
  26.     { Console.WriteLine($"Name: {Name}"); }
  27.  
  28.     public abstract double FuelConsumption();
  29. }
  30.  
  31. // Грузовик
  32. class Truck : Car
  33. {
  34.     public double Carrying { get; }
  35.  
  36.     public Truck(string name, double carrying) : base(name)
  37.     { Carrying = carrying; }
  38.  
  39.     public override double FuelConsumption()
  40.     { return Math.Sqrt(Carrying) * 100; }
  41.  
  42.     public override void Print()
  43.     {
  44.         base.Print();
  45.         Console.WriteLine($"Carrying: {Carrying:F} T");
  46.         Console.WriteLine($"Fuel consumption: {FuelConsumption():F} l/100km\n");
  47.     }
  48. }
  49.  
  50. // Легковушка
  51. class PassengerCar : Car
  52. {
  53.     public double EngineVolume { get; }
  54.  
  55.     public PassengerCar(string name, double engineVolume) : base(name)
  56.     { EngineVolume = engineVolume; }
  57.  
  58.     public override double FuelConsumption()
  59.     { return 2.5 * EngineVolume; }
  60.  
  61.     public override void Print()
  62.     {
  63.         base.Print();
  64.         Console.WriteLine($"Engine volume: {EngineVolume:F} cm^3");
  65.         Console.WriteLine($"Fuel consumption: {FuelConsumption():F} l/100km\n");
  66.     }
  67. }

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


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

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

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы