For Project 3, you and your team will develop a GUI application using Java and JavaFX. The key areas of attention for this project will be:
The schedule for this project is pretty compressed; you really only have two weeks to complete it. You should spend the first half of 9th week designing, the second half writing your tests and preliminary implementation, the first half of tenth week getting feedback, and then the last days of the term finalizing your project. There are only three phases:
Let me reiterate: you've only got two weeks! So aim for a project that you can complete in the time that you have. It's way better to write a finished and polished version of a small thing to have a half-broken version of something big and ambitious. The grading will reflect this perspective.
Almost any GUI program can be organized successfully around MVC. However, one of my main goals for this project is to give you a non-trivial experience with MVC. With that in mind (but also remembering the deadline of June 8th), I want your program to have a Model that is at least complex enough to warrant at least two distinct major features in the View.
One way to start thinking about your idea's Model is to ask a couple questions: “What are the main things in my program that could be made into Java classes or interfaces, and then aggregated in my Model?” Or alternatively, “Of what information does the current state of my program consist while it's running?”
You're free to build whatever kind of desktop GUI application you'd like, so long as it meets the expectations of sophistication and organization laid out here. On a separate page, I have some examples of programs that might fit the bill, along with descriptions of how to think about their Models and Views.
Create a PDF similar to the one that your created for Project 2 in Phase 2 and Phase 4. Your design document should include the following:
Software architecture diagram. This doesn't have to be as detailed as the one for Project 2; just show the large software components (classes and major methods) and how they interact.
Clearly designate which components are part of the Model, which are part of the View, and which are part of the Controller. Remember that an MVC application doesn't need to have a class called “Model” and another called “View”; instead, these are just conceptual categories that may or may not be appropriate to concretely represent with corresponding classes.
Take cues from the diagrams in the “Head-First Design Patterns” book for how to depict inheritance and composition. If you need to split your diagram into several pieces, or to show one diagram for composition/inheritance and another for data interactions, that's all fine.
Make a repository for your group to share, and share it with me and the graders.
Push your PDF (and the source document for it, particularly if you write it using LaTeX) to your repository, tagging your commit with phase_3_1
.