Example 11.26: IPump.java
1 public interface IPump { 2 public void setSpeed(int speed); 3 public void incrementSpeed(int i); 4 public int getSpeed(); 5 }
Example 11.27: ISensor.java
1 public interface ISensor { 2 public float getReading(); 3 public void setReading(float reading); 4 public void incrementReading(float reading); 5 }
Example 11.28: IEngine.java
1 public interface IEngine { 2 public void start(); 3 public void stop(); 4 public void incrementThrust(); 5 public void decrementThrust(); 6 }
Example 11.29: PartListener.java
1 import java.util.*; 2 3 public interface PartListener extends EventListener { 4 public void sensorReadingChangePerformed(PartEvent pe); 5 public void pumpSpeedChangePerformed(PartEvent pe); 6 public void partStatusChangePerformed(PartEvent pe); 7 }
Example 11.31: Sensor.java
1 public abstract class Sensor extends Part implements ISensor { 2 3 public Sensor(String name){ 4 super(name); 5 System.out.println("Sensor object created!"); 6 } 7 8 public Sensor(PartStatus status, String name){ 9 super(status, name); 10 System.out.println("Sensor object created!"); 11 } 12 13 14 /******************************* 15 ISensor Interface Methods 16 ********************************/ 17 18 public float getReading(){ 19 return 0; 20 } 21 22 public void setReading(float reading){ 23 fireSensorReadingChangeEvent(reading); 24 } 25 26 public void incrementReading(float increment) { 27 fireSensorReadingChangeEvent(getReading()); 28 } 29 }
Example 11.32: Engine.java
1 public abstract class Engine extends Part implements IEngine { 2 3 public Engine(PartStatus status, String name){ 4 super(status, name); 5 System.out.println("Engine object created!"); 6 } 7 8 public Engine(String name){ 9 super(name); 10 System.out.println("Engine object created!"); 11 } 12 13 14 /********************************************** 15 IEngine Interface Method Stubs 16 17 Default behavior will do nothing. They must be 18 overridden in a derived class. 19 ************************************************/ 20 public void start(){ } 21 public void stop(){ } 22 public void incrementThrust(){ } 23 public void decrementThrust(){ } 24 }
Example 11.34: OxygenSensor.java
1 public class OxygenSensor extends Sensor { 2 private static final int MIN_READING = 0; 3 private static final int MAX_READING = 1000; 4 private float _reading = 0; 5 6 public OxygenSensor(String name){ 7 super(name); 8 System.out.println("Oxygen Sensor " + name + " object created!"); 9 _reading = 0; 10 } 11 12 public OxygenSensor(PartStatus status, String name){ 13 super(status, name); 14 System.out.println("Oxygen Sensor " + name + " object created!"); 15 _reading = 0; 16 } 17 18 19 public float getReading(){ return _reading; } 20 21 public void setReading(float reading){ 22 if( (reading >= MIN_READING) && (reading <= MAX_READING)){ 23 _reading = reading; 24 super.setReading(reading); //call Sensor method to fire sensor reading change event 25 } else { 26 System.out.println("Warning: Attempt to set Oxygen Sensor outside valid range: " + 27 MIN_READING + " - " + MAX_READING); 28 } 29 30 } 31 32 public void incrementReading(float increment){ 33 if(((_reading + increment) >= MIN_READING) && ((_reading + increment) <= MAX_READING)){ 34 _reading += increment; 35 super.setReading(_reading); //call Sensor method to fire sensor reading change event 36 } else { 37 System.out.println("Warning: Attempt to set Oxygen Sensor outside valid range: " + 38 MIN_READING + " - " + MAX_READING); 39 } 40 } 41 42 } // end OxygenSensor class
Example 11.36: PartEvent.java
1 import java.util.*; 2 3 public class PartEvent extends EventObject { 4 private String _part_name = null; 5 private double _value = 0.0; 6 7 public PartEvent(Object source, String part_name, double value){ 8 super(source); 9 _part_name = part_name; 10 _value = value; 11 } 12 13 public PartEvent(Object source, String part_name){ 14 super(source); 15 _part_name = part_name; 16 } 17 18 public String getPartName(){ return _part_name; } 19 20 public double getValue(){ return _value; } 21 22 public String toString(){ return super.toString() + " " + getPartName();} 23 24 public String statusToString(){ 25 return ((Part) source).isWorking() ? " is working properly!" : " has malfunctioned!"; 26 } 27 28 }
Example 11.37: PartStatus.java
1 public final class PartStatus { 2 public static final PartStatus NOT_WORKING = new PartStatus(false); 3 public static final PartStatus WORKING = new PartStatus(true); 4 5 private boolean _is_working = false; 6 7 private PartStatus(boolean is_working){ 8 _is_working = is_working; 9 } 10 11 public boolean isWorking(){ return _is_working; } 12 }
Figure 11-22 shows the results of running example 11.38.
Figure 11-22: Results of Running Example 11.38
Example 11.38: EngineTester.java
1 public class EngineTester { 2 public static void main(String[] args){ 3 IEngine engine = new SimpleEngine("Main Engine"); 4 5 engine.start(); 6 engine.incrementThrust(); 7 engine.decrementThrust(); 8 } 9 }