Documentation Guide

  • We use MarkBind to manage documentation.
  • The docs/ folder contains the source files for the documentation website.

Style guidance:

Converting to PDF


📦 Feature: Task Management

1. Task Model

Each Person object contains a list of Task objects via composition.

  • Class: seedu.address.model.task.Task
  • Fields:
    • description: String
    • status: Enum (YET_TO_START, IN_PROGRESS, COMPLETED)
    • dueDate: LocalDateTime

2. Task Commands and Parsers

Command Command Class Parser Class
task TaskCommand TaskCommandParser
deltask DeleteTaskCommand DeleteTaskCommandParser
mark TaskStatusCommand TaskStatusCommandParser
listtasks ListMemberTasksCommand ListMemberTasksCommandParser
setduedate SetDueDateCommand SetDueDateCommandParser

3. Execution Flow

When the user inputs a command like task 1 t/Finish draft:

  1. LogicManager receives the input and calls AddressBookParser.
  2. AddressBookParser identifies it as a task command and delegates to TaskCommandParser.
  3. The parser extracts arguments and constructs a TaskCommand.
  4. LogicManager executes the command, which updates the Model and triggers a UI refresh.

4. Class Diagram

@startuml !include style.puml skinparam arrowThickness 1.1 skinparam arrowColor MODEL_COLOR skinparam classBackgroundColor MODEL_COLOR skinparam classAttributeIconSize 10 package Model <> { class Person { +tasks : List } class Task { -description : String -status : TaskStatus -dueDate : LocalDateTime } enum TaskStatus { YET_TO_START IN_PROGRESS COMPLETED } class LocalDateTime } ' Relationships Person *-- "0..*" Task Task --> TaskStatus Task --> LocalDateTime @enduml

This diagram shows the relationship between Person, Task, and TaskStatus.


5. Sequence Diagram

@startuml !include style.puml skinparam ArrowFontStyle plain Participant ":LogicManager" as logic LOGIC_COLOR Participant ":AddressBookParser" as abp LOGIC_COLOR Participant ":TaskCommandParser" as tcp LOGIC_COLOR Participant "command:TaskCommand" as tc LOGIC_COLOR Participant ":Model" as model MODEL_COLOR [-> logic : execute("task 1 t/Submit report") activate logic logic -> abp ++ : parseCommand("task 1 t/Submit report") create tcp abp -> tcp : new TaskCommandParser() abp -> tcp ++ : parse(arguments) create tc tcp -> tc ++ : index, description, status tc --> tcp -- tcp --> abp -- : TaskCommand abp --> logic -- : TaskCommand logic -> tc ++ : execute(model) tc -> model : addTaskToPerson(index, task) model --> tc -- : success tc --> logic -- : CommandResult @enduml

This diagram shows how a task command is parsed and executed from UI input through Logic and into the Model.