-
Notifications
You must be signed in to change notification settings - Fork 231
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
[CS2113-F15-2] LifeTrack #56
base: master
Are you sure you want to change the base?
Changes from 250 commits
d4fafcc
ef8423e
cc39b61
1ded088
0b72d55
68d0506
a222d2f
b5e4ad1
1dea31d
bf03485
bf6694a
f03e1b1
7e03d88
9f7ca65
dbc21be
4f361a1
811edf9
1ad1671
48a1481
ab48238
f58d19b
76cb220
0e6b820
0984ed3
627b1bc
5bd0117
5dcdc8c
5a41231
932b130
b1dd2f5
dfd8fd3
110816b
791b914
5ac8580
c8ea368
a527255
977c71b
59ba782
6f876f7
cabb74f
c247d6f
c87fb52
67f31d8
1bd6a46
f70dc8d
31695ea
c06a64b
ed9c89a
0dc9fea
6b57ca8
711a4f8
67e86b9
993d05e
3e89b43
d05a36a
b4dfbef
59f762f
f3c43f9
cbd853d
2910db3
a806653
f4133d3
347657c
d3c7059
2f4ac09
979c7f4
4bb87a3
fd7b4d6
87d5cbc
b86a012
3a94937
88369eb
6122fa6
0535ac5
2964fe7
c0bccd8
40b5a48
a248175
5117f97
c2258fd
2b4e01a
f0694e1
e1b31bb
1bf088c
0e3183f
131dc11
81a2ee4
0753a9e
a862a27
9b72041
d4ce2c9
2921f8a
77978d4
9494fca
87d0157
f8b53ee
87e31be
fd81ec2
990b69c
095f015
3910203
01c7179
e4f279c
2bf5c83
f00c4f4
063338e
a0a760b
f5ca8dd
54a31ad
54e3c3c
002780e
d104065
9daf00e
bc13d60
f525d5f
2529e3a
26bd980
65d847f
31d68a2
40f0d84
03c3467
94ee294
fe7c99d
44e9d17
2cb2a86
ea97182
ff589e0
d148c6c
93b96a5
26ec35f
c30350a
923a218
0a7f927
23ada8a
c615436
a363df6
0ba5aa1
e8f7144
3df1002
7a25681
2f5db32
b9ee244
5594bf1
4e86e6c
12f1acf
f09ca09
fbb92cb
a69c85b
50b2b41
a391473
cf891bf
ff63e49
63c02f8
1cf293e
ef515f1
0c96dc6
6cd0a59
9ed70b4
4f38ca7
a042b2c
8527327
7699907
b48ef6a
bb46612
787bac8
22fe050
faf80db
92502ec
35ae179
5318e27
f1c7b3f
c50fbcd
c57d668
0b4fab4
c64c206
79232a3
6f3f0cb
28b6784
d19b985
aa45daf
323cebc
c4ecbf5
4325a96
7db60eb
28071f6
c82b926
6a6cc75
ae0da3c
60c60f5
668f6e9
c0fdf5d
09e5c81
3664a91
50e1fd7
607e1e5
df80dd9
6a95bf5
3f4548e
4d6166c
d7f5300
ed58715
217db05
bd8e24e
25a72ec
9a1aded
4ccc26d
29075fb
5a48435
f37c23b
457148a
a65cf4b
b3c034b
60f313d
bebb335
64e1a34
fdf72c7
63e4873
1f59332
1037844
9f25c8e
57039ef
fa447fe
7d25c2b
555dbe3
5da3ea8
4f4a678
954285e
86ac728
465733e
25f3db9
8e33e25
98cac59
92e3293
e1af075
651e3a7
db7c543
cec1c17
01d8e44
641cb6f
8d6275f
075a77d
3a49f98
f81ddf3
5dc3bfe
f0837cd
757e59b
2d0cecc
a1da17a
377c18e
981b0aa
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,3 +15,5 @@ bin/ | |
|
||
/text-ui-test/ACTUAL.TXT | ||
text-ui-test/EXPECTED-UNIX.TXT | ||
|
||
data/* |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
Manifest-Version: 1.0 | ||
Main-Class: seedu.lifetrack.LifeTrack | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,8 @@ | ||
# About us | ||
|
||
Display | Name | Github Profile | Portfolio | ||
--------|:----:|:--------------:|:---------: | ||
 | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
Display | Name | Github Profile | Portfolio | ||
--------|:--------------:|:------------------------------------------:|:---------: | ||
 | Paturi Karthik | [Github](https://github.com/paturikarthik) | [Portfolio](docs/team/paturikarthik.md) | ||
 | Shawn Pong | [Github](https://github.com/shawnpong) | [Portfolio](docs/team/shawnpong.md) | ||
 | Rex Yong Jin Xiang | [Github](https://github.com/rexyyong) | [Portfolio](docs/team/johndoe.md) | ||
 | Yanyu | [Github](https://github.com/a-wild-chocolate/) | [Portfolio](docs/team/johndoe.md) |
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is it possible to make the bar thicker, it's kinda hard to distinguish the bars when classes are calling multiple functions inside the class. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
@startuml | ||
actor Bob | ||
Bob -> UI: Input "calories in" or "calories out" command | ||
activate UI | ||
|
||
UI -> UI: handleUserInput() | ||
activate UI | ||
|
||
UI -> UI: handleCaloriesInput() | ||
activate UI | ||
|
||
UI -> CalorieList: addEntry() | ||
activate CalorieList | ||
|
||
CalorieList -> ParserCalories: parseCaloriesInput() | ||
activate ParserCalories | ||
return entry | ||
|
||
CalorieList -> CalorieList: calorieArrayList.add(entry) | ||
activate CalorieList | ||
return | ||
|
||
CalorieList -> CalorieList: updateFile() | ||
activate CalorieList | ||
return | ||
|
||
return | ||
return | ||
return | ||
return | ||
|
||
@enduml |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
@startuml | ||
|
||
class LifeTrack { | ||
+ main(args: String[]): void | ||
} | ||
|
||
package ui { | ||
class Ui { | ||
+ readUserInput(calorieList: calories.CalorieList, hydrationList: hydration.HydrationList, user: user.User, sleepList: sleep.SleepList): void | ||
+ handleCaloriesInput(line: String, calorieList: calories.CalorieList): void | ||
} | ||
} | ||
|
||
package calories { | ||
package calorielist { | ||
class CalorieList { | ||
- ArrayList<Entry> calorieArrayList | ||
+ printCalorieList(): void | ||
} | ||
|
||
class CalorieListUi { | ||
+ calorieListHeader(): void | ||
+ emptyListMessage(): void | ||
} | ||
} | ||
} | ||
|
||
|
||
|
||
LifeTrack --> calories.calorielist.CalorieList | ||
LifeTrack -[dotted]-> ui.Ui | ||
ui.Ui -[dotted]-> calories.calorielist.CalorieList | ||
CalorieList -[dotted]-> CalorieListUi | ||
|
||
@enduml | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
@startuml | ||
actor Bob | ||
|
||
Bob -> UI: Input "calories list" command | ||
activate UI | ||
|
||
UI -> UI: handleUserInput(input, calorieList, .....) | ||
activate UI | ||
|
||
UI -> UI: handleCaloriesInput(input, calorieList, .....) | ||
activate UI | ||
|
||
UI -> CalorieList: printCalorieList() | ||
activate CalorieList | ||
|
||
loop calorieArrayList.size() | ||
CalorieList -> CalorieList : calorieArrayList.get(i) | ||
activate CalorieList | ||
end | ||
|
||
return | ||
return | ||
return | ||
return | ||
return | ||
|
||
@enduml |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,9 +5,147 @@ | |
{list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should be at the bottom; and it is not complete |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider adding in a Table of Contents There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For all your images, save it as a proper file inside your docs folder. Avoid copy pasting and letting Github render from blobs. This will help in version control as well. |
||
## Design & implementation | ||
### Adding calorie entries feature | ||
|
||
{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} | ||
#### Implementation | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good that you zoomed into implementation via the header. What happened to the Design part? |
||
|
||
This functionality is facilitated by `UI`, `CalorieList`, `FileHandler` and `ParserCalories`. It implements one operation, namely: | ||
- `UI#handleCaloriesInput(String, CalorieList)` | ||
- `CalorieList#addEntry(String)` | ||
- `ParserCalories#parseCaloriesInput(String)` | ||
- `FileHandler#updateFile()` | ||
|
||
This feature is activated when the user inputs a `calories in` or `calories out` command in the terminal. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Very detailed step descriptions. |
||
|
||
Given below is an example usage scenario and how this mechanism behaves at every step: | ||
|
||
- Step 1: When the user inputs the command `calories in burger c/200 d/2024-02-02` in the terminal, | ||
the string is sent to `UI#handleCaloriesInput(String, CalorieList)`, which calls `CalorieList#addEntry(String)`. | ||
|
||
- Step 2: Inside `CalorieList#addEntry(String)`, the function `ParserCalories#parseCaloriesInput(String)` is then called to extract information such as the description, number of calories, and date of entry. | ||
|
||
- Step 3: The obtained information is sent to the private method `ParserCalories#makeNewInputEntry(String, int, String)` to create a new entry of class `InputEntry` that extends `Entry`. An `Entry` object is then returned to the caller, `CalorieList#addEntry(String)`. | ||
|
||
- Step 4: The returned `Entry` object is added into the `calorieArrayList` member of type `ArrayList<Entry>` in the `CalorieList`, via the `ArrayList.add()` method. | ||
|
||
- Step 5: `FileHandler#updateFile()` is then called to update the data file with the new entry in the `CalorieList`. | ||
|
||
The sequence diagram for this feature is shown below: | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There appears to be some self-called methods in ParserCalories#parseCaloriesInput() such as checkKeyWordExists(), checkKeywordsCorrectlyOrdered() etc. Would it be better to include these self called methods into the diagram? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As a peer mentioned, you are missing the colon. |
||
|
||
### Calculating calorie requirements based on a user`s goals | ||
|
||
#### Implementation | ||
|
||
This functionality is facilitated by `UserGoals`. It implements one operation, namely: | ||
- `UserGoals#getHealthInfo(User)` | ||
|
||
This operation is exposed in the `User` class as `User#getHealhInfo()`. | ||
|
||
Given below is an example usage scenario and how this mechanism behaves at every step: | ||
- Step 1: When the user inputs the command `user progress` in the terminal, | ||
the string is sent to `User#getHealthInfo()`, which calls `UserGoals#getHealthInfo(User)`. | ||
|
||
- Step 2: The method retrieves the user`s information such as his height, weight, age, gender, exercise levels and intended goal. | ||
|
||
- Step 3: Using these information, the method creates a `requestBody` `String`. | ||
|
||
- Step 4: The created `requestBody` is used to send a `HttpRequest` to RapidAPI`s Fitness API, and the response is parsed to determine the number of calories a user needs to consume according to their personal goals. | ||
|
||
- Step 5: This value is set to `User.caloriesRequired` by `User#setCaloriesRequired(int)`. | ||
|
||
#### Design considerations | ||
|
||
- **Alternative 1 (current choice):** Uses an API to get the calories needed | ||
- Pros: No need to figure out the optimal algorithm | ||
- Cons: Need to parse response to sieve out necessary information | ||
|
||
- **Alternative 2:** Uses an algorithm to find the number of calories needed | ||
- Pros: Not dependent on external APIs | ||
- Cons: Need to come up with an algorithm to use | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great indication of other design considerations. The implementation for this feature is clearly stated and easy to follow. Would it be better to also include a sequence diagram to trace the code? |
||
|
||
### Calories list feature | ||
|
||
The `calories list` feature lists out the record of all the Calories data that the user has keyed in. The Calories data are all stored into a `ArrayList<Entry> calorieArrayList` attribute of the `CalorieList` Class. Calories data are printed when the `printCalorieList()` function is called. | ||
|
||
The `printCalorieList()` function iterates through the `calorieArrayList` and prints out the Entries according to its order in the Array List. | ||
|
||
The Class diagram and sequence diagram for Calories list feature is shown below. Unrelated attributes and Classes were excluded. | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could use these proper symbols for representing public/private classes instead of squares
: protected~ : package private There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good job on using a Class Diagram here. It serves a good purpose for this feature. However, the notation regarding the calories and calorieslist does not seem to be a notation used in CS2113T. Would it be better to use the association lines instead? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The class diagram notation has issues as your peers pointed out. |
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
### Calories delete feature | ||
|
||
The `calories delete` feature can delete the calories record at specific index of calorie list. This functionality is facilitated by `CaloriesList`. It implements one operation, namely: | ||
- `deleteEntry(String line)` | ||
|
||
Given below is an example usage scenario and how this mechanism behaves at every step: | ||
- Step 1: When the user inputs the command `calories delete INDEX` in the terminal, the string is sent to `Ui#handleUserInput()`, which will call `Ui#handleCaloriesInput()`. | ||
|
||
- Step 2: After the `Ui#handleCaloriesInput()` matching `delete calories` key word, the string will be passed into deleteEntry(String line) to execute delete process. | ||
|
||
- Step 3: The string will be divided to two substrings according to the command syntax. Index will be tried to get from the second substring by `Integer.parseInt()`. | ||
|
||
- Step 4: The calories record (`Entry`) stored in the `ArrayList<Entry> caloriesList` will be deleted by calling `calorieArrayList.remove((index-1));` and a successful deleting message will be shown in terminal by calling `CalorieListUi#successfulDeletedMessage(toDelete)` | ||
|
||
- Step 5: The latest calories list will be updated to saving file by calling `CalorieList#updateFile()`. | ||
|
||
The Class diagram for Calories delete feature is shown below: | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Diagram has formatting issues and does not show up as a picture There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This diagram does not show. It doesn't seem to appear in the docs package as well. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The diagram does not seem to appear correctly in the Developer Guide. Would it be better to update the link to a relative path in the code, e.g. "caloriesDeleteUML.jpg" instead of the github link? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Standardize what tools you all use for Class and UML diagrams. Multiple syntax issues here: the diagram notation is not as per what the course has taught. For example, your association labels should not be |
||
|
||
### Parsing user input for hydration entries | ||
|
||
This functionality is facilitated by `ParserHydration`. It implements one operation, namely: | ||
- `ParserHydration#parseHydrationInput(String input)` | ||
|
||
This operation is exposed in the `HydrationList` class as `HydrationList#addEntry(String)`. | ||
|
||
Given below is an example usage scenario and how this mechanism behaves at every step: | ||
- Step 1: When the user inputs the command `hydration in Milo v/100 d/2022-01-02` in the terminal, | ||
the string is sent to `HydrationList#addEntry(String)`, which calls `ParserHydration#parseHydrationInput(String)`. | ||
|
||
- Step 2: Using `String.split()`, the method extracts information such as the description, volume of beverage, and date of entry. The obtained information is sent to the private method `ParserHydration#makeNewInputEntry(String, int, String)` to create a new entry of class `HydrationEntry` that extends `Entry`. | ||
|
||
- Step 3: The created `HydrationEntry` instance is added into the `ArrayList<Entry>` attribute of the `HydrationList`. | ||
|
||
### Calculating hydration requirements for each user | ||
|
||
#### Design Considerations | ||
|
||
**General Health Guidelines:** The recommended daily intake of water for an average adult is around 8 glasses or approximately 2000 milliliters. This guideline is commonly recommended by health authorities and organizations such as HealthHub. | ||
|
||
**Ease of Implementation:** Setting a standard hydration requirement simplifies the tracking process for users. It provides a clear goal to strive for, making it easier for individuals to monitor and maintain their hydration levels consistently. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Excellent! |
||
### Hydration list feature | ||
|
||
The `hydration list` feature lists out the record of all the Hydration data that the user has keyed in. The Hydration data are all stored into a `ArrayList<Entry> hydrationArrayList` attribute of the `HydrationList` Class. Hydration data are printed when the `printHydrationList()` function is called. | ||
|
||
The `printHydrationList()` function iterates through the `hydrationArrayList` and prints out the Entries according to its order in the Array List. | ||
|
||
The Class diagram for Hydration list feature is shown below. Unrelated attributes and Classes were excluded. | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The association between hydration and hydrationlist does not seem to be a notation used in cs2113. Would it be better to update the diagram to use association lines instead? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, this makes sense here. |
||
|
||
### Hydration delete feature | ||
|
||
The `hydration delete` feature can delete the hydration record at specific index of hydration list. This functionality is facilitated by `HydrationList`. It implements one operation, namely: | ||
- `deleteEntry(String line)` | ||
|
||
Given below is an example usage scenario and how this mechanism behaves at every step: | ||
- Step 1: When the user inputs the command `hydration delete INDEX` in the terminal, the string is sent to `Ui#handleUserInput()`, which will call `Ui#handleHydrationInput()`. | ||
|
||
- Step 2: After the `Ui#handleHydrationInput()` matching `delete hydration` key word, the string will be passed into deleteEntry(String line) to execute delete process. | ||
|
||
- Step 3: The string will be divided to two substrings according to the command syntax. Index will be tried to get from the second substring by `Integer.parseInt()`. | ||
|
||
- Step 4: The hydration record (`Entry`) stored in the `ArrayList<Entry> hydrationList` will be deleted by calling `hydrationArrayList.remove((index-1));` and a successful deleting message will be shown in terminal by calling `HydrationListUi#successfulDeletedMessage(toDelete)` | ||
|
||
- Step 5: The latest hydration list will be updated to saving file by calling `HydrationList#updateFile()`. | ||
|
||
The Sequence diagram for Hydration delete feature is shown below: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great Job at keeping the application used to make the sequence diagrams the same. |
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The notation for this sequence diagram appears to be different from the rest of the diagrams. The methods called seem to be indicated with the class. E.g. Ui#handleHydrationinput. Would it be better to standardize the notations to match the previous diagrams, in particular, following the notation taught during lectures? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same as |
||
|
||
## Product scope | ||
### Target user profile | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could fill in information on scope, user profile etc There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Users have various reasons to choose your product, maybe have more lines and contents for user stories? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Missing content |
||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. add a end of lifeline "X" after entry deleted There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Change the # to : There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This sequence diagram looks different from the previous diagram. Perhaps can standardise it? |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
@startuml | ||
|
||
actor User | ||
participant "Ui#handleUserInput()" as UI | ||
participant "Ui#handleHydrationInput()" as HydrationInput | ||
participant "HydrationList#deleteEntry(String line)" as DeleteEntry | ||
participant "HydrationList#updateFile()" as UpdateFile | ||
participant "FileHandler#writeEntries(ArrayList<Entry> entries)" as WriteEntries | ||
|
||
User -> UI : Enters command | ||
activate UI | ||
UI -> HydrationInput : Sends command for hydration input handling | ||
activate HydrationInput | ||
HydrationInput -> DeleteEntry : Calls delete entry method | ||
activate DeleteEntry | ||
DeleteEntry -> UpdateFile : Deletes entry | ||
activate UpdateFile | ||
UpdateFile -> WriteEntries : Updates file with new entries | ||
activate WriteEntries | ||
WriteEntries --> UpdateFile : Updates file | ||
deactivate WriteEntries | ||
UpdateFile --> DeleteEntry : File updated | ||
deactivate UpdateFile | ||
DeleteEntry --> HydrationInput : Entry deleted | ||
deactivate DeleteEntry | ||
HydrationInput --> UI : Sends success message | ||
deactivate HydrationInput | ||
UI -> User : Displays success message | ||
deactivate UI | ||
|
||
@enduml |
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should there be a "C" beside your classes? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are the symbols used to represent "private" and "public" methods correct? |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
@startuml | ||
|
||
class LifeTrack { | ||
+ main(args: String[]): void | ||
} | ||
|
||
package ui { | ||
class Ui { | ||
+ readUserInput(calorieList: calories.CalorieList, hydrationList: hydration.HydrationList, user: user.User, sleepList: sleep.SleepList): void | ||
+ handleHydrationInput(line: String, hydrationList: hydration.HydrationList): void | ||
} | ||
} | ||
|
||
package hydration { | ||
package hydrationlist { | ||
class HydrationList { | ||
- ArrayList<Entry> hydrationArrayList | ||
+ printHydrationList(): void | ||
} | ||
|
||
class HydrationListUi { | ||
+ hydrationListHeader(): void | ||
+ emptyListMessage(): void | ||
} | ||
} | ||
} | ||
|
||
LifeTrack --> hydration.hydrationlist.HydrationList | ||
LifeTrack -[dotted]-> ui.Ui | ||
ui.Ui -[dotted]-> hydration.hydrationlist.HydrationList | ||
HydrationList -[dotted]-> HydrationListUi | ||
|
||
@enduml |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,4 @@ | ||
# Duke | ||
|
||
# LifeTrack | ||
{Give product intro here} | ||
|
||
Useful links: | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After the updateFile(), from the code it seems like it calls fileHandler in the storage. Perhaps can show the storage class too?