这是一个电梯模拟运行的程序

源代码在线查看: light.java

软件大小: 729 K
上传用户: susanxuwenjun
关键词: 电梯 模拟 运行 程序
下载地址: 免注册下载 普通下载 VIP

相关代码

				// Light.java
				// Light turns a light on or off
				package com.deitel.jhtp5.elevator.model;
				
				// Deitel packages
				import com.deitel.jhtp5.elevator.event.*;
				
				public class Light implements ElevatorMoveListener {
				
				   // Light state (on/off)
				   private boolean lightOn;
				
				   // time before Light turns off automatically (3 seconds)
				   public static final int AUTOMATIC_TURNOFF_DELAY = 3000;
				
				   // LightListener listens for when Light should turn on/off
				   private LightListener lightListener;
				
				   // location where Light turned on or off
				   private Location lightLocation;
				
				   // set LightListener
				   public void setLightListener( LightListener listener )
				   {
				      lightListener = listener;
				   }
				
				   // turn on Light
				   public void turnOnLight( Location location )
				   {
				      if ( !lightOn ) {
				
				         lightOn = true;
				
				         // send LightEvent to LightListener
				         lightListener.lightTurnedOn( 
				            new LightEvent( this, location ) );
				
				         lightLocation = location;
				
				         // declare Thread that ensures automatic Light turn off
				         Thread thread = new Thread( 
				            new Runnable() {
				
				               public void run()
				               {
				                  // turn off Light if on for more than 3 seconds
				                  try {
				                     Thread.sleep( AUTOMATIC_TURNOFF_DELAY );
				                     turnOffLight( lightLocation );
				                 }
				
				                  // handle exception if interrupted
				                  catch ( InterruptedException exception ) {
				                     exception.printStackTrace();
				                  }
				               }
				            } // end anonymous inner class
				         );
				
				         thread.start();
				      }
				   } // end method turnOnLight
				
				   // turn off Light
				   public void turnOffLight( Location location )
				   {
				      if ( lightOn ) {
				
				         lightOn = false;
				
				         // send LightEvent to LightListener
				         lightListener.lightTurnedOff( 
				            new LightEvent( this, location ) );
				      }
				   } // end method turnOffLight
				
				   // return whether Light is on or off
				   public boolean isLightOn()
				   {
				      return lightOn;
				   }
				
				   // invoked when Elevator has departed
				   public void elevatorDeparted( 
				      ElevatorMoveEvent moveEvent )
				   {
				      turnOffLight( moveEvent.getLocation() );
				   }
				
				   // invoked when Elevator has arrived
				   public void elevatorArrived( 
				      ElevatorMoveEvent moveEvent )
				   {
				      turnOnLight( moveEvent.getLocation() );
				   }
				}
				
				
				 /**************************************************************************
				 * (C) Copyright 1992-2003 by Deitel & Associates, Inc. and               *
				 * Prentice Hall. All Rights Reserved.                                    *
				 *                                                                        *
				 * DISCLAIMER: The authors and publisher of this book have used their     *
				 * best efforts in preparing the book. These efforts include the          *
				 * development, research, and testing of the theories and programs        *
				 * to determine their effectiveness. The authors and publisher make       *
				 * no warranty of any kind, expressed or implied, with regard to these    *
				 * programs or to the documentation contained in these books. The authors *
				 * and publisher shall not be liable in any event for incidental or       *
				 * consequential damages in connection with, or arising out of, the       *
				 * furnishing, performance, or use of these programs.                     *
				 *************************************************************************/
							

相关资源