Overview

For this project you will implement the data manager of 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 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 and providing a gui. Keep in mind that each part has a separate deadline.

We want to remind you that you don't need to have an account in Facebook or use Facebook in order to complete this project.

Objectives

Grading

Clarifications

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

Code Distribution

The project's code distribution is available by checking out the project named FacebookJr. The code distribution provides you with the following:

Specifications

Data Manager

For this project you will implement the data manager (model component of the MVC paradigm) for a simplified version of Facebook (http://www.facebook.com). 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.

The functionality of the system you will implement is represented by the interface FacebookJrDBManager (FacebookJr Database Manager). 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 and interfaces that together provide the functionality defined by the FacebookJrDBManager interface.

Access to the data manager functionality will be possible through a class named FacebookJrDB that you must define. This class implements the FacebookJrDBManager interface. Feel free to add any instance variables and private methods to this class. Public and release tests create an instance of the FacebookJrDB 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. The system you will design deals with following entities:

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 FacebookJrDBManager interface. In addition, the class diagram for the FacebookJrDB class does not need to include the FacebookJrDBManager 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 file representing your design.

For this project you may assume that all names (e.g., persons' name, networks' name, etc.) are unique (i.e., no duplicates will occur).

GUI

The GUI you will implement represents the gui a FacebookJr system administrator will use to interact with the system. You get to decide how your GUI looks like and how it interacts with the FacebookJrDB class. When it comes to the GUI keep the following in mind:

All your GUI code must be located in the gui package. Make sure you define a class named FacebookGUI that we can use to run the GUI application.

Requirements

Honor Section Requirements

Your data manager should be able to keep track of photos associated with a person. For each photo you should keep track of the photo url, the date the photo was taken, a description and the size. Your gui should provide access to the photos associated with a person.

Web Accessibility