Learning Profile for Assignment #1, And Question #4 Name: Mo Khan Student ID: 3431709 1. Problem Statement: A group of AU friends decide to run the Banff, Alberta, Marathon. Their names, times (marathon completion time in minutes), and number of years participated are given below: | id | Name | time (mins) | years | | --- | --- | --- | --- | | 1 | Elena Brandon | 341 | 1 | | 2 | Thomas Molson | 273 | 2 | | 3 | Hamilton Winn | 278 | 5 | | 4 | Suzie Sarandin | 329 | 7 | | 5 | Philip Winne | 445 | 9 | | 6 | Alex Trebok | 275 | 3 | | 7 | Emma Pivoto | 275 | 4 | | 8 | John Lenthen | 243 | 1 | | 9 | James Lean | 334 | 1 | | 10 | Jane Ostin | 412 | 1 | | 11 | Emily Car | 393 | 4 | | 12 | Daniel Hamshire | 299 | 4 | | 13 | Neda Bazdar | 343 | 3 | | 14 | Aaron Smith | 317 | 6 | | 15 | Kate Hen | 265 | 8| Extend the AddressBook class from Problem 1 to store the additional data. Now, write a method to find the fastest runner. Print the name, address, and his/her time (in minutes) on three separate lines. Find the second fastest runner. Print the name, address, his/her time (in minutes), and the difference in time with the fastest runner. Compute the average time of completion taken by these runners. Finally, print the name and number of years participated for each runner if the runner’s time of completion is equal to or better than the average time of completion. 2. Description of the Code: [Briefly describe how you solved the problem in your code. You should include short description of classes, methods, and variables (if necessary) that you used in your code.] I followed the instructions in the assignment and created a class the inherits from `AddressBook`. The sub class has a single constructor that chains to the super class constructor. I did an override of the `Comparable` interface to compare using the runners time instead of the default comparison from the base class. Java's implementation of generics doesn't allow a class to implement the same generic interface using a different type parameter. So I had to downcast the `AddressBook` to a `BanffMarathonRunner`. The `compareTo` implementation in the subclass always assums that it is being compared to another `BanffMarathonRunner`. Sorting arrays becomes very using after implementing the `Comparable` interface. 3. Errors and Warnings: ```bash モ mvn test [INFO] Scanning for projects... [INFO] [INFO] -------------------< ca.mokhan.comp268:assignment1 >-------------------- [INFO] Building assignment1 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- fmt-maven-plugin:2.8:format (default) @ assignment1 --- [INFO] Processed 46 files (0 reformatted). [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ assignment1 --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /Users/mokha/development/gh/comp-268/src/main/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ assignment1 --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Compiling 24 source files to /Users/mokha/development/gh/comp-268/target/classes [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ assignment1 --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /Users/mokha/development/gh/comp-268/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ assignment1 --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Compiling 24 source files to /Users/mokha/development/gh/comp-268/target/test-classes [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ assignment1 --- [INFO] Surefire report directory: /Users/mokha/development/gh/comp-268/target/surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running ca.mokhan.comp268.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.007 sec Running ca.mokhan.test.CandidateTest Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.05 sec Running ca.mokhan.test.NumberTest Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.024 sec Running ca.mokhan.test.EmployeeSavingsTest Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.007 sec Running ca.mokhan.test.CartesianCoordinateSystemTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Running ca.mokhan.test.CommunicationTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Running ca.mokhan.test.TaxReturnTest Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec Running ca.mokhan.test.BanffMarathonRunnerTest Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec Running ca.mokhan.test.AddressBookTest Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec Running ca.mokhan.test.TriangleTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Running ca.mokhan.test.BonusOnSavingsTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Running ca.mokhan.test.HailstoneSequenceTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec Results : Tests run: 52, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.893 s [INFO] Finished at: 2019-05-13T21:20:12-06:00 [INFO] ------------------------------------------------------------------------ ``` 4. Sample Input and Output: Tests are available in `BanffMarathonRunnerTest.java`. 5. Discussion: The implementation of `getAboveAverageRunners` assumes that `better` is less than or equal to the average time taken by all runners.