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

Code Contributed

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 abstract Command 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 abstract Command 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 and ViewerFilterClear 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 abstract Command 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 the PCList 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 the ViewerFilterCommand 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
  • 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

Review/mentoring contributions:

Contributions beyond the project team: