Advertisement
Guest User

Vehicle

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