Reynold Lam - Project Portfolio Page
Reynold Lam - Project Portfolio Page
Overview
Hi I’m Reynold Lam, an Aspiring Computer Engineer from National University Of Singapore, and these are my contributions. I have developed a product called Big PC Partpicker(BigPP) alongside my teammates. Big PC Part picker is a CLI application that allows users to create and save their own custom PC build and a summary of my contributions to the team project Big PC Partpicker are as shown below
Summary of Contributions
Enhancements implemented:
For the enhancements implemented, I focused more on the commands for the PCViewer Menu.
Commands
add PC_NAME
- This command allows the user to add a PC of a given name to the PC List
- To accomplish this, a
ViewerAddCommand
class that extends from an abstractCommand
class is created - To ensure that the inputs are valid, exceptions are added to account for missing inputs
delete PC_INDEX
- This command allows the user to delete a PC of a given index from the PC List
- To accomplish this, a
ViewerDeleteCommand
class that extends from an abstractCommand
class is created - To ensure that the inputs are valid, exceptions are added to take care of an invalid or missing index
help
- This command allows the user to access a help menu which informs them of the valid commands in the PCViewer Menu
filter FILTER-FLAGS
- This command allows the user to filter the PC List by name, price and whether the built is complete or incomplete and also clear the filter
- Initially, to accomplish this I created 4 different classes,
ViewerFilterName
,ViewerFilterPrice
,ViewerFilterisBuilt
andViewerFilterClear
to filter based on each flag and execute the filter accordingly. However, this method only allowed the user to filter one flag at a time which meant that the user had to clear the existing filter before applying a new filter. In addition, the user was not able to edit any of the PC while a filter was on. This method was not practical as the user should be able to filter using multiple flags and also edit the PC while the filter is still on - To improve on this method, I created a single
ViewerFilterCommand
class that extends from an abstractCommand
class that is able to take in a string of inputs. In addition, the way to print the filtered list had to be taken into account and thus edits to thePCList
class were made. I created private variables in the PCList to store the arguments of the filter flags. With this in mind, methods were then created in theViewerFilterCommand
to update these private variables in the PCList. Whenever the PCList is printed, it will check if the filter is on. If it is, the filtered list is printed, otherwise the original list will be printed instead.
Contributions to the UG:
bye
command- Added a description as well as an expected outcome for better visualisation
help
command- Added a description for the two scenarios - PCViewer and PCBuilder as well as an expected outcome for better visualisation
filter FILTER_FLAGS
command- Added a description which informs the user on the types of flags that he can filter the PCList by and its expected outcome when filtering by a given input for better visualisation
Contributions to the DG:
Parser
class- Created a description to explain the use case of this class as well as a class diagram for better visualisation
ViewerAddCommand
class description and its sequence diagram- Created a description to explain the flow of how the
ViewerAddCommand
class works as well as a sequence diagram for better visualisation
- Created a description to explain the flow of how the
- Expected outcome for manual testing
- Added expected outcome for the terminal when the user types in the respective code
Contributions to team-based tasks:
For contributions to team based tasks, I was present for all the tutorials and provided relevant inputs and opinions and took turns to draw the diagrams required during the tutorials