20.09.2019
48024
Applications Programming Assignment 2
Topics:
OO design, GUIs, MVC Pattern, Observer Pattern
Learning Outcomes:
This assignment supports objectives 3 – 5
Due date:
October 14th 2019 – 11:59PM (Monday Week 12)
Weight:
20%
Individual Work
All work is individual. You may discuss ideas, approaches and problems, but you must write every line of code yourself except for code copied from study module sample code, lecture sample code, tutor demos or lab code.
You MUST NOT let another student see your solution code, and you MUST NOT look at another student’s solution code. Sharing your code on public forums such as the UTSOnline discussion board, or Internet forums such as stackoverflow.com is not permitted. More information about Academic Misconduct can be found at:
http://www.gsu.uts.edu.au/rules/student/section-16.html
UTS CRICOS PROVIDER CODE 00099F
20.09.2019
Skeleton Code
As a starting point for this assignment, you must use the skeleton code provided on PLATE ( https://plate.it.uts.edu.au/ ) under Assessments->Assignment 2. There are two options, a Netbeans version, which includes the structure required to import directly into Netbeans, and a plain version for other IDEs (which tend to be less rigid about their import requirements).
The skeleton code contains a file called progress.txt which you must fill in and submit with your project to PLATE as you progress on the assignment (read Submission to PLATE for further details).
Expected workload
The time to do the assignment to a distinction level (i.e. a mark between 75% to 84%) has been estimated at 25 hours for a student of average ability who has completed all the tutorial and lab exercises.
Specification
After the success of Jaime’s computer building business your other friend Guillermo is keen to get in on the action and has asked you to build him a similar piece of software to that which you provided for Jaime. Guillermo has higher requirements though, and wants a GUI – no-one types anymore, clicks are sales!
The specification is presented in several parts, being an amazing animator, Guillermo has produced a video demonstrating the functioning and appearance of the GUI interface (found on PLATE, with the other assignment 2 material). Guillermo also gives you the following screenshots (also found full size separately on PLATE):
Main Menu (20%)
The main menu opens when the program starts. It has an image (provided by Guillermo), a title, two large buttons to open the catalogue and the build respectively, and a small button to quit. The title of the window is also set by the program.
UTS CRICOS PROVIDER CODE 00099F
20.09.2019
Catalogue Window (30%)
Add Part to Catalogue Window (10%)
Allows the entry of details for a new part to be added to the catalogue.
Error When Adding to Catalogue (5%)
Pop up informing user of an error in entering the price for a new part.
The catalogue window shows the parts currently in the catalogue and allows the user to filter this list via three input fields, with accompanying title and labels (see the video for a demonstration of this functionality). It also has several buttons that allow the user to add selected parts to the build, add new parts to the catalogue, remove items from the catalogue and close the catalogue window.
UTS CRICOS PROVIDER CODE 00099F
20.09.2019
Build Window (30%)
Check Build Window (5%)
Shows the user’s current build. The total cost of the current build is displayed just below the build, along with three buttons allowing the user to check the build for basic completeness, remove unwanted parts and close the window.
Requirements
Layout
To achieve full marks, your layout must match the screenshots/video as closely as possible. You do not need to match the OS supplied window frames or widgets, but everything within the window frame is subject to assessment, along with the window title. All spacings are set at 10 in the model solution, with preferred window widths at 500 and 300.
Style
A CSS file is provided with the skeleton code. This file contains the necessary style components to make your program match the model solution. You may not necessarily need to use all the provided components.
Code
Your solution must satisfy the following code requirements:
Shows the status of the current build with respect to basic completeness.
UTS CRICOS PROVIDER CODE 00099F
20.09.2019
Your solution must employ the MVC architecture.
Your solution must keep the package structure and class names that were provided in the
skeleton code.
The models must notify the views of changes by correctly applying the JavaFX property patterns and observable lists. Model data that can change must be observable. Model data that never changes need not be observable.
The views must be laid out in FXML.
Submission to PLATE
READ THIS ENTIRE SECTION CAREFULLY
Included in the skeleton code is a file called progress.txt which you must fill out as you progress through the assignment. This file will contain lines such as these:
[?] The Main menu window is at least partially done.
[?] The Main menu window is done.
[?] The Catalogue menu window is at least partially done.
…etc…
As you make progress on your assignment, you must edit this file by changing each [?] into a [y] and then submit your progress to PLATE. Don’t forget to save this file before submitting. For example, after you get the main menu window partially done (even if you have only done a small amount), you edit this file as follows:
[y] The Main menu window is at least partially done.
[?] The Main menu window is done.
[?] The Catalogue menu window is at least partially done.
…etc…
Then you submit your project to PLATE so that there is a record of what your code looked like when you first started to make progress on your Main menu window. After you complete the Main window feature, you should again update this file as follows:
[y] The Main menu window is at least partially done.
[y] The Main menu window is done.
[?] The Catalogue menu window is at least partially done.
…etc…
Then you submit your project to PLATE again so that there is a record of what your code looked like when you completed this feature.
It is not always required that you complete a feature before moving onto the next feature. For example, your progress.txt file may read:
[y] The Main menu window is at least partially done.
[?] The Main menu window is done.
[y] The Catalogue menu window is at least partially done.
…etc…
This would indicate that you partially completed the Main menu window, then moved on to the Catalogue menu window. This is allowed, as long as you have completed at least enough of the Main menu window that will allow you to correctly open the Catalogue menu window.
Important: If you don’t submit your progress on a particular feature, then your marks for that feature won’t count! That is, you are only marked for those features where you submit evidence of your progress. Be very
UTS CRICOS PROVIDER CODE 00099F
20.09.2019
careful to always submit your progress as soon as you make progress so that you don’t lose any marks unnecessarily.
Your solution is to be submitted to PLATE at https://plate.it.uts.edu.au/ to Applications Programming / Assessments / Assignment 2. Your assignment should be submitted as a JAR file that includes:
All Java source files required to compile your assignment.
All FXML, CSS and image files required to run your assignment.
The progress.txt file at the top level of your project directory structure.
Based on your submitted progress.txt file, PLATE will calculate a mark. This mark should NOT be considered in any way as your final mark. Rather, it should be considered as a “potential” mark. On the week 12 demonstration and peer marking day, the system will try to assign you to peer mark other students who have a similar potential mark as yourself.
There is no scheduled late submission period. An extension of up to one day may be given by the subject coordinator before the due date; you have to supply documentary evidence of your claim. An extension CANNOT be given after the due date.
You may also apply for special consideration for reasons including unexpected health, family or work problems. More information about how to apply for special consideration can be found at http://www.sau.uts.edu.au/assessment/consideration.html
Online support
The Assignment 2 discussion board has been set up so that students can ask questions, and other students can reply. A tutor may post a reply only if they think the student response was wrong, or in the case of correcting a mistake in the assignment specification.
You must not post Java code to the discussion board. The board is there to help you, not to provide the solution. Posting your code is academic misconduct and will reported. Each time this rule is violated, I will delete the code and post a comment of the form: “Strike 1: Posting code”. After 3 strikes, the discussion board will be deleted because it did not work.
FAQs (Frequently Asked Questions) and their answers, if enough are asked, will be posted in the Assignment 2 forum. If you have a question, check the FAQ first, it may already be answered there. You should read the FAQ at least once before you hand in your solution, but to be safe check it every couple of days. Anything posted on the FAQ is considered to be part of the assignment specification. The FAQ will be frozen (no new entries) two days before the due date; no questions will be answered after it is frozen.
If anything about the specification is unclear or inconsistent, contact the subject coordinator who will try to make it clearer by replying to you directly and posting the common questions and answers to the FAQ. This is similar to working on the job, where you ask your client if you are unsure what has to be done, but then you write all the code to do the task. Email huan.huo@uts.edu.au to ask for any clarifications or corrections to the assignment.
Peer marking and demonstration
In your scheduled week 12 lab class you must demonstrate your assignment to your tutor and be prepared explain parts of your code to your tutor if requested. If you are unable to explain your code, it may impact your marks. Your presence is required at this class. Any student who is not present without being granted prior permission may have up to 50% of their marks for this assignment deducted.
In addition to demonstrating your assignment, you will also be assigned two other students to peer mark, and two other students will be assigned to peer mark you. The purpose of this peer marking is to mark the
UTS CRICOS PROVIDER CODE 00099F
20.09.2019
functionality of your application which cannot be tested by PLATE. Your marks for functionality will be based on these peer marks after they are moderated by the subject coordinator. Aside from marks for the functionality, the subject coordinator will also mark your code to ensure that all code requirements have been met. If the code requirements have not been met (for example, the observer pattern not used, marks will be deducted for those components). Your final mark will be a combination of marks for functionality and marks for code (See “Marking scheme”). Note that you can only be marked for features that can be demonstrated to work.
Marking the code and analyzing spoofing, cheating and plagiarism is done in the two weeks following the due date. If you are suspected of Academic Misconduct, I will forward your case to the Misconduct Committee and will notify you by email. Your mark will be finalized within 2 weeks of the due date.
Marking Scheme
The marks for the assignment are divided into the following functionality components (note that individual tests may test several functionality components, and a functionality component may be tested by several tests):
Task Mark
Main Menu 20
Image correctly displayed 1
Heading and title correct 1
Buttons correctly displayed. 3
All nodes are laid out correctly. 3
The style matches the screenshot 2
Buttons open correct windows 8
The exit button closes the entire program 2
Catalogue Menu 30
All nodes are present correctly 4
All nodes are correctly laid out, matching the screenshot 5
Table shows the correct information 4
Buttons function correctly 5
Filter heading correct 1
Filter labels correct 3
Table updates correctly using observer pattern 8
Add Part Window 10
Title is correctly present 1
Labels are correctly present 3
Text fields laid out correctly 3
Button laid out correctly 1
Button functions correctly 2
Error Window 5
UTS CRICOS PROVIDER CODE 00099F
20.09.2019
Error message correct, matching the screenshot
Button functions correctly
2
2
Text and button laid out correctly, matching the screenshot
1
Build Window
30
All nodes are present correctly
4
All nodes are correctly laid out, matching the screenshot
4
Buttons function correctly
8
The style matches the screenshot
2
Table updates correctly using the observer pattern
8
Table shows the correct information
4
Build Check Window
5
All nodes are present correctly
3
Layout matches the screenshot
1
Button functions correctly
1
This adds to a mark out of 100 and makes up 20% of your final assessment mark.
UTS CRICOS PROVIDER CODE 00099F