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
objective |
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. |
Page created in 2019 and can be freely reproduced according to the site's copyleft use agreement.