1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
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<AddressBook>` 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<T>`
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.
|