dobroslav-atanasov

Untitled

Mar 5th, 2018
657
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.75 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. public abstract class Vehicle
  6. {
  7.     public double FuelQuantity { get; set; }
  8.     public double LitersPerKmConsumed { get; set; }
  9.     public double TankCapacity { get; set; }
  10.     public double MaxDistanceCanTravel
  11.     {
  12.         get
  13.         {
  14.             return FuelQuantity / LitersPerKmConsumed;
  15.         }
  16.     }
  17.     public Vehicle(double fuelQuantity, double litersPerKmConsumed, double tankCapacity)
  18.     {
  19.         this.LitersPerKmConsumed = litersPerKmConsumed;
  20.         this.TankCapacity = tankCapacity;
  21.         if (tankCapacity >= fuelQuantity)
  22.         {
  23.             this.FuelQuantity = fuelQuantity;
  24.         }
  25.         else
  26.         {
  27.             this.FuelQuantity = 0;
  28.         }
  29.  
  30.     }
  31.     public virtual void Refuel(double liters)
  32.     {
  33.         if (liters <= 0)
  34.         {
  35.             Console.WriteLine("Fuel must be a positive number");
  36.         }
  37.         else if (this.TankCapacity < this.FuelQuantity + liters)
  38.         {
  39.             Console.WriteLine($"Cannot fit {liters} fuel in the tank");
  40.         }
  41.         else
  42.         {
  43.             this.FuelQuantity = this.FuelQuantity + liters;
  44.         }
  45.     }
  46.     public abstract void Drive(double kilometresToTravel);
  47.     public virtual void DriveEmpty(double kilometresToTravel)
  48.     {
  49.  
  50.     }
  51. }
  52. class Car : Vehicle
  53. {
  54.     public Car(double fuelQuantity, double litersPerKmConsumed, double tankCapacity)
  55.         : base(fuelQuantity, litersPerKmConsumed + 0.9, tankCapacity)
  56.     {
  57.  
  58.     }
  59.     public override void Refuel(double liters)
  60.     {
  61.         base.Refuel(liters);
  62.     }
  63.  
  64.     public override void Drive(double kilometresToTravel)
  65.     {
  66.         if (MaxDistanceCanTravel >= kilometresToTravel)
  67.         {
  68.             FuelQuantity = FuelQuantity - LitersPerKmConsumed * kilometresToTravel;
  69.             Console.WriteLine($"Car travelled {kilometresToTravel} km");
  70.         }
  71.         else
  72.         {
  73.             Console.WriteLine("Car needs refueling");
  74.         }
  75.     }
  76.     public override string ToString()
  77.     {
  78.         return string.Format("Car: {0:F2}", base.FuelQuantity);
  79.     }
  80. }
  81. class Truck : Vehicle
  82. {
  83.     public Truck(double fuelQuantity, double litersPerKmConsumed, double tankCapacity)
  84.         : base(fuelQuantity, litersPerKmConsumed + 1.6, tankCapacity)
  85.     {
  86.     }
  87.     public override void Refuel(double liters)
  88.     {
  89.         if (liters <= 0)
  90.         {
  91.             Console.WriteLine("Fuel must be a positive number");
  92.         }
  93.         else
  94.         {
  95.             double totalFuel = base.FuelQuantity + liters * 0.95;
  96.             if (totalFuel > base.TankCapacity)
  97.             {
  98.                 Console.WriteLine($"Cannot fit {liters} fuel in the tank");
  99.             }
  100.             else
  101.             {
  102.                 base.FuelQuantity += liters * 0.95;
  103.             }
  104.         }
  105.         //base.Refuel(liters * 0.95);
  106.     }
  107.     public override void Drive(double kilometresToTravel)
  108.     {
  109.         if (MaxDistanceCanTravel >= kilometresToTravel)
  110.         {
  111.             FuelQuantity = FuelQuantity - LitersPerKmConsumed * kilometresToTravel;
  112.             Console.WriteLine($"Truck travelled {kilometresToTravel} km");
  113.         }
  114.         else
  115.         {
  116.             Console.WriteLine("Truck needs refueling");
  117.         }
  118.     }
  119.     public override string ToString()
  120.     {
  121.         return string.Format("Truck: {0:F2}", base.FuelQuantity);
  122.     }
  123. }
  124. class Bus
  125.     : Vehicle
  126. {
  127.     public Bus(double fuelQuantity, double litersPerKmConsumed, double tankCapacity) :
  128.         base(fuelQuantity, litersPerKmConsumed, tankCapacity)
  129.     {
  130.     }
  131.  
  132.     public override void Drive(double kilometresToTravel)
  133.     {
  134.         this.LitersPerKmConsumed = this.LitersPerKmConsumed + 1.4;
  135.         if (FuelQuantity / LitersPerKmConsumed >= kilometresToTravel)
  136.         {
  137.             FuelQuantity = FuelQuantity - LitersPerKmConsumed * kilometresToTravel;
  138.             Console.WriteLine($"Bus travelled {kilometresToTravel} km");
  139.         }
  140.         else
  141.         {
  142.             Console.WriteLine("Bus needs refueling");
  143.         }
  144.         this.LitersPerKmConsumed = this.LitersPerKmConsumed - 1.4;
  145.     }
  146.     public override void DriveEmpty(double kilometresToTravel)
  147.     {
  148.         if (FuelQuantity / LitersPerKmConsumed >= kilometresToTravel)
  149.         {
  150.             FuelQuantity = FuelQuantity - (LitersPerKmConsumed * kilometresToTravel);
  151.             Console.WriteLine($"Bus travelled {kilometresToTravel} km");
  152.         }
  153.         else
  154.         {
  155.             Console.WriteLine("Bus needs refueling");
  156.         }
  157.     }
  158.     public override void Refuel(double liters)
  159.     {
  160.         base.Refuel(liters);
  161.     }
  162.  
  163.     public override string ToString()
  164.     {
  165.         return string.Format("Bus: {0:F2}", base.FuelQuantity);
  166.     }
  167. }
Advertisement
Add Comment
Please, Sign In to add comment