예제 #1
0
 public Car(double fuelLevel)
 {
     fuelTank                  = new FuelTank(fuelLevel);
     engine                    = new Engine(fuelTank);
     fuelTankDisplay           = new FuelTankDisplay(fuelTank);
     drivingProcessor          = new DrivingProcessor();
     drivingInformationDisplay = new DrivingInformationDisplay(drivingProcessor);
     onBoardComputer           = new OnBoardComputer(drivingProcessor, fuelTank);
     onBoardComputerDisplay    = new OnBoardComputerDisplay(onBoardComputer);
 }
예제 #2
0
        public IOnBoardComputerDisplay onBoardComputerDisplay; // car #3



        public Car(double fuelLevel = 20, int maxAcceleration = 10) // car #2
        {
            fuelTank                  = new FuelTank(fuelLevel);
            engine                    = new Engine(fuelTank);
            fuelTankDisplay           = new FuelTankDisplay(fuelTank);
            drivingProcessor          = new DrivingProcessor(engine, maxAcceleration, fuelTank);
            drivingInformationDisplay = new DrivingInformationDisplay(drivingProcessor);
            onBoardComputer           = new OnBoardComputer(drivingProcessor);
            onBoardComputerDisplay    = new OnBoardComputerDisplay(onBoardComputer);
        }
예제 #3
0
 public Car(double fuelLevel, int maxAcceleration)
 {
     fuelLevel                 = Math.Max(Math.Min(fuelLevel, 60), 0);
     fuelTank                  = new FuelTank(fuelLevel);
     engine                    = new Engine(fuelTank);
     fuelTankDisplay           = new FuelTankDisplay(fuelTank);
     drivingProcessor          = new DrivingProcessor(engine, maxAcceleration);
     onBoardComputer           = new OnBoardComputer(drivingProcessor, fuelTank);
     drivingInformationDisplay = new DrivingInformationDisplay(drivingProcessor);
     onBoardComputerDisplay    = new OnBoardComputerDisplay(onBoardComputer);
 }
예제 #4
0
 public Car(double fuelLevel, int maxAcceleration) // car #2
 {
     Console.WriteLine($"New Car. fuelLevel: {fuelLevel}, maxAcceleration: {maxAcceleration}");
     fuelTank                  = new FuelTank(fuelLevel);
     drivingProcessor          = new DrivingProcessor();
     engine                    = new Engine(fuelTank, drivingProcessor);
     fuelTankDisplay           = new FuelTankDisplay(fuelTank);
     drivingInformationDisplay = new DrivingInformationDisplay(drivingProcessor);
     _maxAcceleration          = Math.Clamp(maxAcceleration, MIN_ACCELERATION, MAX_ACCELERATION);
     onBoardComputer           = new OnBoardComputer(drivingProcessor, fuelTank);
     onBoardComputerDisplay    = new OnBoardComputerDisplay(onBoardComputer);
 }
예제 #5
0
        public Car(double fuelLevel, int maxAcceleration)
        {
            engine                    = new Engine();
            fuelTankDisplay           = new FuelTankDisplay();
            fuelTank                  = new FuelTank(fuelLevel);
            drivingInformationDisplay = new DrivingInformationDisplay();
            drivingProcessor          = new DrivingProcessor(maxAcceleration);
            onBoardComputer           = new OnBoardComputer();
            onBoardComputerDisplay    = new OnBoardComputerDisplay();

            ((Engine)engine).OnEngineConsume += ((FuelTank)fuelTank).HandleConsumeEvent;
            ((OnBoardComputer)onBoardComputer).OnBoardComputerData += ((OnBoardComputerDisplay)onBoardComputerDisplay).ComputerDataHandler;
            ((FuelTank)fuelTank).OnFuelTankChange += ((FuelTankDisplay)fuelTankDisplay).FillLevelStateHandler;
            ((FuelTank)fuelTank).OnFuelTankChange += ((Engine)engine).FuelTankHandler;
            ((FuelTank)fuelTank).OnFuelTankChange += ((OnBoardComputer)onBoardComputer).FuelTankHandler;
            ((DrivingProcessor)drivingProcessor).OnDrivingProcessorChange += ((OnBoardComputer)onBoardComputer).DrivingProcessorHandler;
            ((DrivingProcessor)drivingProcessor).OnDrivingProcessorChange += ((DrivingInformationDisplay)drivingInformationDisplay).ActualSpeedHandler;
            ((DrivingProcessor)drivingProcessor).OnDrivingProcessorChange += ((Engine)engine).DrivingProcessorHandler;
            ((OnBoardComputerDisplay)onBoardComputerDisplay).OnTripReset  += ((OnBoardComputer)onBoardComputer).TripResetHandler;
            ((OnBoardComputerDisplay)onBoardComputerDisplay).OnTotalReset += ((OnBoardComputer)onBoardComputer).TotalResetHandler;
            ((FuelTank)fuelTank).SendState();
        }