Q6. [17 Marks] As in DiceJavaFX/solution2
 a. DiceModel:

        O: +1 Dice Model extends Observable
        S: +1 in roll: setChanged()
        N: +1 in roll: notifyObservers()

        Max 2/3 if all of the above concepts are there, but not in correct
        places.

        Max 1/3 if some notion of observable present

 b. DiceController:

        M: +1 Controller holds onto model
        A: +1 implements EventHandler<ActionEvent> (.5 extends EventHandler<ActionEvent>)
        AP: +1 public void handle(ActionEvent event)
        MR: +1 model.roll();
        S: 0 (simple) controller does not interact or hold onto view

 c. DiceView

        O: +1 Implements Observer
        C: +1 holds onto controller, for example, via constructor
        G: 0 Builds gui
        U: +1 Update method present
        U: +1 Update correctly implemented (get dice value and set text fields)

 d. DiceApplication

        M: +2 Construct instance of Model, View and Controller
        C: +1 DiceController controller = new DiceController(model);
              1 mark for hookup, DiceController holds onto DiceModel
        H: +1 model.addObserver(view);
              1 mark for model holding onto view

 e. Separation of Concerns

        SC: +2
