Question

In: Computer Science

**Only need the bold answered In Java, implement the Athlete, Swimmer, Runner, and AthleteRoster classes below....

**Only need the bold answered

In Java, implement the Athlete, Swimmer, Runner, and AthleteRoster classes below. Each class must be in separate file. Draw an UML diagram with the inheritance relationship of the classes.

1. The Athlete class
a. All class variables of the Athlete class must be private.

b.is a class with a single constructor: Athlete(String lName, String fName, int birthYear, int birthMonth, int birthDay, char gender). All arguments of the constructor should be stored as class variables. There should only be getter methods for first and last name variables. There should be no getters or setters for birthYear, birthMonth, birthDay.

c. Getter and setter methods for the gender of the athlete. The method setGender accepts a character and store it as a class variable. Characters 'm', 'M' denotes male, 'f' or 'F' denotes male or female. Any other char will be treated as undeclared. The method getGender return either the word "male" or "female" or “undeclared”.

  1. The method computeAge() takes no arguments and returns the athletes computed age (as of today's date) as a string of the form "X years, Y months and Z days". Hint: Use the LocalDate and Period classes.

    i. e.g. "21 years, 2 months and 3 days". ii. e.g. "21 years and 3 days".

    iii. e.g. "21 years and 2 months". iv. e.g. "21 years".

    v. e.g. "2 months and 3 days".

  2. The method public long daysSinceBirth() takes no arguments and returns a long which is the number of days since the athlete’s date of birth to the current day. Hint: Use the LocalDate and ChronoUnit classes.

  3. The toString method returns a string comprised of the results ofgetFname, getLName and computeAge. E.g.

    i. “Bunny Bugs is 19 years and 1 day old”

  4. The equals method returns true if the name and date of birth of this athlete and the compared other athlete are the same, otherwise return false.

2. The Swimmer class
a. All class variables of the Swimmer class must be private.

  1. inherits from the Athlete class and has a single constructor,

    Swimmer(String lName, String fName, int birthYear, int birthMonth, int birthDay, char gender, String team). There should be a class variable for team. There should be a getter method for team.

  2. The Swimmer class stores swim events for the swimmer. There should be a class variable for events. A swimmer participates in one or more of these events. The addEvent method is oveloadedand either adds a single event for the swimmer public boolean addEvent(String singleEvent) or adds a group of events for the swimmer public boolean addEvent(ArrayList multiEvents). Each event is of type String. Duplicate events are not stored and return false if duplicate found.

  3. There should be a getter method that returns the class variable events.

  4. The overridden toString method returns a string comprised of the concatenation of the parent’s toString return plus " and is a swimmer for team: XXXXX in the following events: YYYYY; ZZZZZZ." E.g.

    i. “Missy Franklin is 24 years and 4 months old and is a swimmer for team: Colorado Stars. She participates in the following events: [100m freestyle, 100m backstroke, 50m backstroke]”

3. The Runner class
a. All class variables of the Runner class must be private.

  1. inherits from the Athlete class and has a single constructor,

    Runner(String lName, String fName, int birthYear, int birthMonth, int birthDay, char gender, String country). There should be a class variable for country. There should be a getter method for country.

  2. The Runner class stores race events for the runner. There should be a class variable for events. Each event is a Distance. The list of valid events is given below:
    M100, M200, M400, M3000, M5000, M10000. A runner participates inone or more of these events. The addEvent method is oveloadedand either adds a single event for the runner public boolean addEvent(String singleEvent) or adds a group of events for the runner public boolean addEvent(ArrayList multiEvents). Each event is of type String. Duplicate events are not stored and return false if duplicate found.

  1. There should be a getter method that returns the class variable events.

  2. The toString method returns a String in the form: " AAA BBBB is XX years, YY months and ZZ days. He is a citizen of CCCCCCC and is a DDDDDDDD who participates in these events: [MJ00, MK00, ML00]”. If she does not participate in M3000 or M5000 or M10000 then she is a sprinter. If she does not participate in M100 or M200 or M400 then she is a long-distance runner. Otherwise she is a super athlete. E.g.

    i. “Bunny Bugs is 19 years and 1 day old. His is a citizen of USA and is a long-distance runner who participates in these events: [M10000]”

4. The AthleteRoster class
a. All class variables of the AthleteRoster class must be private.

  1. Does not inherits from the Athlete class. The AthleteRoster class has a single constructor, AthleteRoster(String semster, int year). There should be class variables for semester and year. There should be getter methods for semester and year.

  2. The AthleteRoster class has only one method for adding Athlete to the roster, by using the boolean addAthlete(Athlete a)method. The method returns true if the athlete was added successfully, it returns false if the athlete object already exists in the roster and therefore was not added.

  3. Your AthleteRoster class will have only one class level data structure, an ArrayList, for storing athlete objects.

  4. The String allAthletesOrderedByLastName() method returns a string object with of all the names of the athletes (Swimmers, Runners, etc.) in ascending order of last names(a-z).

  5. The String allAthletesOrderedByAge() method returns a string object with of all the names of the athletes (Swimmers, Runners, etc.) in descending order of age(100-0).

  6. The String allRunnersOrderedByNumberOfEvents() method returns a string object with of all the names of the Runners only in ascending order of number of events they participate in (0-100).

Here is the driver:

import java.util.ArrayList;
import java.util.Arrays;

public class AthleteDriver {
   public static void main(String args[]) {

       //Check Athlete Class
       Athlete a1 = new Athlete("Daffy","Duck", 2000, 9, 7,'j'); System.out.println("Gender is "+a1.getGender());//undeclared
       a1.setGender('F');
       System.out.println("Gender is "+a1.getGender());//female
       a1.setGender('m');
       System.out.println("Gender is "+a1.getGender());//male
       System.out.println("ComputeAge method says "+a1.computeAge());
       System.out.println("First name is : "+a1.getFname()); //Daffy
       System.out.println("DaysSinceBirth method says "+a1.daysSinceBirth()+" days"); System.out.println("Last name is : "+a1.getLname()); //Duck
       System.out.println("Output of our toString correct?: \n"+a1);
       System.out.println("=======================================\n");

       //Check Runner Class
       Runner r5 = new Runner("Bugs","Bunny", 2000, 9, 8, 'm',"USA");
       System.out.println("Did we add M10000 successfully?: "+r5.addEvent("M10000")); //true
       System.out.println("Did we unsucessfully try to add M10000 again?: "+r5.addEvent("m10000")); //false
       ArrayList<String> temp = new ArrayList<String>(Arrays.asList("M100", "M3000"));
   System.out.println("Did we successfully add mutiple events?: "+r5.addEvent(temp));//true
       System.out.println("Did we unsucessfully try to add mutiple events?: "+r5.addEvent(temp));//false
       System.out.println("How many events does Bugs participate in?: "+r5.getEvents().size());//3
       System.out.println("Gender is "+r5.getGender());//male
       System.out.println("Output of our toString correct?: \n"+r5);
       System.out.println("=======================================\n");

       //Check Swimmer Class
       Swimmer s1 = new Swimmer("Franklin", "Missy", 1995, 5, 10, 'F', "Colorado Stars");
       System.out.println("Did we add 100m backstoke successfully?: "+s1.addEvent("100m backstoke")); //true
       System.out.println("Did we unsucessfully try to add 100m backstoke again?: " +s1.addEvent("100M Backstoke")); //false
       temp = new ArrayList<String>(Arrays.asList( "200m backstoke","200m freestyle"));
       System.out.println("Did we successfully add mutiple events?: "+s1.addEvent(temp));//true
       System.out.println("Did we unsucessfully try to add mutiple events?: "+s1.addEvent(temp));//false
       System.out.println("How many events does s1 participate in?: "+s1.getEvents().size());//4 System.out.println("Gender is "+s1.getGender());//female
       System.out.println("Output of our toString correct?: \n"+s1);
       System.out.println("=======================================\n");

       //Check AthleteRoster
       Swimmer s2 = new Swimmer("Ruele", "Naomi", 1997, 1, 13, 'F',"Florida International University");
   //   s2.addEvent(newArrayList<String>(Arrays.asList("100m backstoke","50m backstoke","100m freestyle")));

   //   Runner r1 = new Runner("Bolt", "Usain", 1986, 8, 21, 'M',"Jamaica");
//       r1.addEvent("M100"); r1.addEvent("M200");

   //   Runner r2 = new Runner("Griffith", "Florence", 1959, 12, 21, 'F',"United States of America"); r2.addEvent("M100"); r2.addEvent("M200");
   //   r2.addEvent("M400"); r2.addEvent("M10000"); r2.addEvent("M3000");
   //   r2.addEvent("M5000");

   //   AthleteRoster ar = new AthleteRoster("Fall",2019);
   //   ar.addAthlete(a1);
   //   ar.addAthlete(s1);
   //   ar.addAthlete(r1);
   //   ar.addAthlete(r2);
   //   ar.addAthlete(s2);
   //   ar.addAthlete(r5);
   //   System.out.println(ar.allRunnersOrderedByNumberOfEvents());
       System.out.println("=======================================\n");

   //   System.out.println(ar.allAthletesOrderedByAge());
       System.out.println("=======================================\n");

   //   System.out.println(ar.allAthletesOrderedByLastName());
       System.out.println("=======================================\n");


   }

}

Complete the code before the due date. Submission of the completed eclipse project is via github link posted on the class page. Add your UML drawing to the github repo. ________________________________________________________________________ Example output:

__________Example from AthleteDriver shown below

Gender is undeclared
Gender is female
Gender is male
ComputeAge method says 19 years and 4 days
First name is : Duck

DaysSinceBirth method says 6943 days Last name is : Daffy
Output of our toString correct?:
Duck Daffy is 19 years and 4 days old =======================================

Did we add M10000 successfully?: true
Did we unsuccessfully try to add M10000 again?: false
Did we successfully add multiple events?: true
Did we unsuccessfully try to add multiple events?: false
How many events does Bugs participate in?: 3
Gender is male
Output of our toString correct?:
Bunny Bugs is 19 years and 3 days old. His is a citizen of USA and is a super athlete who participates in these events: [M10000, M100, M3000] =======================================

Solutions

Expert Solution


Assuming you have the Athlete class, the following code will work.

Runner.java
-----
import java.util.ArrayList;

public class Runner extends Athlete{
   private String country;
   private ArrayList<String> events;
   public Runner(String lName, String fName, int birthYear, int birthMonth, int birthDay, char gender, String country){
       super(lName, fName, birthYear, birthMonth, birthDay, gender);
       this.country = country;
       events = new ArrayList<String>();
   }
  
   public boolean addEvent(String singleEvent) {
       ArrayList<String> valid = new ArrayList<String>();
       valid.add("M100");
       valid.add("M200");
       valid.add("M400");
       valid.add("M3000");
       valid.add("M5000");
       valid.add("M10000");
       if(valid.contains(singleEvent) && !events.contains(singleEvent)) {
           events.add(singleEvent);
           return true;
       }
       return false;
   }
  
  
   public boolean addEvent(ArrayList<String> multiEvents) {
       boolean ret = true;
       for(String e : multiEvents)
           ret = ret & addEvent(e);
       return ret;
   }
     
   public ArrayList<String> getEvents(){
       return events;
   }
     
   public String toString() {
       String s = super.toString() + ".";
         
       if(getGender() == 'm' || getGender() == 'M')
           s += "He is a citizen of " + country + " and is a ";
       else
           s += "She is a citizen of " + country + " and is a ";
         
       if(!(events.contains("M3000") || events.contains("M5000") || events.contains("M10000")))
           s += "sprinter";
       else if(!(events.contains("M100") || events.contains("M200") || events.contains("M400")))
           s += "long-distance runner";
       else
           s += "super athlete";
         
       s += " who participates in these events: " + events;
         
       return s;
   }
     
     
}


AthleteRoster.java
-----
import java.util.ArrayList;

public class AthleteRoster {
   private String semster;
   private int year;
   private ArrayList<Athlete> athletes;
  
   public AthleteRoster(String semster, int year) {
       this.semster = semster;
       this.year = year;
       athletes = new ArrayList<Athlete>();
   }
  
  
   public String getSemster() {
       return semster;
   }


   public int getYear() {
       return year;
   }


   public boolean addAthlete(Athlete a) {
       if(!athletes.contains(a)) {
           athletes.add(a);
           return true;
       }
       return false;
   }
  
   public String allAthletesOrderedByLastName() {
       for(int i = 0; i < athletes.size(); i++) {
           int minIdx = i;
           String s1 = athletes.get(i).getLname() + " " + athletes.get(i).getFname();
          
           for(int j = i+1; j < athletes.size(); j++) {
               String s2 = athletes.get(i).getLname() + " " + athletes.get(i).getFname();
               if(s2.compareTo(s1) < 0) {
                   minIdx = j;
               }
           }
          
           if(i != minIdx) {
               //swap
               Athlete temp = athletes.get(i);
               athletes.set(i, athletes.get(minIdx));
               athletes.set(minIdx, temp);
           }
       }
      
       String s = "";
       for(Athlete a : athletes)
           s += a.getLname() + " " + a.getFname() + "\n";
       return s;
   }
  
   public String allAthletesOrderedByAge() {
       for(int i = 0; i < athletes.size(); i++) {
           int maxIdx = i;
          
           for(int j = i+1; j < athletes.size(); j++) {
               if(athletes.get(j).daysSinceBirth() > athletes.get(i).daysSinceBirth()) {
                   maxIdx = j;
               }
           }
          
           if(i != maxIdx) {
               //swap
               Athlete temp = athletes.get(i);
               athletes.set(i, athletes.get(maxIdx));
               athletes.set(maxIdx, temp);
           }
       }
      
       String s = "";
       for(Athlete a : athletes)
           s += a.getLname() + " " + a.getFname() + "\n";
       return s;
   }
  
  
   public String allRunnersOrderedByNumberOfEvents() {
       ArrayList<Runner> runners = new ArrayList<Runner>();
       for(Athlete a : athletes) {
           if(a instanceof Runner)
               runners.add((Runner)a);
       }
      
       for(int i = 0; i < runners.size(); i++) {
           int minIdx = i;
           for(int j = i+1; j < runners.size(); j++) {
               if(runners.get(j).getEvents().size() < runners.get(i).getEvents().size()) {
                   minIdx = j;
               }
           }
          
           if(i != minIdx) {
               //swap
               Runner temp = runners.get(i);
               runners.set(i, runners.get(minIdx));
               runners.set(minIdx, temp);
           }
       }
      
       String s = "";
       for(Runner a : runners)
           s += a.getLname() + " " + a.getFname() + "\n";
       return s;
   }
}


Related Solutions

**Only need the bold answered Implement the Athlete, Swimmer, Runner, and AthleteRoster classes below. Each class...
**Only need the bold answered Implement the Athlete, Swimmer, Runner, and AthleteRoster classes below. Each class must be in separate file. Draw an UML diagram with the inheritance relationship of the classes. 1. The Athlete class a. All class variables of the Athlete class must be private. b.is a class with a single constructor: Athlete(String lName, String fName, int birthYear, int birthMonth, int birthDay, char gender). All arguments of the constructor should be stored as class variables. There should only...
** Only bold needs to be answered In Java, implement the Athlete, Swimmer, Runner, and AthleteRoster...
** Only bold needs to be answered In Java, implement the Athlete, Swimmer, Runner, and AthleteRoster classes below. Each class must be in separate file. Draw an UML diagram with the inheritance relationship of the classes. 1. The Athlete class a. All class variables of the Athlete class must be private. b.is a class with a single constructor: Athlete(String lName, String fName, int birthYear, int birthMonth, int birthDay, char gender). All arguments of the constructor should be stored as class...
Using Java, write the the following code. Only the bold needs to be answered Here is...
Using Java, write the the following code. Only the bold needs to be answered Here is the driver: package assign public class A3Driver { public static void main(String[] args) { //Test GSUStudent object GSUStudentWorker gsw = new GSUStudentWorker("Bunny","Bugs", 2000, 9, 8, 9001234); gsw.setGPA(3.7); gsw.setHourlyRate(10.00); gsw.setTotalHours(30); System.out.println(gsw); GSUStudentWorker gsw2 = new GSUStudentWorker("Bunny","Betty", 1999, 9, 8, 9002413); gsw2.setGPA(4.0); gsw2.setHourlyRate(10.00); gsw2.setTotalHours(45); System.out.println(gsw2); //Test GSUStoreSupervisor GSUStoreSupervisor gss = new GSUStoreSupervisor("Duck","Daffy", 1980, 9, 8); gss.setMonthlyPay(4000); System.out.println(gss); //test GSUSuperStudent GSUSuperStudent gsuper = new GSUSuperStudent("Mouse","Minny", 1990, 9,...
(Code in Java please) You need to implement the GarageDoor, GarageDoorUpCommand and GarageDoorDownCommand classes (similar to...
(Code in Java please) You need to implement the GarageDoor, GarageDoorUpCommand and GarageDoorDownCommand classes (similar to Light, LightOnCommand and LightOffCommand), AND (edited) Implement the CeilingFan class (with state, see p. 220), AND CeilingFanHighCommand (p. 221), CeilingFanMediumCommand, CeilingFanLowCommand, CeilingFanOffCommand (WITH Undo), AND TEST your CeilingFan classes (see pp. 222 and 223), AND Finally, implement and Test the MacroCommand class on pp. 224-227 EXAMPLE output for homework assignment…………… ======= The COMMAND PATTERN ============= guest house garage door is UP guest house garage...
I need an answer only for the bold part of the question. 1. Circle: The class...
I need an answer only for the bold part of the question. 1. Circle: The class has two private instance variables: radius (of the type double) and color (of the type String). The class also has a private static variable: numOfCircles (of the type long) which at all times will keep track of the number of Circle objects that were instantiated. Construction: A constructor that constructs a circle with the given color and sets the radius to a default value...
This program focuses on programming with Java Collections classes. You will implement a module that finds...
This program focuses on programming with Java Collections classes. You will implement a module that finds a simplified Levenshtein distance between two words represented by strings. Your program will need support files LevenDistanceFinder.Java, dictionary.txt, while you will be implementing your code in the LevenDistanceFinder.java file. INSTRUCTIONS The Levenshtein distance, named for it's creator Vladimir Levenshtein, is a measure of the distance between two words. The edit distance between two strings is the minimum number of operations that are needed to...
Please I need this to be done in Java, can I have it answered by anonymous...
Please I need this to be done in Java, can I have it answered by anonymous who answered my last question regarding java? Thank you You will need to implement a specific algorithm implementation to match the class definition AND implement a unit test using JUnit that conforms the specific naming convention. Algorithm: Inputs: integers m and n , assumes m and n are >= 1 Order is not important for this algorithm Local variables integers: remainder Initialize: No initialization...
These only need to be short essay answers, I have answered a few already. This is...
These only need to be short essay answers, I have answered a few already. This is due oct. 31st at 11:59 pm ESSAY: RECEIVABLES: Define Accounts Receivable. Accounts Receivable is an account where businesses can keep track of services they have pervaded without the payment from a client. For example, hospitals would use this when journaling the action when a patient is treated without payment. Account Receivables are journaled as increasing with a debit. All of #2 essay questions follow...
Only need what is in bold. Thank you. The Gessing Tire Company manufactures racing tires for...
Only need what is in bold. Thank you. The Gessing Tire Company manufactures racing tires for bicycles. Gessing sells tires for $85 each. Gessing is planning for the next year by developing a master budget by quarters. Gessing’s balance sheet for December 31, 2018, follows: Gessing Tire Company Balance sheet December 31, 2018 Current Assets: Cash                 $    52,000 Accounts Receivable         35,000 Raw Materials Inventory      1,900 Finished Goods Inventory     2,400                          ________ Total Current Assets                 $    91,300 Property, Plant, and Equipment: Equipment...
Please create a python module named homework.py and implement the classes and methods outlined below. Below...
Please create a python module named homework.py and implement the classes and methods outlined below. Below you will find an explanation for each class and method you need to implement. When you are done please upload the file homework.py to Grader Than. Please get started as soon as possible on this assignment. This assignment has many problems, it may take you longer than normal to complete this assignment. This assignment is supposed to represent a group of students in a...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT