Objective

This assignment is considered a closed assignment; make sure you read the open/closed policy before continuing working on this project.

Project Clarifications

Any clarifications or corrections associated with this project will be available at:

http://www.cs.umd.edu/class/fall2007/cmsc132/projects/p6/clarifications.html

Overview

For this project you will implement a data manager for a system that represents a simplified version of the popular social networking software Facebook (http://www.facebook.com). Facebook allows you to keep lists of friends, check their online status, e-mail them, and other tasks. In addition, you can add applications in order to customize your account. The data manager you will design will allow us to add friends, to post to a person's wall, and to complete other typical activities you can find in facebook. Keep in mind that for this project you will implement a subset of the facebook functionality.

The first part of your project consists of submitting an UML class diagram representing the design of the data manager. The second part consists of implementing your design. Keep in mind that each part has a separate deadline and there is no late deadline for the UML design.

The functionality of the system you will implement is represented by the interface FacebookJrDBManInt (FacebookJr Database Manager Interface). The interface represents the methods available to anyone trying to make use of the system. (The javadoc documentation for the project can be found at javadoc.) Your task for the design part of the project is to come up with a set of classes/interfaces that together provide the functionality defined by the FacebookJrDBManInt interface.

Access to the data manager functionality will be possible through a class named FacebookJrDBMan that you must define. This class implements the FacebookJrDBManInt interface. Feel free to add any instance variables and private methods to this class. Public and release tests create an instance of the FacebookJrDBMan class in order to test your system.

Keep in mind that your implementation must match your design, otherwise you will lose significant points. We encourage you to start working on this project as soon as possible, as there are a lot of details that can not be completely specified in this description. The earlier you start, the sooner you will get the feedback you need to complete this assignment.

Grading

Design (UML Class Diagram)

System Description

You will design a data manager system with a functionality similar to a simplified version of the Facebook data manager. The system you will design deals with following entities:

The functionality expected by your system is described in the javadoc documentation associated with the FacebookJrDBManInt interface.

For this project you get to decide what classes and/or interfaces you want to define and use. However, there is one class that you must have in your design; This class is the FacebookJrDBMan class that implements the FacebookJrDBManInt interface. This is the class through which we will test your implementation.

Your design should make use of object-oriented design concepts (e.g., generalization, specification, etc.) discussed in class. Keep in mind that having a large number of classes does not guarantee a better design grade.

Your UML class diagram does not need to include all the parameters to each method, though return types are interesting. You are encouraged to list all the class fields and their types. Your UML class diagram does not need to include the FacebookJrDBManInt interface. In addition, the class diagram for the FacebookJrDBMan class does not need to include the FacebookJrDBManInt methods.

You should use some graphic tool (e.g., AmaterasUML) to generate the UML class diagram. You will not get any extra credit for using a particular tool; just make sure you provide the pdf file we need.

Design Submission

Submit a UML class diagram by creating a pdf document named uml.pdf. In Windows environments you can create pdf files by using CutePDF Writer, a free tool available at:

http://www.cutepdf.com/Products/CutePDF/writer.asp

The deadline to submit this document is Thursday Nov 1. You can directly submit your PDF file (a Zip file is not required). Simply log into the submission server, select the "submit" link for "P6-UML Design", and enter your PDF file in the textbox next to "Browse" and hit "Submit". Double-check your submission is correct (i.e., the expected file) by downloading it from the submit server after submitting.

Implementation

Code Distribution

The project's code distribution is available by checking out the project named p6. The distribution includes text files named with a pub prefix and the following packages:

Requirements

Project Requirements

Style Requirements

Additional Information

Honor Section Requirements

No additional requirements.