
/** 
 Program: 	EssentialScope
 Purpose: 	simple demonstration of Java scope and constants
 @author 	john@december.com 
 @version	1.05; 21 Nov 95 
 Note:          converted to 1.00 beta
 Output:
		main: counter = 10
		main: MAXIMUM = 99
		alpha: counter = 10
		alpha: MAXIMUM = 99
		beta: counter = 900
		beta: EssentialScope.counter = 10
		gamma: counter = 110
		gamma: gammaCounter = 500
		main: counter = 10
 */

class EssentialScope {

   static int counter = 10;
   static final int MAXIMUM = 99;

   public static void main (String args[]) {

      // Illegal: MAXIMUM = 900; Can't assign values to final variables

      System.out.println("main: counter = " + counter);
      System.out.println("main: MAXIMUM = " + MAXIMUM);
      alpha();
      beta();
      gamma(counter); 
      System.out.println("main: counter = " + counter);
   }

   public static void alpha() {
      System.out.println("alpha: counter = " + counter);
      System.out.println("alpha: MAXIMUM = " + MAXIMUM);
   }

   public static void beta() {
      int counter = 900;
      System.out.println("beta: counter = " + counter);
      System.out.println("beta: EssentialScope.counter = " + EssentialScope.counter);
   }

   public static void gamma(int counter) {
      int gammaCounter = 500; // undefined variable outside of gamma

      counter = counter + 100;
      System.out.println("gamma: counter = " + counter);
      System.out.println("gamma: gammaCounter = " + gammaCounter);
   }
}
