/*CSU 214 - QUIZ 9 */

interface ISelect{
  public boolean select(Object obj);
}

/*
+--------------+
| Cat          |
+--------------+
| Sting name   |
| String owner |
+--------------+
*/

// to represent an animal
class Cat {
  Sting name;
  String owner;

  Cat(Sting name, String owner) {
    this.name = name;
    this.owner = owner;
  }
}
/*--------------------------------------------------------------------------------
Design the class that implements the ISelect inteface by selecting all cats who 
have the given owner.
--------------------------------------------------------------------------------*/

class SameOwner implements ISelect{
  String owner;
  
  SameOwner(String owner){
    this.owner = owner;
  }      
          
  // is this the owner of the given cat
  public boolean select(Object obj){
    if (obj instanceof Cat)
      return this.owner.equals(((Cat)obj).owner);
    else
      return false;
  }                                 
}

/* Examples: */
class Examples{

  ISelect catlover = new SameOwner("Catlover");
  ISelect edward = new SameOwner("Edward");

  Cat boots = new Cat("Boots", "Catlover");
  Cat blackie = new Cat("Blackie", "Edward");

  catlover.select(boots) ---> true
  catlover.select(blackie) ---> false
  edward.select(boots) ---> false
  edward.select(blackie) ---> true

}
