Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CS2113T-T10-1] SplitLah #8

Open
wants to merge 2,719 commits into
base: master
Choose a base branch
from

Conversation

froststein
Copy link

SplitLah is an application for keeping track of expenses during group outing sessions, specifically for those who are cautious about their finance. It then proceeds to split the expenses according to the group members' individual costs for the activities they participated in, for a particular session, via a Command Line Interface(CLI).

Copy link

@BradenTeo BradenTeo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall, I think many diagrams can be simplified and resized to be bigger so that they are visible in PDF form.


## Design
### Architecture
![Application Diagram Screenshot](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/ArchitectureDiagram.drawio.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps you could label the person and the file icons on the left and right.
image

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the arrow from manager to textUi correct? Cause the TextUi invokes an instance the manager

* Defines how a command is executed.

**Interaction between components**
![Component Interaction Screenshot](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/ComponentInteraction.drawio.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it might be confusing for the user to see 2 instances of the :SplitLah class here. You could label or explain what do each of them represent. Maybe it's possible to remove one for better comprehendability.
image

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall, I think the diagram looks quite small on the website. Perhaps can consider prioritising comprehensibility over being comprehensive.

class would return a unique identifier every time a new `Session`, `Activity` or `Group` is created.

### TextUI Component
![TextUI Component Screenshot](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/TextUI%20Component.drawio.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The picture here cannot be seen.
image

Copy link

@laiisaac laiisaac left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Developer guide is generally well done, with comprehensive and correct diagrams to supplement text explanations

* [Storage Component](#storage-component)
* [Parser Component](#parser-component)
* [Command Component](#command-component)
* Implementation

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent formatting: I think there's a missing a hyperlink to the Implementation section

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might want to use numbers instead of bullet points given the comprehensive nature of your guide which makes very hard to follow through


## Design
### Architecture
![Application Diagram Screenshot](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/ArchitectureDiagram.drawio.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the sequence diagram too detailed? It is hard to see what is being written in the diagram unless it is zoomed into.
What I see at default zoom level:
image

Perhaps you can consider splitting it up into different parts (e.g. 1 diagram for loading the file, 1 diagram for processing user input).

class would return a unique identifier every time a new `Session`, `Activity` or `Group` is created.

### TextUI Component
![TextUI Component Screenshot](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/TextUI%20Component.drawio.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot for TextUI component does not load:
image

Comment on lines +140 to +150
1. After a `XYZCommand` object is created by the [`Parser` Component](#parser-component),
it is passed back to the `SplitLah` object to be run.
* In the above process, all necessary information for the execution of the command is passed to and
saved by the `XYZCommand` constructor.
2. Then, `XYZCommand#run` is executed by `SplitLah`. `XYZCommand#run` carries out the task
that `XYZCommand` is designed to do.
* In general, for _data related commands_, `SessionJKLCommand`, `ActivityJKLCommand` and `GroupJKLCommand`
obtains the relevant `Session`, `Activity` and `Group` objects before operating upon them with relevant methods.
* On the other hand, for _utility commands_, `UtilityCommand` works with and uses methods from the `TextUI` component
to print messages and carry out their tasks.
* The inner workings of each of the `XYZCommand` classes can be seen in greater detail under the [Implementation section](#implementation).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good job on the formatting as well as clarification on certain ambiguous terms used, makes it very readable for the reader

Comment on lines 185 to 189
![Reference Frame Command Parser Sequence Diagram](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/RefCommandParser.drawio.png)

## Design & implementation
![Reference Frame ParseABC Sequence Diagram](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/RefParseABC.drawio.png)

{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.}
![Reference Frame InvalidCommand Instantiation Sequence Diagram](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/RefInvalidCommand.drawio.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Diagrams provided are not explicitly linked to text explaining it. Perhaps you can consider explaining each diagram with text right below the diagram, or name the diagrams and refer to them explicitly when explaining the respective process in text.

and finally back to `SplitLah` to be run.

### Add a session
**API reference:** [`SessionCreateCommand.java`](https://github.com/AY2122S2-CS2113T-T10-1/tp/blob/master/src/main/java/seedu/splitlah/command/SessionCreateCommand.java)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like that you've coloured classes and objects according to their role:
image
image
However, some diagrams such as this one does not follow the same formatting:
image
Perhaps the document would be more cohesive with consistent formatting.

Copy link

@cczhouqi cczhouqi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very detailed developer guide. Diagrams are well-designed and clear explanation is given.👍🏻

when the user invokes the `activity /list` command.
<br>
<br>
![List Activity Sequence Diagram Screenshot](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/ActivityListCommand.drawio.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This screenshot is also not shown.
Screen Shot 2022-03-31 at 11 11 37 AM

2. Else, the `Profile` objects instantiates a new `TableFormatter` object and loops through the list of groups,
calling `TableFormatter#addRow` for each group to create a table with the summary of each group. A `String` object
representing the table is then returned.
6. The `String` object retrieved is printed out with `TextUI#printlnMessage`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The diagrams and descriptions are detailed and clear. Good job!👍🏻👍🏻

Copy link

@ibrahimisramos ibrahimisramos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job team!

* [Storage Component](#storage-component)
* [Parser Component](#parser-component)
* [Command Component](#command-component)
* Implementation

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might want to use numbers instead of bullet points given the comprehensive nature of your guide which makes very hard to follow through


## Design
### Architecture
![Application Diagram Screenshot](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/ArchitectureDiagram.drawio.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the arrow from manager to textUi correct? Cause the TextUi invokes an instance the manager

10. Finally, with the `TextUI` object, the method `printlnMessageWithDivider` is called to print the message
obtained from the `SessionSummaryCommand#processAllTransactions` method.

### Add an activity

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do remember to include them once they are done!

| v1.0 | Budget conscious user | list all existing sessions | view all sessions previously created |
| v1.0 | Budget conscious user | list all activities in a session | view all the activities that happened in the session |
| v1.0 | Budget conscious user | settle all transactions of a session | see a summary of who needs to pay what amount to who for the entire session |
| v1.0 | User | exit the application | stop tracking |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do add in v2.0 and can consider having a separate table for each user type or sort them by different types of user


{Give non-functional requirements}
1. The application should be able to work in any operating systems with `Java 11` installed.
2.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise good job! Very detailed but might be a bit too detailed

@@ -1,38 +1,416 @@
# Developer Guide

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps the Developer Guide could start off with a quick introduction to what your product is about.


### TextUI Component
![TextUI Component Screenshot](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/TextUI%20Component.drawio.png)
<br>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The screenshot is not displayed in the Developer Guide webpage.
TextUi Component

I will assume that the screenshot is a diagram that explain how the TextUI can be changed without affecting the rest of the program.


### Parser Component
![Parser Component Screenshot](https://raw.githubusercontent.com/AY2122s2-cs2113t-t10-1/tp/master/docs/images/developerguide/ParserComponent.drawio.png)
<br>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps the PaserUtils could be changed to a static class
PaserUtil

The general workflow of the `Parser` component is as follows:
1. When required to parse for a command, the running `SplitLah` object passes a `String` object containing
the user input to `Parser` class.
2. `Parser` class instantiates a new `XYZCommandParser` object corresponding to the user input

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the XYZCommandParser referring to the chunk of code below?
XYZCommandParser

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants