COMP 304B Object-Oriented Software Design -- Assignment 5

COMP 304B Object-Oriented Software Design - Assignment 5

 

Practical information

The assignment

In this assignment, you will continue the design and implementation of a Sudoku game. In particular, you will add the Observer Pattern (pull approach). You will also re-factor your previous design, if appropriate. You may introduce patterns of your choice.

Requirements

  1. The application will support all the functionality of Assignment 4 (i.e., undo, load/save, etc.).
  2. The application will properly allow entering and displaying numbers in any view.
  3. The application will include the generation of (random) Sudoku game boards. You will need to add a button for this. An optional sophistication is to allow the user to specify a "hardness level".
  4. When a user starts solving the board, there are two types of errors which need to be handled:

  5. The mysterious "undo until last error" from Assignment 4 refers to rolling back to the last state from which a solution can be obtained.
  6. To implement the Sodoku board generation and checking, you may use any source (as long as you mention it). An excellent starting point is David Bau's Sudoku generator.

Design

You should provide several UML diagrams:

  1. A Class Diagram of your solution. This diagram should include all components of your solution, including your GUI classes. Of course, you don't need to draw classes from libraries, such a Tkinter.
    As the overall Class Diagram will be quite large, it is suggested that you provide multiple "views", focusing on different parts of the design (in particular, on the Observer Pattern).
  2. A Sequence Diagram illustrating a concrete instance of the Observer Pattern at work. The entities in your diagram must obviously be instances of classes in your Class Diagrams.

Implementation and Testing


Hans Vangheluwe & Alexandre Denault, April 2009