This is a simple
programming-contest sort of exercise.
You "need" only two
classes.
+ a Team
�� - knows its name (a
String of at most 30 characters)
������ * This should be
passed when the Team is created;
���������� the rest of the
program should NOT call (Team new)
���������� and should NEVER
see an un#initialize-d Team instance.
�� - knows the number of matches it has
won, drawn, and lost
������ (non-negative Integers, initially
zero).
�� - can report what it knows
�� - can report the total match count and
point score
�� - can be told that it has won, drawn,
or lost another match.
��
+ a Tournament
�� - has a collection of Teams that it
knows by name
������ (a Dictionary)
�� - and an sequence, initially
undefined.
�� - can read a set of match triples
from a stream,
������ forwarding the information about
wins, draws, and losses
������ to Team instances, which are
created when a new name is found,
�� - can convert the values of the
teams collection to a
������ sorted collection that is sorted
by a somewhat vague order,
������ I chose
���������� - descending on point score,
then
���������� - descending on wins, then
���������� - ascending�� on losses, then
���������� - ascending�� on name.
�� - can write the sorted teams to a
stream in tabular form.
�� ! Has a class method that does
������ (self new) read:
<<source>>; sort; write:
<<destination>>
Frankly, formatting the output was the
hardest part.