# 2017-2018 Design Principles
# Project 2
### Project Definition
Solve a software development problem using one (or possibly more) of the design patterns that we cover in class. **Your problem should be different from your previous project.**
### To-Do
- **Statement of Work**: Write your problem definition in detail using 100-200 words.
- **Design Pattern(s)**: Select design pattern(s) that are useful in solving the problem you defined. Explain why and how you employ such design pattern(s) in your Project.
- **UML**: Draw a detailed class diagram of your proposed solution using some UML Diagram Drawing Tool.
- **Implementation**: Implement your proposed solution based on the UML Class Diagram using the base Maven Project that you are supplied. The Maven Project produces a executable **.jar** file typing following command: `mvn clean package`. To learn more about Maven Project, you can read maven in 5 minutes. (https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html)
Your project should not expect any input from user, and it should produce decent outputs when compiled by the following command: `java -jar target\project1.jar`
You are allowed to change pom.xml to add or remove any dependency or plugin.
- You need to upload the **.pdf** file and necessary parts of your code. (Do not upload target folder and IDE-specific files)
### To-Submit
Submit (1) Statement of Work, (2) Explanation on Utilized Design Patterns, and (3) UML Class Diagram as a **single _.pdf_** file and (4) Implementation codes (without the target folder and IDE-specific files) to your github classroom repository
### Notes
Please read this document very carefully.
Submissions not complying with the **To-Do** list will be disqualified.