What you are required to submit:
Your software project, in .zip form, containing:
Your project source code.
The hidden .git directory that holds the entire commit history of your project, which we will be using to verify appropriate software development lifecycle processes were followed. As noted before, the IntelliJ Export to Zip File menu option doesnot include the .git directory, so use another tool (like Send ToCompressed (zipped) folder) and make sure the created .zip file contains that directory. Turn on show hidden files if necessary.
The JavaDoc-generated documentation for your project.
The unit tests for your project.
A report (in .docx or .pdf format), containing at minimum the following:
A statement of completeness, describing what functionality your team managed to implement both the basic functionality and any applicable additional functionality (note that you must implement 1 item of additional functionality for each person in your team beyond the first.)
A statement of contribution, describing who is in your team and what each team member contributed to the project report writing, code, creation of unit tests etc.
A statement describing how your team made use of Agile software development processes. If you used test-driven development, describe this here. Otherwise, describe other relevant processes (e.g. iterative design-code-test stages).
Documentation of your software architecture, describingallthe classes that make up your project and how they interact with the other classes to bring your project together.
Documentation of how you made use of advanced object oriented programming principles in the creation of this software. Have a section for each of:
Abstraction
Encapsulation
Inheritance
Polymorphism
Documentation of how to use your software, with associated screenshots showcasing all the items of functionality.
.zip
.gitIntelliJZip.gitSend To Compressedzipped.zip
JavaDoc
.docx.pdf
1
Q&A
Are the input methods on page 11 prescribed or just suggestions? e.g. could LINE be implemented with two clicks for the start/end point instead of click+drag?
They are just suggestions. If you have better ideas, feel free to use them. I suggest using other paint programs as a basis for coming up with good ways of handing the drawing commands
Are the commands (LINE, etc.) case-sensitive?
Yes. Only the colour codes for PEN and FILL are case-insensitive.
Are extensions to the VEC format itself permitted as additional functionality? (e.g. adding a TEXT command, or allowing PEN to take transparency)
As long as existing valid VEC images are correctly supported, yes. Feel free to add more functionality (but make sure this is documented in your report.) That said, consider ways in which you might be able to add new functionality without extending the format- perhaps special tools that add multiple commands to the VEC file.
Is there a template available for the report, or do we have to write it from scratch?
There is no template, so you will have to write the report from scratch. Just follow the instructions in the specification to get an idea of what sections you need, then just type it up in your favourite word processing software (e.g. MS Word, Libreoffice, Apache OpenOffice, LaTeX etc.)
Is it okay for saved VEC files to have draw command arguments with trailing 0s, e.g. PLOT 0.500000 0.500000
Yes, this is fine.
Is there any benefit to implementing Additional Functionality when working alone?
Check the marking criteria to see how the Additional Functionality marks are calculated for individuals. In short- it cant hurt, and you can gain some extra marks by doing it, but its not necessary and you can get 100% on the assignment without doing any additional functionality. It is only mandatory for groups of 2-4.
When implementing the polygon tool, is it appropriate to use snapping to finish off the shape?
In other words, clicking on the first point of the polygon to signal that you want to finish drawing the polygon- yes, this would be a good way to do it.
Should the program automatically save as changes are done? Or should there be like a save button like paint?
There should be a save button and/or menu option.
If I close the program should it pop up notifying the user that there are unsaved changes?
Its not required by the spec but this would be a good user interface improvement.
If this assignment were to be done individually, would I use branches with source control?
There is no need to use branches, although you may find them useful. Committing everything tomasteris acceptable.
When using the draw tool, should there be some sort of preview? So like when you click on one point, it will show like a faint line that follows your cursor.
Its not required by the spec but I would definitely encourage doing something like this as it would make the software more usable (it may help shore up your marks in other categories, like GUI design
Is there any deadline/cutoff date for team formation? Just wanted to know in case my team was considering adding/removing members, and we were wondering if there is a hard deadline for this sort of action
There is no deadline for this- I will not remove access to the group join tool at any point. You can even just work on the assignment together, then all join a group together immediately before submitting.
Is there any formal procedure for removal of a teammate if our team believes they are being unproductive? Just wanted to know what the procedure is in case this happens.
There is not. Unfortunately the group join tool also doesnt allow for this. You will have to sort it out amongst yourselves and work out what you are going to do. In the case of a malicious team member joining your group against your will, feel free to submit (stating who the real team members were and who contributed what in the report) and then let us know what happened. Part of the reason we require you to use Git and submit the full Git repository is so, if needed, we can fully reconstruct the history of the assignment and learn exactly how the assignment was constructed and who deserves credit for what.
Are there any recommended resources/libraries specifically for using VEC files for this assignment?
The VEC format is custom for this assignment so nothing exists. You will find that the Graphics object you get when you override the paint() method (when extending a Swing component like JPanel) contains much of what you need, although you may need to use some of it in creative ways.
Are we required to determine if the file is formatted correctly? As in, if the vec file has something like octogon, would you expect the program to display an error message?
Technically the spec never requires this, but the marking criteria requires you demonstrate correct use of exceptions, and this would be a good opportunity to demonstrate this.
In the task sheet for assignment 2 it mentions that the we are allowed to use IntelliJs GUI designer as long as we do not add additional libraries. I just used the IntelliJ GUI designer and it created a GUI form, which makes use of the Swing library. I just wanted to confirm if it is fine to take this approach and use a GUI form?
Swing is not an additional library as it is part of the Java Development Kit. You may use IntelliJs GUI form designer.
What do we have to do when the panel isnt square and thus would have varied x and y scalings?
The images do need to be displayed with a square aspect ratio. The way this is handled in your GUI is up to you.
I recommend looking at other paint programs and seeing how they handle things- you can see that even as you resize the window and zoom in/out, the image itself usually doesnt change aspect ratio, but instead the image canvas is only shown in one part of the window and the rest might be greyed out or something similar.
Are we allowed to use the java.io library/package so that we are able save and load the drawing commands into a file?
Yes, anything thats in the JDK already is fine, including java.io. You know something isnt in the JDK because you need to start bringing external jars into your project to use them. If its in the java or javax packages its probably okay.
In the assessment task sheet it specifies that we are allowed to use AWT, Swing or JavaFX. Does this specifically mean we are only allowed to use one library out of the three or is the or supposed to mean and, meaning all three libraries are allowed to be used all at once?
Think of that or as an inclusive or, but I dont see why you would want to use more than one? (Except to the extent that Swing builds on AWT so you are sort of using them both simultaneously).
Do the coordinates in VEC files we output need to be rounded to 2 decimal places?
No.
Are we allowed to use the JavaFX scene builder?
Yes.
Reviews
There are no reviews yet.