Пример #1
0
        public VehicleTicket AddNewVehicle(string i_LicenseNumber, VehiclesEnums.eVehicleType i_VehicleType)
        {
            Vehicle       vehicle          = m_Factory.CreateNewVehicleOfType(i_VehicleType, i_LicenseNumber);
            VehicleTicket newVehicleTicket = new VehicleTicket(vehicle);

            m_Vehicles.Add(vehicle.GetLicenseNumber(), newVehicleTicket);

            return(newVehicleTicket);
        }
        public Vehicle CreateNewVehicleOfType(VehiclesEnums.eVehicleType i_VehicleType, string i_LicenseNumber)
        {
            Vehicle vehicle;
            Engine  engine = null;

            switch (i_VehicleType)
            {
            case VehiclesEnums.eVehicleType.FuelCar:
                engine  = new FuelEngine(k_CarMaxFuelCapacity, k_CarFuelType);
                vehicle = new Car(i_LicenseNumber, engine);
                break;

            case VehiclesEnums.eVehicleType.ElectricCar:
                engine  = new ElectricEngine(k_CarMaxEngineChargingTime);
                vehicle = new Car(i_LicenseNumber, engine);
                break;

            case VehiclesEnums.eVehicleType.FuelBike:
                engine  = new FuelEngine(k_BikeMaxFuelCapacity, k_BikeFuelType);
                vehicle = new Bike(i_LicenseNumber, engine);
                break;

            case VehiclesEnums.eVehicleType.ElectricBike:
                engine  = new ElectricEngine(k_BikeMaxEngineChargingTime);
                vehicle = new Bike(i_LicenseNumber, engine);
                break;

            case VehiclesEnums.eVehicleType.Truck:
                engine  = new FuelEngine(k_TruckMaxFuelCapacity, k_TruckFuelType);
                vehicle = new Truck(i_LicenseNumber, engine);
                break;

            default:
                throw new ArgumentException(string.Format(k_InvalidVehicleType, i_VehicleType));
            }

            return(vehicle);
        }