Example 10.9: Engine.java
1 public class Engine { 2 private Compressor its_compressor = null; 3 private FuelPump its_fuelpump = null; 4 private OilPump its_oilpump = null; 5 private OxygenSensor its_oxygensensor = null; 6 private TemperatureSensor its_temperaturesensor = null; 7 private int its_engine_number = 0; 8 private boolean is_running = false; 9 private PartStatus its_status = null; 10 11 public Engine(int engine_number){ 12 its_engine_number = engine_number; 13 its_compressor = new Compressor(PartStatus.WORKING, its_engine_number); 14 its_fuelpump = new FuelPump(PartStatus.WORKING, its_engine_number); 15 its_oilpump = new OilPump(PartStatus.WORKING, its_engine_number); 16 its_oxygensensor = new OxygenSensor(PartStatus.WORKING, its_engine_number); 17 its_temperaturesensor = new TemperatureSensor(PartStatus.WORKING, its_engine_number); 18 its_status = PartStatus.WORKING; 19 System.out.println("Engine #" + its_engine_number + " created!"); 20 } 21 22 public void setCompressorStatus(PartStatus status){ 23 its_compressor.setPartStatus(status); 24 checkEngineStatus(); 25 } 26 27 public void setFuelPumpStatus(PartStatus status){ 28 its_fuelpump.setPartStatus(status); 29 checkEngineStatus(); 30 31 } 32 33 public void setOilPumpStatus(PartStatus status){ 34 its_oilpump.setPartStatus(status); 35 checkEngineStatus(); 36 } 37 38 public void setOxygenSensorStatus(PartStatus status){ 39 its_oxygensensor.setPartStatus(status); 40 checkEngineStatus(); 41 } 42 43 public void setTemperatureSensor(PartStatus status){ 44 its_temperaturesensor.setPartStatus(status); 45 checkEngineStatus(); 46 } 47 48 public boolean checkEngineStatus(){ 49 if(its_compressor.isWorking() && its_fuelpump.isWorking() && 50 its_oilpump.isWorking() && its_oxygensensor.isWorking() && 51 its_temperaturesensor.isWorking()){ 52 its_status = PartStatus.WORKING; 53 System.out.println("All engine #" + its_engine_number + " components working properly."); 54 } else { 55 its_status = PartStatus.NOT_WORKING; 56 System.out.println("Engine #" + its_engine_number + " malfunction."); 57 if(is_running){ 58 System.out.println("Engine #" + its_engine_number + " shutting down!"); 59 stopEngine(); 60 } 61 } 62 63 return its_status.isWorking(); 64 } 65 66 public void startEngine(){ 67 if(!is_running){ 68 if(checkEngineStatus()){ 69 is_running = true; 70 System.out.println("Engine #" + its_engine_number + " is running!"); 71 } else { 72 System.out.println("There is a problem with an engine #" + its_engine_number 73 + " component. Engine cannot start."); 74 } 75 } else { 76 System.out.println("Engine #" + its_engine_number + " is already running!"); 77 } 78 } 79 80 public void stopEngine(){ 81 is_running = false; 82 System.out.println("Engine #" + its_engine_number + " has been stopped!"); 83 } 84 85 }
Example 10.10: Compressor.java
1 public class Compressor { 2 private int registered_engine_number = 0; 3 private PartStatus part_status; 4 5 public Compressor(PartStatus status, int engine_number){ 6 registered_engine_number = engine_number; 7 part_status = status; 8 System.out.println("Compressor Created..."); 9 } 10 11 public boolean isWorking(){ return part_status.isWorking(); } 12 13 public void setPartStatus(PartStatus status){ 14 part_status = status; 15 } 16 17 public void setRegisteredEngineNumber(int engine_number){ 18 registered_engine_number = engine_number; 19 } 20 21 public int getRegisteredEngineNumber(){ return registered_engine_number;} 22 }
Example 10.11: FuelPump.java
1 public class FuelPump { 2 private int registered_engine_number = 0; 3 private PartStatus part_status; 4 5 public FuelPump(PartStatus status, int engine_number){ 6 registered_engine_number = engine_number; 7 part_status = status; 8 System.out.println("FuelPump Created..."); 9 } 10 11 public boolean isWorking(){ return part_status.isWorking(); } 12 13 public void setPartStatus(PartStatus status){ 14 part_status = status; 15 } 16 17 public void setRegisteredEngineNumber(int engine_number){ 18 registered_engine_number = engine_number; 19 } 20 21 public int getRegisteredEngineNumber(){ return registered_engine_number; } 22 }
Example 10.12: OilPump.java
1 public class OilPump { 2 private int registered_engine_number = 0; 3 private PartStatus part_status; 4 5 public OilPump(PartStatus status, int engine_number){ 6 registered_engine_number = engine_number; 7 part_status = status; 8 System.out.println("OilPump Created..."); 9 } 10 11 public boolean isWorking(){ return part_status.isWorking(); } 12 13 public void setPartStatus(PartStatus status){ 14 part_status = status; 15 } 16 17 public void setRegisteredEngineNumber(int engine_number){ 18 registered_engine_number = engine_number; 19 } 20 21 public int getRegisteredEngineNumber(){ return registered_engine_number; } 22 }
Example 10.13: OxygenSensor.java
1 public class OxygenSensor { 2 private int registered_engine_number = 0; 3 private PartStatus part_status; 4 5 public OxygenSensor(PartStatus status, int engine_number){ 6 registered_engine_number = engine_number; 7 part_status = status; 8 System.out.println("OxygenSensor Created..."); 9 } 10 11 public boolean isWorking(){ return part_status.isWorking(); } 12 13 public void setPartStatus(PartStatus status){ 14 part_status = status; 15 } 16 17 public void setRegisteredEngineNumber(int engine_number){ 18 registered_engine_number = engine_number; 19 } 20 21 public int getRegisteredEngineNumber(){ return registered_engine_number; } 22 }
Example 10.14: TemperatureSensor.java
1 public class TemperatureSensor { 2 private int registered_engine_number = 0; 3 private PartStatus part_status; 4 5 public TemperatureSensor(PartStatus status, int engine_number){ 6 registered_engine_number = engine_number; 7 part_status = status; 8 System.out.println("TemperatureSensor Created..."); 9 } 10 11 public boolean isWorking(){ return part_status.isWorking(); } 12 13 public void setPartStatus(PartStatus status){ 14 part_status = status; 15 } 16 17 public void setRegisteredEngineNumber(int engine_number){ 18 registered_engine_number = engine_number; 19 } 20 21 public int getRegisteredEngineNumber(){ return registered_engine_number; } 22 }
Example 10.15: PartStatus.java
1 public class PartStatus { 2 private boolean its_status = false; 3 4 public static final PartStatus WORKING = new PartStatus(true); 5 public static final PartStatus NOT_WORKING = new PartStatus(false); 6 7 private PartStatus(boolean status){ 8 its_status = status; 9 } 10 11 public boolean isWorking(){ return its_status; } 12 13 }
Example 10.16: EngineTester.java
1 public class EngineTester { 2 public static void main(String[] args){ 3 Engine e1 = new Engine(1); 4 e1.startEngine(); 5 e1.setCompressorStatus(PartStatus.NOT_WORKING); 6 e1.startEngine(); 7 e1.startEngine(); 8 e1.setCompressorStatus(PartStatus.WORKING); 9 e1.startEngine(); 10 } 11 }