// --------------------------------------------------------
// Dog.java
//
// File Revision Date: 08/15/05
// --------------------------------------------------------

public class Dog {
  public static final int MAX_SCRATCHES = 3;
  
  private String name = null;		// Default...
  private int numScratches = 0;   	// Default...
    
  public Dog () {
    name = "";
  }

  public Dog (String name) {
    this.name = name;
  }

  public void setName (String name) {
    this.name = name;
  }

  public String getName () {
    return name;
  }

  public void bark () {
    System.out.println ("Arf!");
  }  

  public void growl () {
    System.out.println ("Grrrr!");
  }

  public void yelp () {
    System.out.println ("Awooo!");
  }

  public void bite (Cat cat) {
    System.out.println ("Chomp!!!");
    cat.beenBitBy (this);
  }

  public void beenScratchedBy (Cat cat) {
    numScratches++;

    if (numScratches > MAX_SCRATCHES)
      runAway ();
    else
    {
      yelp ();
      growl ();
      bite (cat);
    }
  }

  private void runAway () {
    System.out.println ("Yike! Yike! Yike!...");
  }
}
