From 5eb5f1ffbec272fcfea07a61155ff9ac7e43ebc3 Mon Sep 17 00:00:00 2001 From: lckjosh Date: Tue, 14 Nov 2023 00:42:13 +0800 Subject: [PATCH] Include more class diagrams --- docs/DeveloperGuide.md | 38 ++++++++++++++++++++---- docs/diagrams/ParserClassDiagram.puml | 33 +++++++++++++++++++++ docs/diagrams/SimpleClassDiagram.puml | 36 +++++++++++++++++++++++ docs/diagrams/StorageClassDiagram.puml | 11 +++++++ docs/diagrams/UiClassDiagram.puml | 39 +++++++++++++++++++++++++ docs/images/ParserClassDiagram.png | Bin 0 -> 21427 bytes docs/images/SimpleClassDiagram.png | Bin 0 -> 38579 bytes docs/images/StorageClassDiagram.png | Bin 0 -> 8734 bytes docs/images/UiClassDiagram.png | Bin 0 -> 10781 bytes 9 files changed, 152 insertions(+), 5 deletions(-) create mode 100644 docs/diagrams/ParserClassDiagram.puml create mode 100644 docs/diagrams/SimpleClassDiagram.puml create mode 100644 docs/diagrams/StorageClassDiagram.puml create mode 100644 docs/diagrams/UiClassDiagram.puml create mode 100644 docs/images/ParserClassDiagram.png create mode 100644 docs/images/SimpleClassDiagram.png create mode 100644 docs/images/StorageClassDiagram.png create mode 100644 docs/images/UiClassDiagram.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index c018e982e9..6de9dd20b5 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -84,14 +84,23 @@ The bulk of the app's work is done by the following five components: - **Storage Interaction with Data:** - The Storage component access the Data to store/read to file. +Below is a simplified class diagram of the system: + + + +### UI Component + + -**UI Component** The `ui` packages consists of the `Ui` class and the `Messages` class. -The UI component prompts and reads commands from the user and sends the command to `Parser` package to be executed. -The UI component is also responsible for printing output to the user. +The `UI` component prompts and reads commands from the user. + +The `UI` component is also responsible for printing output to the user. -**Data Component** +`TransactionList`, `Storage`, `Nuscents`, and `Command` use `Ui` to print output (including errors) to the user. + +### Data Component @@ -99,7 +108,7 @@ The Data component stores the transaction data i.e., all `Transaction` objects i Each `Transaction` object stores the information for an `Allowance` or an `Expense`. -**Command Component** +### Command Component @@ -111,6 +120,25 @@ If it is not valid, an object of class `InvalidCommand` will be constructed. The `InvalidCommand` class simply raises an exception that an invalid command has been entered, which will be shown to the user. +### Parser component + + + +The `Parser` component creates various `Command` and `Transaction` objects based on the user's input. +For example, if the user input is to add an expense, an `Expense` and `AddCommand` object will be created. + +`Parser` also uses `ExpenseCategory`, `AllowanceCategory`, and `TransactionCategory` for creating expenses, +creating allowances, and filtering transactions respectively. + +### Storage component + + + +The `Storage` component reads/writes from/to the ArrayList in `TransactionList` depending on if the application is +starting or if a command has just been executed. + +`Storage` also uses `Parser` to parse data from the storage file when the application starts up. + ## **Implementation** ### `add` Transaction Feature diff --git a/docs/diagrams/ParserClassDiagram.puml b/docs/diagrams/ParserClassDiagram.puml new file mode 100644 index 0000000000..d3a2343600 --- /dev/null +++ b/docs/diagrams/ParserClassDiagram.puml @@ -0,0 +1,33 @@ +@startuml +!import style.puml +hide members +hide circle + +enum ExpenseCategory <> +enum AllowanceCategory <> +interface TransactionCategory <> + +abstract class Command { + +abstract void execute(TransactionList) +} + + +class Parser { +} + +class Transaction { +} + +Parser ..> Command : creates +Parser ..> Transaction : creates + +Command ..> Transaction : uses + +Parser ..> TransactionCategory : uses +Parser ..> AllowanceCategory : uses +Parser ..> ExpenseCategory : uses + +ExpenseCategory ..|> TransactionCategory +AllowanceCategory ..|> TransactionCategory + +@enduml diff --git a/docs/diagrams/SimpleClassDiagram.puml b/docs/diagrams/SimpleClassDiagram.puml new file mode 100644 index 0000000000..c3ffb17cb7 --- /dev/null +++ b/docs/diagrams/SimpleClassDiagram.puml @@ -0,0 +1,36 @@ +@startuml +hide members +hide circle + +class Transaction +class Expense +class Allowance +enum ExpenseCategory <> implements TransactionCategory +enum AllowanceCategory <> implements TransactionCategory +class Storage +interface TransactionCategory <> +class Parser +class Nuscents +class TransactionList +abstract class Command + +TransactionList *-- Transaction : contains +Transaction <|-- Expense +Transaction <|-- Allowance +Transaction "*"--> "1" TransactionCategory + +Nuscents "1" --> "1" Storage +Nuscents "1" --> "1" TransactionList +Nuscents "1" ..> "1" Parser +Nuscents "1" ..> "1" Command + +Storage ..> TransactionList : uses + +Parser ..> Command : creates +Parser ..> Transaction : creates +Parser ..> TransactionCategory : uses + +Command ..> TransactionList : uses + + +@enduml \ No newline at end of file diff --git a/docs/diagrams/StorageClassDiagram.puml b/docs/diagrams/StorageClassDiagram.puml new file mode 100644 index 0000000000..dcf70f3c5f --- /dev/null +++ b/docs/diagrams/StorageClassDiagram.puml @@ -0,0 +1,11 @@ +@startuml +!import style.puml +hide members +hide circle + +Storage ..> "1" TransactionList : read/write +Storage ..> Parser : uses > + +TransactionList *-- Transaction : contains > + +@enduml diff --git a/docs/diagrams/UiClassDiagram.puml b/docs/diagrams/UiClassDiagram.puml new file mode 100644 index 0000000000..016b0ced27 --- /dev/null +++ b/docs/diagrams/UiClassDiagram.puml @@ -0,0 +1,39 @@ +@startuml +!import style.puml +hide members +hide circle +skinparam classAttributeIconSize 0 +package Ui as UI{ +class Ui { +- Scanner input ++ String getUserCommand() ++ {static} void showLine() ++ {static} void showWelcomeMessage() ++ {static} void showGoodbyeMessage() ++ {static} void showException(Exception) ++ {static} void showTransactionCount() ++ {static} void showTransactionAddedMessage(Transaction) ++ {static} void showTransactionRemovedMessage(Transaction) ++ {static} void showTransactionList(TransactionList) +- {static} String getNote(String) +- {static} String getDescription(Transaction) ++ {static} void showReadDataError() ++ {static} void showTransactionViewMessage(Transaction) ++ {static} void showFilterMessage(ArrayList,TransactionCategory) ++ {static} void showFilterNotFoundMessage(TransactionCategory) ++ {static} void showBudgetSet(TransactionList) ++ {static} void showBudgetExpense(TransactionList) ++ {static} void showHelpMenu() ++ {static} void showFileAccessErrorMessage() ++ {static} void showFatalErrorMessage() ++ {static} void showDataCorruptedError() +} +class Messages +} + +TransactionList ..> Ui +Storage ..> Ui +Nuscents --> Ui +Command ..> Ui +Ui ..> Messages +@enduml \ No newline at end of file diff --git a/docs/images/ParserClassDiagram.png b/docs/images/ParserClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..0f397a9aed5417da3c85b901e5afeec63ff0ec6e GIT binary patch literal 21427 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 E0WcrL4*&oF literal 0 HcmV?d00001 diff --git a/docs/images/SimpleClassDiagram.png b/docs/images/SimpleClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..7219cc831a88bafcd658b5a8858f6aeeba4931e8 GIT binary patch literal 38579 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 C87JBR literal 0 HcmV?d00001 diff --git a/docs/images/StorageClassDiagram.png b/docs/images/StorageClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..87173b051ec8cec32a32c710d4e0231715509455 GIT binary patch literal 8734 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