ip

Developer Guide

Setting Up and Getting Started

:heavy_exclamation_mark: Caution Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.

First, fork this repo, and clone the fork into your computer. If you plan to use Intellij IDEA (highly recommended):

  1. Configure the JDK:
    • Ensure you have the correct JDK version installed in your computer.
    • Open IntelliJ (if you are not in the welcome screen, click File → Close Project to close the existing project dialog first).
    • Set up the correct JDK version for Gradle.
    • Click Configure → Project Defaults → Project Structure
    • Click New… and set it to the directory of the JDK.
  2. Import the project as a Gradle project:
    • IntelliJ IDEA by default has the Gradle plugin installed. If you have disabled it, go to File → Settings → Plugins to re-enable them.
    • If your project involves GUI programming, similarly ensure the JavaFX plugin has not been disabled.
    • Click Import Project (or Open or Import in newer version of Intellij).
    • Locate the build.gradle file (not the root folder as you would do in a normal importing) and select it. Click OK.
    • If asked, choose to Open as Project (not Open as File).
    • Click OK to accept the default settings but do ensure that the selected version of Gradle JVM matches the JDK being used for the project.
    • Wait for the importing process to finish (could take a few minutes).
    • :heavy_exclamation_mark: Note: Importing a Gradle project is slightly different from importing a normal Java project.
  3. Verify the setup:
    • Run the java -jar NUS.Duke.Launcher.jar and try a few commands.

Design

Architecture

Sample - Architecture

The Architecture Diagram shown gives an overview of the high-level design.

Main has a class file named Launcher, run the main class method in Duke.java. It would perform the following functions:

The application then consists of four other components:

One example would be the Storage component which defines its API in ParseUtil.java, writeToFile() Function as well as exposes its functionality using the same class.

UI Example

UIComponent

Storage Component
Storage(Load)

StorageComponent

Storage(save)

StorageComponent

API: ParseUtil.java, writeToFile() Function

The Storage Component,

Appendix: Requirements

Product scope

Target user profile
Value proposition:

To manage all tasks faster than a typical written down method

User Stories

Priorities: High (must have) - * * *, Medium (nice to have) - * *, Low (unlikely to have) - *
Priority Version As a … I want to … So that I can …
* * * v1.0 Student remind me to buy fruits eat more healthy
* * * v1.0 Student remind me to attend school project meeting at meeting room discuss project details
* * * v1.0 Student remind me to finish school work by friday night submit assignment on time

Use Cases

(For all use cases below, the System is the NUS Expenses Tracker and the Actor is the NUS Student)

Non Functional Requirements

  1. Should work on any mainstream OS as long it has Java 11 or above installed.
  2. User will be able to interact with the systems with regular english text. For example: ( add chicken rice $4.00 2020-11-01 /C FOOD.).
  3. Will be able to handle up to 1000 expenses without noticeable slowness in performance for typical usage.
  4. User will be able to interact with their expenses.txt if they wish to make amendment.

Glossary