				[Mon Aug 13 20:03:56 EDT 2007]
				 


1. SillyClass exists to get around the NULL problem in World.java. 

   I create a SillyCanvas, which is a 600 x 600 canvas so that
   theCanvas doesn't have to be initialized to NULL. 

   A SillyCanvas is a Canvas that displays a warning for every 
   draw method that is invoked. So students can show the canvas 
   before they call bigBang and test the draw method in World, 
   but it is pretty silly. 

 Rationale: 
   The reason I don't want NULL in this draw.* library is that 
   it is used with ProfessorJ's Beginner and Intermediate 
   language levels and they don't include NULL. It turns out, 
   however, that this particular NULL for theCanvas could "leak 
   out" if a student did this: 
   
	new SampleWorld().theCanvas.show()

   or something less direct than that. 

2. Of course, the rationale also suggests that I may have made 
   a mistake in the design of World. Instead of creating World
   via a no-argument constructor, I add a constructor of two 
   arguments, width and height, and force students to perform 
   a super call: 

     World(int width, int height) { 
        this.theCanvas = new Canvas(width,height); 
     }

     World() { 
         throw RuntimeException("can't create a world without size arguments"); 
     }

   PRO: And voli`a, the problem would go away. 
   CONS: Students must fix the size of the canvas at World creation time.
   	 With my existing design, they can choose different sizes when 
	 they run bigBang. Is it worth it? Probably not. 
   
