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 does not include the .git directory, so use another tool (like Send To Compressed (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, describing all the 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格式的软件项目,包含:
您的项目源代码。
隐藏了.git目录,它保存了项目的整个提交历史记录,我们将使用它来验证适当的软件开发生命周期过程。如前所述,IntelliJ’导出到Zip文件’菜单选项不包含.git目录,因此请使用其他工具(如Send To Compressed(zipped)文件夹)并确保创建的.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 can’t hurt, and you can gain some extra marks by doing it, but it’s 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?
It’s 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 to master is 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.
It’s 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 doesn’t 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 IntelliJ’s 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 IntelliJ’s GUI form designer.
What do we have to do when the panel isn’t 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 doesn’t 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 that’s in the JDK already is fine, including java.io. You know something isn’t in the JDK because you need to start bringing external jars into your project to use them. If it’s in the java or javax packages it’s 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 don’t 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.