// Arup Guha
// 2/23/09
// Tracing Example for AP CS Quiz: Inheritance.

import java.util.*;

class Athlete {

    protected String lastName;
    protected String firstName;	
	protected double salary;
	protected int jerseyNumber;
	 
	 public Athlete(String last, String first, int jersey) {
	     lastName = last; 
		 firstName = first;  
		 salary = 100000;
		 jerseyNumber = jersey;
	 }
	 
	 public void train() {
	     System.out.println("Lift weights, Run");
	 }
	 
	public void printBetter(BaseballPlayer b) {
	     if (this.jerseyNumber > b.jerseyNumber)
		      System.out.println("In A: "+this.lastName);
		 else
		      System.out.println("In A: "+b.lastName);
	 }


}

class BaseballPlayer extends Athlete {

    protected double BA;
	 
	public BaseballPlayer(String last, String first, int jersey,
	 							  int hits, int atbats) {
	    super(last,first,jersey);
		BA = (double)hits/atbats;
	}
	 
	public void train() {
	    System.out.println("Lift weights, Run, Batting practice");
	}
	 
	public void printBetter(BaseballPlayer b) {
	    if (this.BA > b.BA)
		     System.out.println("In BP: "+this.lastName);
		else
		     System.out.println("In BP: "+b.lastName);
	 }
}

public class AllStarBaseballPlayer extends BaseballPlayer {


    public AllStarBaseballPlayer(String last, String first, int jersey,
	 							  int hits, int atbats) {
	 	  super(last,first,jersey,hits,atbats);
	}

    public void train() {
		  System.out.println("Lift weights, Run, Batting practice, Sign autographs");
	}
	 
	 public void printBetter(BaseballPlayer b) {
	     if (this.jerseyNumber > b.jerseyNumber)
		      System.out.println("In ASBP: "+this.lastName);
		  else
		      System.out.println("In ASBP: "+b.lastName);
	 }
	 
	 public void printBetter(AllStarBaseballPlayer b) {
	     if (this.BA > b.BA)
		      System.out.println("Best player: "+this.lastName);
		  else
		      System.out.println("Best player: "+b.lastName);
	 }
	 
	 public static void main(String[] args) {
	     
		  Athlete acorn = new Athlete("Acuff","Amy",15);
		  Athlete berra = new BaseballPlayer("Berra","Yogi",8,2150,7775);
		  Athlete carter = new AllStarBaseballPlayer("Carter","Gary",8,2092,7971);
		  BaseballPlayer dimaggio =
		      new BaseballPlayer("Dimaggio","Joe",5,2214,6821);
		  BaseballPlayer fisk =
		      new AllStarBaseballPlayer("Fisk","Carlton",72,2356,8756);
		  AllStarBaseballPlayer gehrig =
		      new AllStarBaseballPlayer("Gehrig","Lou",4,2721,8001);
				
		  acorn.train();
		  berra.train();
		  carter.train();
		  dimaggio.train();
		  fisk.train();
		  gehrig.train();
		  berra.printBetter(dimaggio);
		  carter.printBetter(fisk);
		  fisk.printBetter(gehrig); 
		  
		  System.out.println("\nExtra");
		  gehrig.printBetter(fisk);
		  fisk.printBetter(fisk);
		  gehrig.printBetter(gehrig);
	 
	 }
}
