using System;
namespace TransportationSystem
public abstract class Vehicle
public string Name { get; set; }
public Vehicle(string name)
Name = name;
public abstract void Drive();
public virtual void Refuel()
[Link]($"{Name} is refueled.");
public interface IFuelEfficiency
double GetFuelEfficiency();
}
public class Car : Vehicle, IFuelEfficiency
public double FuelEfficiency { get; set; }
public Car(string name, double fuelEfficiency) : base(name)
FuelEfficiency = fuelEfficiency;
public override void Drive()
[Link]($"{Name} is being driven. (Fuel Efficiency: {FuelEfficiency} km/l)");
public double GetFuelEfficiency()
return FuelEfficiency;
public override void Refuel()
[Link]($"{Name} is refueled with petrol.");
public class Bike : Vehicle
{
public Bike(string name) : base(name) { }
public override void Drive()
[Link]($"{Name} is being driven. (Manual power)");
public override void Refuel()
[Link]($"{Name} does not need refueling.");
public class Garage
private Vehicle[] vehicles;
private int count;
public Garage(int capacity)
vehicles = new Vehicle[capacity];
count = 0;
public void AddVehicle(Vehicle vehicle)
{
if (count < [Link])
vehicles[count] = vehicle;
count++;
[Link]($"{[Link]} has been added to the garage.");
else
[Link]("Garage is full. Cannot add more vehicles.");
public void RemoveVehicle(Vehicle vehicle)
int index = [Link](vehicles, vehicle);
if (index >= 0)
for (int i = index; i < count - 1; i++)
vehicles[i] = vehicles[i + 1];
vehicles[count - 1] = null;
count--;
[Link]($"{[Link]} has been removed from the garage.");
}
else
[Link]($"{[Link]} is not in the garage.");
public void ShowVehicles()
if (count == 0)
[Link]("Garage is empty.");
else
[Link]("Garage contents:");
for (int i = 0; i < count; i++)
[Link]($"- {vehicles[i].Name} ({vehicles[i].GetType().Name})");
class Program
static void Main(string[] args)
{
Garage garage = new Garage(5);
Car car = new Car("Sedan", 15);
Bike bike = new Bike("Mountain Bike");
[Link]("Adding vehicles to the garage...");
[Link](car);
[Link](bike);
[Link]();
Vehicle vehicle = car;
[Link]("\nDriving vehicles:");
[Link]();
if (vehicle is Car castedCar)
[Link]($"Fuel Efficiency: {[Link]()} km/l");
[Link]();
[Link]("\nRefueling vehicles:");
[Link]();
[Link]();
[Link]("\nRemoving vehicles from the garage...");
[Link](car);
[Link]();