Lab on creating and manipulating collections Goals * To create and manipulate collections (ArrayLists> * To become familiar with the API for the ArrayList class * To create and use test classes in BlueJ PLEASE NOTE: Exercises 0, 1.a and 1.b are to be completed as prelab (before the start of our lab). Be prepared to answer questions about these exercises at the beginning of lab. 0. Complete the book exercises 4.1-4.16. 1. In this exercise we will enhance the LabClass project from chapter 1. Make sure you document and thoroughly test all new functionality. a. Begin by making a copy of the LabClass project from chapter 1 in your H:/ioop/lab05 folder. b. Replace the original Student class with the improved Student class that you enhanced in prior labs. Recall that this class has private attributes to store (three integer) quiz grades, as well as public methods to access the lowest grade, the highest grade and the middle grade. c. Enhance the Student class further with an accessor for the average quiz grade. d. Enhance the Student class further with an accessor for the String "version" of a Student object. This method must have the following signature: /** * Returns the String representation of this Student * * @return the String representation of this Student */ public String toString () Please include in the return String the student's name, average grade, as well as any other information that you consider pertinent. e. Enhance the LabClass java class with a method that displays on the screen the names of all the students in a LabClass object. This method must have the following signature: /** * Displays on the screen the names of all students in this LabClass, * one per line */ public void displayStudentNames () f. Enhance the LabClass java class with a method that displays on the screen the information all the students in a LabClass object. Pedegogical note: Please use the toString method of the Student class to achieve this task. This method must have the following signature: /** * Displays on the screen the information of all students in this LabClass, */ public void displayInfoOfAllStudents () g. Enhance the LabClass java class with a method that displays on the screen the name(s) of the students in a LabClass object who have gotten a perfect quiz grade of 100. This method must have the following signature: /** * Displays on the screen the names of the students in this LabClass * who have one or more perfect quizzes */ public void displayNamesOfStudentsWithPerfectQuiz() h. Enhance the LabClass java class with a method that returns the best average grade in a LabClass object. /** * Returns the highest average grade, over all students in this LabClass * * @return the highest average grade of all students in this LabClass */ public double highestGrade () i. Enhance the LabClass java class with a method that displays on the screen the name(s) of the student(s) in a LabClass object who have the best average grade. /** * Displays the name(s) of the student(s) who have the highest average grade * in this LabClass. */ public void displayNamesOfStudentsWithHighestAverage() j. (THIS IS WHERE YOU KNOW WHETHER YOU REALLY GOT IT! Since some students go "off the deep end" on this one, ask Dr. Lobo for a sanity check on your approach before you start coding.) After completing all the previous exercises, enhance the LabClass java class with a method that returns an ArrayList with (references to) the student(s) in a LabClass object who have the best average grade. /** * Returns an ArrayList of the Student(s) who have the highest average grade * in this LabClass. * * @return an ArrayList of the Student(s) who have the highest average grade * in this LabClass. */ public ArrayList getStudentsWithHighestAverage() k. EXTRA CREDIT: Implement a toString method for the LabClass class. /** * Returns the String representation of this LabClass * * @return the String representation of this LabClass */ public String toString () // PEDAGOGICAL NOTE: a Java toString method always has this signature!