Car design

 avatar
unknown
csharp
a year ago
1.8 kB
3
Indexable
public interface ICar
{
    string Make { get; }
    string Model { get; }
    int Year { get; }
    decimal Price { get; }

    void Start();
    void DisplayInfo();
}

public abstract class CarBase : ICar
{
    public abstract string Make { get; }
    public abstract string Model { get; }
    public abstract int Year { get; }
    public abstract decimal Price { get; }

    public virtual void Start()
    {
        Console.WriteLine($"Starting the {Year} {Make} {Model}...");
    }

    public virtual void DisplayInfo()
    {
        Console.WriteLine($"Car: {Year} {Make} {Model}");
        Console.WriteLine($"Price: ${Price}");
    }
}

public class Sedan : CarBase
{
    public override string Make => "Honda";
    public override string Model => "Accord";
    public override int Year => 2022;
    public override decimal Price => 25000m;

    public int TrunkSize { get; set; }

    public override void DisplayInfo()
    {
        base.DisplayInfo();
        Console.WriteLine($"Trunk Size: {TrunkSize} cubic feet");
    }
}

public class SUV : CarBase
{
    public override string Make => "Toyota";
    public override string Model => "Rav4";
    public override int Year => 2023;
    public override decimal Price => 30000m;

    public int TowingCapacity { get; set; }

    public override void DisplayInfo()
    {
        base.DisplayInfo();
        Console.WriteLine($"Towing Capacity: {TowingCapacity} lbs");
    }
}
class Program
{
    static void Main(string[] args)
    {
        ICar sedan = new Sedan { TrunkSize = 15 };
        ICar suv = new SUV { TowingCapacity = 5000 };

        sedan.DisplayInfo();
        sedan.Start();

        Console.WriteLine();

        suv.DisplayInfo();
        suv.Start();
    }
}
Editor is loading...
Leave a Comment