Last active
November 5, 2021 02:29
-
-
Save ameryisafreeelf/7d276cbc672870e2fa3bb1f86a271955 to your computer and use it in GitHub Desktop.
Initial Design in the To Do List exercise (Week 2)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
#include <vector> | |
static int taskNumberCounter = 0; // Static variable to assign a taskNumber to task | |
enum Status {done, notDone}; | |
class Task { | |
private: | |
int taskNumber; | |
std::string name; | |
Status currStatus = notDone; | |
public: | |
Task(std::string name, Status s); // Assigns a taskNumber and increments taskNumberCounter | |
void setName(std::string newName); | |
void setStatus(Status s); | |
}; | |
class List { | |
private: | |
std::vector<Task> taskList; | |
public: | |
List(Task &t); // Creates a List, note that instantiation of a List requires a Task | |
// Accessors | |
Task getTask(int taskNumber); | |
// Mutators for taskList | |
void addTaskToList(Task &t); // Creates a task object and adds it to taskList | |
void deleteTaskFromList(Task &t); // If this causes taskList.empty(), delete List | |
// Returns a copy of taskList | |
std::vector<Task> viewTaskList(); | |
}; |
One other thing to note, that I was second-guessing a lot- I decided to add a static variable called taskNumberCounter that would assign an ID called taskNumber
to tasks. This provides a convenient way to access Tasks in Lists, which would be especially useful for referring to Tasks when writing HTTP endpoints.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
In my basic design, the first decision that felt important was trying to determine how I wanted to model the relationship between a List and a Task. I decided to force a List to require a Task by requiring that a List be instantiated with a Task object, and also by having the
deleteTaskFromList
method delete the List if itstaskList
becomes empty.