public static void Main()
Customer[] custArray = new Customer[3];
custArray[0] = CreateCustomer("Joe", "Smith");
custArray[0].Orders[0] = CreateOrder(new Automobile(2,2,2), 19.99M, 1);
custArray[1] = CreateCustomer("Sally", "Jones");
custArray[1].Orders[0] = CreateOrder(new Motorcycle(2.5, 3),39.99M,1);
DisplayCustomerOrders(custArray);
private static Order CreateOrder(Vehicle Vehical, decimal Price, int Quantity)
return new Order() { Transport = Vehical, Price = Price, Quantity = Quantity };
private static Customer CreateCustomer(string FirstName, string LastName)
return new Customer() { FirstName = FirstName, LastName = LastName, Orders = new Order[2] };
private static void DisplayCustomerOrders(Customer[] custArray)
foreach (var customer in custArray)
Console.WriteLine("Customer:\n");
Console.WriteLine("{0, 15} {1, 17}", "First Name", "Last Name");
Console.WriteLine("{0, 10} {1, 20}", customer.FirstName, customer.LastName);
Console.WriteLine("========================================");
Console.WriteLine("Orders:\n");
foreach (var order in customer.Orders)
Console.WriteLine("{0, 10} {1, 10} {2, 10} {3, 10}",
order.Transport.Description,
order.Transport.CalculateCapacity(),
order.Price, order.Quantity);
Console.WriteLine("\n\n");
public string FirstName {get; set;}
public string LastName {get; set;}
public Order[] Orders {get; set;}
public Vehicle Transport {get; set;}
public decimal Price { get; set; }
public int Quantity { get; set; }
public int Wheels { get; set; }
public string Description { get; set; }
public int HorsePower { get; set; }
protected double Height { get; set; }
public abstract double CalculateCapacity();
class Automobile : Vehicle
private double _length { get; set; }
private double _width { get; set; }
public Automobile(double Length, double Width, double Height)
base.Description = "Automobile";
public override double CalculateCapacity()
return _length * _width + base.Height;
class Motorcycle : Vehicle
private double _radius { get; set; }
public Motorcycle(double Radius, double Height)
base.Description = "Motorcycle";
public override double CalculateCapacity()
return (Math.PI * (_radius * _radius) * base.Height) * 2;