Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace Vehicles
- {
- abstract class Vehicle
- {
- public double FuelQuantity { get; set; }
- public double LitersPerKmConsumed { get; set; }
- public double TankCapacity { get; set; }
- public double MaxDistanceCanTravel
- {
- get
- {
- return FuelQuantity / LitersPerKmConsumed;
- }
- }
- public Vehicle(double fuelQuantity,double litersPerKmConsumed,double tankCapacity)
- {
- this.LitersPerKmConsumed = litersPerKmConsumed;
- this.TankCapacity = tankCapacity;
- if (tankCapacity >= fuelQuantity)
- {
- this.FuelQuantity = fuelQuantity;
- }
- else
- {
- this.FuelQuantity = 0;
- }
- }
- public virtual void Refuel(double liters)
- {
- if (liters <= 0)
- {
- Console.WriteLine("Fuel must be a positive number");
- }
- else if (this.TankCapacity < this.FuelQuantity+ liters )
- {
- Console.WriteLine($"Cannot fit {liters} fuel in the tank");
- }
- else
- {
- this.FuelQuantity = this.FuelQuantity + liters;
- }
- }
- public abstract void Drive(double kilometresToTravel);
- public virtual void DriveEmpty(double kilometresToTravel)
- {
- }
- }
- class Car: Vehicle
- {
- public Car(double fuelQuantity,double litersPerKmConsumed,double tankCapacity)
- : base(fuelQuantity, litersPerKmConsumed + 0.9,tankCapacity)
- {
- }
- public override void Refuel(double liters)
- {
- base.Refuel(liters);
- }
- public override void Drive(double kilometresToTravel)
- {
- if (MaxDistanceCanTravel >= kilometresToTravel)
- {
- FuelQuantity = FuelQuantity - LitersPerKmConsumed * kilometresToTravel;
- Console.WriteLine($"Car travelled {kilometresToTravel} km");
- }
- else
- {
- Console.WriteLine("Car needs refueling");
- }
- }
- public override string ToString()
- {
- return string.Format("Car: {0:F2}", base.FuelQuantity);
- }
- }
- class Truck : Vehicle
- {
- public Truck(double fuelQuantity, double litersPerKmConsumed,double tankCapacity)
- : base(fuelQuantity, litersPerKmConsumed + 1.6,tankCapacity)
- {
- }
- public override void Refuel(double liters)
- {
- base.Refuel(liters*0.95);
- }
- public override void Drive(double kilometresToTravel)
- {
- if (MaxDistanceCanTravel >= kilometresToTravel)
- {
- FuelQuantity = FuelQuantity - LitersPerKmConsumed * kilometresToTravel;
- Console.WriteLine($"Truck travelled {kilometresToTravel} km");
- }
- else
- {
- Console.WriteLine("Truck needs refueling");
- }
- }
- public override string ToString()
- {
- return string.Format("Truck: {0:F2}", base.FuelQuantity);
- }
- }
- class Bus
- : Vehicle
- {
- public Bus(double fuelQuantity, double litersPerKmConsumed, double tankCapacity) :
- base(fuelQuantity, litersPerKmConsumed, tankCapacity)
- {
- }
- public override void Drive(double kilometresToTravel)
- {
- this.LitersPerKmConsumed = this.LitersPerKmConsumed + 1.4;
- if (FuelQuantity / LitersPerKmConsumed >= kilometresToTravel)
- {
- FuelQuantity = FuelQuantity - LitersPerKmConsumed * kilometresToTravel;
- Console.WriteLine($"Bus travelled {kilometresToTravel} km");
- }
- else
- {
- Console.WriteLine("Bus needs refueling");
- }
- this.LitersPerKmConsumed = this.LitersPerKmConsumed - 1.4;
- }
- public override void DriveEmpty(double kilometresToTravel)
- {
- if (FuelQuantity / LitersPerKmConsumed >= kilometresToTravel)
- {
- FuelQuantity = FuelQuantity - (LitersPerKmConsumed * kilometresToTravel);
- Console.WriteLine($"Bus travelled {kilometresToTravel} km");
- }
- else
- {
- Console.WriteLine("Bus needs refueling");
- }
- }
- public override void Refuel(double liters)
- {
- base.Refuel(liters);
- }
- public override string ToString()
- {
- return string.Format("Bus: {0:F2}", base.FuelQuantity);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement