Journal for SP Snowperson
Code:
Specifications
Write a program that creates the head of a SnowPerson.  The head should
have two eyes, a nose, and a mouth.  We have created some classes for
you in the package cs015.SP which you can use to aid you in programming
this assignment.
The Process
In this case a lot of objects already exist for us, so we only need to
instantiate a couple of things, and we will be all set.  What are the
specs?  We want a SnowPerson's face.  Well, what does that consist of?
I think we will need a face to act as a background, then two
eyes, a nose, and a mouth.  We actually already
have an object that contains two eyes, so we just need to instantiate
one of those objects.
We know that we want to do very little in the Applet, so the only thing
we should do is instantiate the SnowFace class that we have created.
Our SnowFace class can contain everything else.  Since we know that most 
things have been written for us, we'll just have the SnowFace
instantiate one of everything (keeping in mind that the RoundEyes class
contains two eyes).  If we put all of this in the constructor, and keep
them as instance variables, everything will appear and nothing will
disappear until we want it to.  
That's it, pretty simple huh?
Questions
  - Why is there a private before all the variables?
  
 - I made the variables private because I don't want anything else to 
      have access to my data.  In the SnowFace class, I don't want
      anything else to know what I contain.  I just want other objects
      to think of me as a Face, and not think about what other parts I
      might have.  It is my responsibility to change any of my
      properties this way, and I can make sure it is done right.
      Allowing some other object access to my variables could let them
      change something without me knowing it, and possibly screw up my
      data.  This is bad, so by making things private, I can make sure
      that everything is changed correctly.
  
 - Why do the variables all have underscores at the beginning?
  
 - In this case it's pretty easy to see what my variables are, and
      where I declared them.  And technically, putting underscores
      doesn't make much of a difference.  What the underscore does is
      remind me (and you the reader of the code) that that specific
      variable is an instance variable (as opposed to a local
      variable).  So this way I know that whenever I use this variable,
      it has been declared at the top and is something that will remain
      with the class forever.  If the variable does not have an
      underscore, I can assume it is local to the method, and that it
      will not stick around once the method is closed.  So if I want to
      do anything that is permanent to the class, I better make sure I
      am using an instance variable.
  
 - Why did you create everything in the constructor?
  
 - A face is made up of a number of parts, in this case the eyes,
      nose, and mouth.  I want to make sure that every time a face is
      created, the other parts are created as well.  I can guarantee
      that this happens by instantiating (creating) these variables
      in the constructor.  The constructor of an object is called every
      time it is instantiated.  So something that I want to happen each
      time the object is created should go in the constructor.  Also, in 
      this case I do not have a lot of code.  If I had a lot I wanted to 
      do every time the object is created, I might have broken it down
      into different methods and simply had the constructor call those
      methods.
 
	
Comments
Last modified: Mon Mar  2 16:19:33 EST 1998