Object-Oriented Software Engineering

This is an archived version of https://www.jhu-oose.com that I (Leandro Facchinetti) developed when teaching the course in the Fall of 2019. Some of the links may be broken.

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:

A clone of Minesweeper from Windows XP.
A copyright infringement courtesy of https://codepen.io/joelbyrd/pen/hdHKF.


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.


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.


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):


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.


5 points

Point out in the code base where is the implementation for each of the server parts we discussed in the Architecture:

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.


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:

TODOOSE Custom Header


⚠️  Your assignment is submitted only when you submit the form below.


For example, jhu-oose-example-student.
Don’t include an @ sign at the beginning—this isn’t a mention.
GitHub identifiers do not start with 2019-student-.

For example, 48092726db45fd4bcde21e3712ac2d8e4a094797.
Graders will look at the code base as of this commit.
The code base as of this commit must include the filled in template at assignments/1.md.
You may find the commit identifier on the commits page at https://github.com/jhu-oose/2019-student-<identifier>/commits/master. Usually you want the most recent commit.

Anonymous Feedback on Lecture 1





Anonymous Feedback on Assignment 1





⚠️  Don’t submit this form multiple times.

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.