object-oriented java 2 home > final project specs

CIT-244 Final project specification: System Design

The goal of the CIT-244 project is to model the existence of a physical system in Java using object hierarchies, interfaces to specify behaviors, and appropriate design patterns.

Check out this sample system diagramming primer based on your instructor's water catchment system:

bookProject specification


Create a culminating project in the Java language that demonstrates solid object-oriented design and system-based thinking. Document the project such that a future CIT-240 student can continue developing your system.

define system characteristics, high-level I/O relationships, and class diagrams

Create a system diagram of the components of your respective system and its various sub-components. Include input/output flows of each sub-component.

Create class diagrams for your subcomponents using standard UML notation for interface/implementer relationships.

specify interfaces for sub-components

Create a set of interfaces which specify the behaviors of each of your sub-components. Each sub-component should have clearly defined input and output types with Java documentation about its purpose in the overall system.

create high-level system object container

Create a class to represent the entire high-level system object, such as a WaterCatchmentSystem. Create appropriate data structures for storing the sub-components, such as a LinkedList or simple member variables of appropriate types.

create high-level system object container

Design a client class of your system that demonstrates the functionality of your overall system. You can use calls to println within your overall system class methods and sub-components to show how and what they are doing.

implement system modes with Enum instances

Design a structure within your System such that its components function differently with one another based on changing a particular mode. Create an Enum that enumerates the various modes in which your system operates, such as Mode.purge, or Mode.collect. Pass an instance of your Mode enum into a method you create called setMode(Mode m). Demonstrate that your system behaves differently when the master mode is set.

cope with failure using custom exceptions

Extend class Exception in order to create your very own Exception objects that convey that some component of your system is not working properly. Such as a FeederTankEmpty exception in the water system example which gets thrown if an attempt is made to consume water when the feeder tank is empty.

Implement try/catch blocks and throws clauses in your sub-systems to properly handle these circumstances.

document your code for future generations

Use javadoc style comments for explaining your classes and methods.

Push your code to a git remote server such that others can access your work. Create a markdown file explaining your system, and include images of your system diagram in in your markdown documentation.

arrow_upward top

Page created in 2019 and can be freely reproduced according to the site's copyleft use agreement.