(This is worth 30% of the total marks available for the present exercise.)
Download the files [url removed, login to view], [url removed, login to view],
[url removed, login to view] and [url removed, login to view] from Blackboard. A
listing of these files is included in the present coursework specification for your convenience.
The purpose of the program is to play either a card game or a die-rolling game. In the card
game, two cards are selected and the player wins if at least one of them is an Ace. In the dierolling
game, the die is rolled twice and the player wins if at least one of the die roll numbers
is a one.
This program will not work because [url removed, login to view] is expecting a
LinearCongruentialGenerator defined differently from the way it is defined in the
i) “Fix” this problem by renaming methods as necessary.
ii) “Fix” this problem in a different way, by applying the Adapter design pattern (leaving
[url removed, login to view] completely unchanged).
iii) Briefly discuss the pros and cons of the two above approaches to solving this
(This is worth 70% of the total marks available for the present exercise.)
i) This program is deliberately inelegant. Write a critique of the program.
ii) Modify the program resulting from Question 1(ii) above in order to improve its
elegance. In particular, your modified program should:
● Handle error conditions more appropriately
● Show evidence of your having applied principles relating to concepts such as
coupling and cohesion
● Implement suitable die-rolling and card-selecting classes
● Separate out the two game implementations. (You may wish to find and apply the
Factory pattern, or a related pattern, in order to achieve this.1)
● Include brief comments explaining the code
iii) Briefly summarise each of the changes which you have made in answering this
question and the reasons you made them.