// Filename Counters/RoomMonitorObj.java. // Providing a non-abstract class which monitors // entry and exit occurrences, first implementation. // // Written for JFL book Chapter 3 see text. // Fintan Culwin, v0.1, January 1997 // Modified for classroom discussion. // Added two constructors // extends directly from Object // X. Meng feb-14-1998 package Counters; public class RoomMonitorObj extends Object { // Largest possible positive int value, 2147483647 in decimal. private static final int MAXINTEGER = 0x7FFFFFFF; private WarningCounter theCounter; private int maxEverInRoom = 0; private int totalNumberEntered = 0; public RoomMonitorObj() { theCounter = new WarningCounter(0, MAXINTEGER); maxEverInRoom = 0; totalNumberEntered = 0; } // End default constructor. public RoomMonitorObj(int upperLimit) { // if only one parameter is supplied, we assume it is // the upper limit theCounter = new WarningCounter(0, upperLimit); maxEverInRoom = 0; totalNumberEntered = 0; } // End default constructor. public RoomMonitorObj(int lowerLimit, int upperLimit) { theCounter = new WarningCounter(lowerLimit, upperLimit); maxEverInRoom = 0; totalNumberEntered = 0; } // End default constructor. public void enterRoom() { theCounter.count(); totalNumberEntered++; if ( this.numberCurrentlyInRoomIs() > maxEverInRoom ) { maxEverInRoom++; } } // End enterRoom. public void exitRoom() { theCounter.unCount(); } // End exitRoom. public int numberCurrentlyInRoomIs(){ return theCounter.numberCountedIs(); } // End numberCurrentlyInRoomIs. public int maxEverInRoomIs(){ return maxEverInRoom; } // End maxEverInRoomIs. public int totalNumberEnteredIs(){ return totalNumberEntered; } // End totalNumberEnteredIs. public String toString(){ return "Now in room : " + this.numberCurrentlyInRoomIs() + " Max in room : " + this.maxEverInRoomIs() + " Total entered : " + this.totalNumberEnteredIs(); } // End toString. } // End RoomMonitor.