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:
LogicManager receives the input and calls AddressBookParser. AddressBookParser identifies it as a task command and delegates to TaskCommandParser. - The parser extracts arguments and constructs a
TaskCommand. 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.