First of all I know that any program I write needs an applet. Therefore I'm going to make an applet class. I don't want the applet class to contain anything except for the frame so i did that...
Then I made the frame, I know that this frame is only going to contain the snowperson's face so I wrote that...it just instantiated the snow person's face...but the frame that I extended takes a container as a parameter...so mine takes a parameter and when I call super I hand the container to my parent so it know who to make the calls on...also, the shapes in the snowFace take a container as well as the filledOval the snowFace extends...so they need to be passed the same container...
Finally I made all of the Face Parts...then I went through and compiled it and then i ran it and everything was upside down! I forgot that in graphics the y coordinate is backwards...
I fixed that and then everything was dandy...
If you have questions just mail me... Amanda.
package SnowPerson.SnowPersonGP;
/**
 *  Package SnowPerson.SnowPersonGP
 *  class Applet
 *
 *  Okay, so for this applet, I'm going to need to instantiate one
 *  thing again, because my applet should not  contain too many things.
 *  But, what the applet should instantiate, in most programs, is a
 *  frame that contains everything. So, here it is...
 *  author aks
 */
public class Applet extends
GP.Containers.Applet {
  /*It extends the GP.Containers.Applet class because that is the
    calls that the suns know how to work with.  It is just a nice
    environment.
  */
  private MyFrame _myFrame;
  /*that is the name of the SnowPerson frame that I'm going to make...*/
  public Applet() {
    super();
    /*to inherit all the properties of GP.Containers.Applet class...*/
    _myFrame = new MyFrame(this);
    /*The GP.Containers.Frame takes a container as a parameter
      so, because this extends the GP.Containers.Applet class it
      is a container I can pass in this applet, in order to do that
      I write the word this because in java that refers to the current
      class...
    */
    
  }//public Applet()
}//public class Applet extends...
SnowFace
package SnowPerson.SnowPersonGP;
/** 
 *  Package SnowPerson.SnowPersonGP
 *  class SnowFace 
 *
 *  This class Extends the GP.Graphics.Shape.FilledOval class...
 *  Therefore it has methods like setColor and setPosition...
 *  author aks
 */
public class SnowFace extends
GP.Graphics.FilledOval {
  private double SIZE = 100;
  /*everything will be drawn upon this constant so that we only have to
    change one constant to change the entire face's size.
  */
  private double POSITION = 200;
  /*this puts it smack dab in the center...*/
  private SnowEye _rightEye;
  private SnowEye _leftEye;
  private Mouth _mouth;
  private Nose _nose;
  /*these are the components of the face*/
  
  public SnowFace (GP.Container container) {
    super(container);
    this.SetSize(new GP.Attributes.Size(SIZE, SIZE));
    this.SetPosition(new GP.Attributes.Position(POSITION, POSITION));
    this.SetColor(new GP.Attributes.Colors.White());
    /*that line puts the face right in the middle of the frame
      because the default size of a frame is 400, 400...
    */
    _rightEye = new SnowEye(container, SIZE/4,
                            (POSITION+(SIZE/4)), (POSITION - (SIZE/4)));
    _leftEye = new SnowEye(container, SIZE/4,
                           (POSITION -(SIZE/4)), (POSITION - (SIZE/4)));
    _nose = new Nose(container,(SIZE/6), POSITION, POSITION);
    /*that puts the nose in the center of the face*/
    _mouth = new Mouth(container,(SIZE/6), POSITION, POSITION +(SIZE/4));
  }//public SnowFace(Container
container)
}//public class SnowFace extends FilledOval
MyFrame
package SnowPerson.SnowPersonGP;
/** 
 *  Package SnowPerson.SnowPersonGP 
 *  class MyFrame 
 *
 *  This class is the frame it will instnatiate the face which will be
 *  another class...  it takes a container as a parameter...
 *  author aks
 */
public class MyFrame extends GP.Containers.Frame {
  private SnowFace _face;//this refers to the face it will instantiate
  public MyFrame(GP.Container container) {
    super(container);//so that the parent receives the same container
    /*The frame that only takes one parameter in GP has a default
      size and shape...we don't need to alter it unless we want to.
    */
    _face = new SnowFace(container);
    /*Instantiation of the SnowFace */
  }//public MyFrame(Container container {
}//public class MyFrame....
Mouth
package SnowPerson.SnowPersonGP;
/** 
 *  Package SnowPerson.SnowPersonGP 
 *  class Mouth 
 *  This class is the mouth...  pretty boring i think...
 *  author aks
 */
public class Mouth extends GP.Graphics.FilledOval {
  public Mouth(GP.Container container, double size, double x, double y) {
    super(container);
    this.SetSize(new GP.Attributes.Size(size, size/4));
    this.SetPosition(new GP.Attributes.Position(x, y));
  }
}
Nose
package SnowPerson.SnowPersonGP;
/** 
 *  Package SnowPerson.SnowPersonGP 
 *  class Nose 
 *  This class is a square and it extends the GP.Graphics.FilledSquare
 *  class...not very interesting but oh well...
 *  author aks
 */
public class Nose extends GP.Graphics.FilledRectangle {
  public Nose (GP.Container container, double size, double x, double y) {
    super(container);
    this.SetSize(new GP.Attributes.Size(size, size));
    this.SetPosition(new GP.Attributes.Position(x, y));
    this.SetColor(new GP.Attributes.Colors.Black());
  }
}
SnowEye
package SnowPerson.SnowPersonGP;
/** 
 *  Package SnowPerson.SnowPersonGP 
 *  class SnowEye 
 *
 *  This class is an eye for the snowman...it contains a smaller eye for
 *  the pupil...it is a circle...
 *  author aks
 */
public class SnowEye extends GP.Graphics.FilledCircle {
  
  public SnowEye(GP.Container container, double size, double x, double y) {
    super(container);
    this.SetColor(new GP.Attributes.Colors.Blue());
    this.SetSize(new GP.Attributes.Size(size, size));
    this.SetPosition(new GP.Attributes.Position(x, y));
    GP.Graphics.FilledCircle pupil = new GP.Graphics.FilledCircle(container);
    pupil.SetPosition(new GP.Attributes.Position(x, y + (size/4)));
    pupil.SetColor(new GP.Attributes.Colors.Black());
    pupil.SetSize(new GP.Attributes.Size((size/4), (size/4)));
  }
}