project-4-team4 created by GitHub Classroom
The design of the project files differ significantly from the previous assignment. The use of css and fxml file for style and UI remain the same except for slight changes in both files to reflect the requirements for project 4. The significant differece lies in our decision to create two more java files, Note.java and PairComparator.java, to prevent housing all the methods of the application solely in TuneComposer.java. The TuneComposer.java class still houses most of the previous capabalities of the previous assignment as well as all the event handling for this new assignment, "Select All" for example. However, one aspect of TuneComposer.java's design, our implementation of notes into a simple element inside a TreeMap, has been refactored by augmenting our data structure with a separate Note class that houses all the fields and methods that are associated with an instance of the Note object. Again, we tried to minimize the main and start function as much as we could by dividing the code into different methods in addition to promoting code reuse by generalizing our methods. Lastly, in response to feeback from the previous project, a few changes have been made. Some of these changes include the phasing out of the HashMap to TreeMap conversion to a pure TreeMap object that sorts items automatically as they are put into the map, the fixing of the bug where the stop button did not halt the red line, and refactoring our code to reflect desgin elegance.
One of the greatest strengths of this project was the refactoring of project 3's code to reflect some of the design philosophies mentioned in class, such as improved scalability by creating the Note class, introduction of code reusability of towards other settings (sortArrayList being one such method of ours), and attenion to extensibility through predictive code design that makes incorporation of new elements easy (the switch cases for picking instruments being an example of which). Also, we ensured that all JavaFX objects were created and designed in Scene Builder so that any future JavaFX object changes could be found in the application rather than the code.
While most of the features of the project function as intended per project 4 guidelines, there are still aspects that could be improved upon. One such limitation is the dragging and extending notes should only require a mouse press to activate but our notes require an initial step of first selecting the note. Furthermore, like the previous project, we would like to incorporate event handling as it's own class/file so that the main class TuneComposer is not only more readable, but also makes all future event "features" easily scalable. Given enough time, these limitations can be resolved.
While our team had an initial in-person meeting intended to divide work up amongst ourselves, all future meetings were pushed to online calls with pertinent (to the problem being discussed) but often not all group members attending at any given time. When there are issues with the code or design choices to be made, SMS messages were sent to every group member, allowing everyone the opportunity to read about code updates or offer their insight/solutions. This pattern of communcation was consistent all throughout the spring break and the first few weeks back on spring semester. And while all group members focused on different aspects of the project much like last time, there was more care being placed on potential conflicts (such as changing a data structure affecting the results of another person's implementations/functionalities). Estimates for the most part weren't considered (considering that spring break allowed a lot of time to finish features or fix bugs). However, with the next project, considering that each group member may be busy during some part of the development process working on other classwork, estimates may seem like an important aspect of our division of work.