Assignment 1: Design Rudiments
Working on the Assignment
Class Diagram
Submit your assignment as a Markdown document at assignments/1.md
in the master
branch of your personal repository at https://github.com/jhu-oose/2019-student-<identifier>
.
Before the Internet, one of the most interesting things you could do on a computer was playing Minesweeper. Remember the old times:
Diagram
65 points
Draw a high-level class diagram to communicate the logic of Minesweeper.
Include new games, different board sizes, flags (which you can test by right clicking), the flag counter (top left), marks (?
) (which you can test by right clicking twice), mines, tiles that are open or closed, the timer (top right), opening tiles, creating a new game, wining the game, losing the game, and everything else you find the game.
Don’t include things like controllers, repositories, a server and so forth. Your diagram could be implemented as a web server, as a desktop application, as a mobile application, and so forth.
Implementation
15 points
Implement in Java at least two classes from the diagram you drew above. These classes must share some form of relationship (dependence, association, whole-part, inheritance, and so forth).
Your implementation must include the details that you omitted in the class diagram, for example, identifiers, getters and setters, the actual implementation of the methods, and so forth.
It’s okay if your code doesn’t compile because it depends on other parts of the application that you aren’t implementing in this exercise.
Architecture
10 points
An HTTP request arrives at the TODOOSE server asking for the list of items (see the Get TODO items
request in Postman). Several parts of the server will be activated to respond to this request. Put the parts in the order in which they’ll be activated (that is, trace the request through the server):
- Model.
- View (JSON Mapper).
- Router.
- Repository.
- Controller.
Technology
Continue watching the TODOOSE video series. We’re three weeks away from diving deep into the implementation, and by then you’ll have to know the basics.
Server
5 points
Point out in the code base where is the implementation for each of the server parts we discussed in the Architecture:
- Model.
- View (JSON Mapper).
- Router.
- Repository.
- Controller.
Your answer must be a range of lines of code, for example, if asked about where in the implementation the server connects to the database, you’d answer with todoose/src/main/java/com/jhuoose/todoose/Server.java:15-15
.
Client
5 points
Which lines of code would you have to modify in the client part of TODOOSE so that it displays your name in the header? For example, if your name were JHU OOSE Example Student
, then TODOOSE would look like this:
Submission
⚠️ Your assignment is submitted only when you submit the form below.
If you run into problems, send an email to assignment-submission@jhu-oose.com. Include the information about the submission: your GitHub Identifier and the Commit Identifier. Don’t include any information about the feedback—it’s anonymous.