ClassDiagram.uxf
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<diagram program="umlet" version="14.2">
<help_text>Task
CIS 22C: Fall 2016
Adrian Marroquin
Matthew Tso
Emma Xinhe
Jinzu Shen
Projects are constructed of a group containing a Rectangle
for the header and a segmented line for its outline. This
means that you can click through the outline but still
move the entire project shape using its header.
// Uncomment the following line to change the fontsize and font:
// fontsize=14
// fontfamily=SansSerif //possible: SansSerif,Serif,Monospaced
//////////////////////////////////////////////////////////////////////////////////////////////
// Welcome to UMLet!
//
// Double-click on elements to add them to the diagram, or to copy them
// Edit elements by modifying the text in this panel
// Hold Ctrl to select multiple elements
// Use Ctrl+mouse to select via lasso
//
// Use +/- or Ctrl+mouse wheel to zoom
// Drag a whole relation at its central square icon
//
// Press Ctrl+C to copy the whole diagram to the system clipboard (then just paste it to, eg, Word)
// Edit the files in the "palettes" directory to create your own element palettes
//
// Select "Custom Elements > New..." to create new element types
//////////////////////////////////////////////////////////////////////////////////////////////
// This text will be stored with each diagram; use it for notes.</help_text>
<zoom_level>5</zoom_level>
<element>
<id>UMLClass</id>
<coordinates>
<x>250</x>
<y>480</y>
<w>100</w>
<h>130</h>
</coordinates>
<panel_attributes>TaskEntry
--
-unique_id: string
-assignee: string
-due_date: int
-date_created: int
-author: string
-title: string
--
+getId() string
+getAssignee() string
+getDateDue() int
+getDateCreate() int
+getStatus() Status</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>500</x>
<y>660</y>
<w>90</w>
<h>100</h>
</coordinates>
<panel_attributes>HashTable<KeyType, ValueType>
--
-table: HashList<K, V>*
-resolveCollision() void
--
+insert(new_value: T) string (returns key)
+remove(delete_value: T)
+isEmpty() bool
+count() int</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>380</x>
<y>485</y>
<w>60</w>
<h>60</h>
</coordinates>
<panel_attributes><<enumeration>>
Status
-
Backlog
InProgress
Completed</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>800</x>
<y>155</y>
<w>95</w>
<h>100</h>
</coordinates>
<panel_attributes>WindowsMain
--
-task_manager: TaskManager
--
-receiveInput()
+getProjectDirectory() string
+getTasklogFilepaths() Stack<string></panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>790</x>
<y>65</y>
<w>305</w>
<h>20</h>
</coordinates>
<panel_attributes><<Project: Console Application>>
TaskApp
--
layer=-1
group=1</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>230</x>
<y>65</y>
<w>515</w>
<h>20</h>
</coordinates>
<panel_attributes><<Project: Static Library>>
Task
--
layer=-1
group=4</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>470</x>
<y>450</y>
<w>90</w>
<h>100</h>
</coordinates>
<panel_attributes>Diagnostic
--
-load_factor: double
-access_count: int
--
+run() void
+runAndPrintTo(output_stream: ostream&) void
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>305</x>
<y>620</y>
<w>90</w>
<h>30</h>
</coordinates>
<panel_attributes>Sha1
--
+sha_1(input: string) string
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>645</x>
<y>425</y>
<w>90</w>
<h>100</h>
</coordinates>
<panel_attributes>OperationManager
--
-history: Stack<Operation>
--
+undo() void
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>645</x>
<y>660</y>
<w>90</w>
<h>100</h>
</coordinates>
<panel_attributes><<enumeration>>
OperationType
--
create
delete
update
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>645</x>
<y>545</y>
<w>90</w>
<h>100</h>
</coordinates>
<panel_attributes>Operation
--
-type: OperationType
-entry: TaskEntry
--
+getType() OperationType
+getEntry() TaskEntry</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>225</x>
<y>80</y>
<w>530</w>
<h>775</h>
</coordinates>
<panel_attributes>lt=-
group=4</panel_attributes>
<additional_attributes>10.0;10.0;10.0;1530.0;1040.0;1530.0;1040.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>785</x>
<y>80</y>
<w>320</w>
<h>270</h>
</coordinates>
<panel_attributes>lt=-
group=1</panel_attributes>
<additional_attributes>10.0;10.0;10.0;520.0;620.0;520.0;620.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>785</x>
<y>375</y>
<w>320</w>
<h>270</h>
</coordinates>
<panel_attributes>lt=-
group=3</panel_attributes>
<additional_attributes>10.0;10.0;10.0;520.0;620.0;520.0;620.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>790</x>
<y>360</y>
<w>305</w>
<h>20</h>
</coordinates>
<panel_attributes><<Project: Unit Tests>>
TaskTests
--
layer=-1
group=3</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>820</x>
<y>410</y>
<w>75</w>
<h>40</h>
</coordinates>
<panel_attributes>HashTests</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>820</x>
<y>460</y>
<w>75</w>
<h>40</h>
</coordinates>
<panel_attributes>DiagnosticTests
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>905</x>
<y>410</y>
<w>75</w>
<h>40</h>
</coordinates>
<panel_attributes>HashTableTests</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>735</x>
<y>70</y>
<w>65</w>
<h>15</h>
</coordinates>
<panel_attributes>lt=<<.</panel_attributes>
<additional_attributes>110.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>740</x>
<y>365</y>
<w>60</w>
<h>15</h>
</coordinates>
<panel_attributes>lt=<<.</panel_attributes>
<additional_attributes>100.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLInterface</id>
<coordinates>
<x>465</x>
<y>770</y>
<w>140</w>
<h>70</h>
</coordinates>
<panel_attributes>DictionaryInterface<KeyType, ValueType>
--
/+isEmpty()/
/+count()/
/+insert()/
/+remove()/</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>680</x>
<y>520</y>
<w>15</w>
<h>40</h>
</coordinates>
<panel_attributes>lt=<<<<-
bg=black</panel_attributes>
<additional_attributes>10.0;10.0;10.0;60.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>685</x>
<y>640</y>
<w>15</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=<<<<-
bg=black</panel_attributes>
<additional_attributes>10.0;10.0;10.0;40.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>345</x>
<y>505</y>
<w>45</w>
<h>15</h>
</coordinates>
<panel_attributes>lt=<<<<-
bg=black</panel_attributes>
<additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>510</x>
<y>545</y>
<w>15</w>
<h>125</h>
</coordinates>
<panel_attributes>lt=-</panel_attributes>
<additional_attributes>10.0;230.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>450</x>
<y>355</y>
<w>70</w>
<h>105</h>
</coordinates>
<panel_attributes>lt=-</panel_attributes>
<additional_attributes>10.0;10.0;120.0;190.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>255</x>
<y>660</y>
<w>90</w>
<h>100</h>
</coordinates>
<panel_attributes>HashEntry
--
-key: KeyType
-value: ValueType
-setKey()
--
+getValue()
+getKey()</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>340</x>
<y>710</y>
<w>40</w>
<h>15</h>
</coordinates>
<panel_attributes>lt=<<<<-
bg=black</panel_attributes>
<additional_attributes>60.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>275</x>
<y>605</y>
<w>15</w>
<h>65</h>
</coordinates>
<panel_attributes>lt=<<<<-
bg=black</panel_attributes>
<additional_attributes>10.0;110.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>530</x>
<y>755</y>
<w>15</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=<<<<-</panel_attributes>
<additional_attributes>10.0;10.0;10.0;40.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>450</x>
<y>210</y>
<w>150</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=<<<<-
bg=black</panel_attributes>
<additional_attributes>280.0;40.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>585</x>
<y>350</y>
<w>15</w>
<h>325</h>
</coordinates>
<panel_attributes>lt=<<<<-
bg=black</panel_attributes>
<additional_attributes>10.0;10.0;10.0;630.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>335</x>
<y>605</y>
<w>15</w>
<h>25</h>
</coordinates>
<panel_attributes>lt=-</panel_attributes>
<additional_attributes>10.0;10.0;10.0;30.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>615</x>
<y>80</y>
<w>90</w>
<h>30</h>
</coordinates>
<panel_attributes>
TaskLib
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>655</x>
<y>105</y>
<w>15</w>
<h>85</h>
</coordinates>
<panel_attributes>lt=<.</panel_attributes>
<additional_attributes>10.0;10.0;10.0;150.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>800</x>
<y>80</y>
<w>90</w>
<h>30</h>
</coordinates>
<panel_attributes>
AppIncludes
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>945</x>
<y>95</y>
<w>145</w>
<h>65</h>
</coordinates>
<panel_attributes>WindowsDirectory
--
--
+filenamesTo(directory: TCHAR*) string[]</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>945</x>
<y>190</y>
<w>75</w>
<h>100</h>
</coordinates>
<panel_attributes>Pager
--
--
+page(content: string[], lines: int, scroll: int) void</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>835</x>
<y>105</y>
<w>15</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=<<-</panel_attributes>
<additional_attributes>10.0;10.0;10.0;100.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>880</x>
<y>105</y>
<w>75</w>
<h>95</h>
</coordinates>
<panel_attributes>lt=<.</panel_attributes>
<additional_attributes>10.0;10.0;130.0;170.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>885</x>
<y>95</y>
<w>70</w>
<h>15</h>
</coordinates>
<panel_attributes>lt=<.</panel_attributes>
<additional_attributes>10.0;10.0;120.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>905</x>
<y>460</y>
<w>75</w>
<h>40</h>
</coordinates>
<panel_attributes>HashEntryTests</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>820</x>
<y>510</y>
<w>75</w>
<h>40</h>
</coordinates>
<panel_attributes>TaskEntryTests</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>905</x>
<y>510</y>
<w>75</w>
<h>40</h>
</coordinates>
<panel_attributes>FileIOTests</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>905</x>
<y>560</y>
<w>75</w>
<h>40</h>
</coordinates>
<panel_attributes>AdtTests</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>990</x>
<y>410</y>
<w>75</w>
<h>40</h>
</coordinates>
<panel_attributes>BinarySearchTreeTests</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>990</x>
<y>460</y>
<w>75</w>
<h>40</h>
</coordinates>
<panel_attributes>TreeNodeTests</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>820</x>
<y>560</y>
<w>75</w>
<h>40</h>
</coordinates>
<panel_attributes>OperationTests</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>345</x>
<y>585</y>
<w>310</w>
<h>15</h>
</coordinates>
<panel_attributes>lt=<<<<-
bg=black</panel_attributes>
<additional_attributes>600.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>240</x>
<y>95</y>
<w>215</w>
<h>360</h>
</coordinates>
<panel_attributes>c_tree
--
-node_t*:m_root
-m_size:int
-m_cur_enumed_node:mutable node_t*
--
+c_tree():
+~c_tree():
+size()const:int
+insert(const _key_t& key, const _val_t* const val = NULL,
_key_t** new_key = NULL, _val_t** new_val = NULL):void
+remove(const _key_t& key):void
+clear(void):void
+find(const _key_t& key, _key_t** found_key = NULL,
_val_t** found_value = NULL) const:bool
+is_empty(void) const:bool
+first_data(_val_t** value = NULL) const:_key_t*
+next_data(_val_t** value = NULL) const:_key_t*
+last_data(_val_t** value = NULL) const:_key_t*
+_key_t* prev_data(_val_t** value = NULL) const:_key_t*
+c_tree<_key_t, _val_t>::to_string(void) const:string
-create_leaf_node(void):node_t*
-del_tree(node_t* tree_root):void
-del_node(node_t* node):void
-find_min_node(node_t* root_node) const:node_t*
-find_max_node(node_t* root_node) const:node_t*
-create_node(const _key_t& key, const _val_t* const val):node_t*
-create_leaf_node(node_t* parent):node_t*
-insert_node(node_t* new_node):void
-find_node(const _key_t& key) const:node_t*
-find_left_max_node(node_t* node):node_t*
-remove_node_from_tree(node_t* node):void
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>330</x>
<y>145</y>
<w>105</w>
<h>70</h>
</coordinates>
<panel_attributes>c_tree::note_t
--
-m_left:node_t*
-m_right:node_t*
-m_parent:node_t*
-m_key:_key_t*
-m_va:_val_t* </panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>590</x>
<y>180</y>
<w>140</w>
<h>175</h>
</coordinates>
<panel_attributes>EntryManager
--
-table: HashTable<string, TaskEntry*>
-tree: HashTable<unsigned long long, TaskEntry*>
-history: OperationManager
--
+void printAllTo(ostream& output);
+void createEntry(const string& description);
+void deleteEntry(const string& id);
+void updateEntryStatus(const string& id, const TaskEntryStatus& new_status);
+void updateEntryDescription(const string& id, const string& new_description);
+void updateEntryDue(const string& id, const string& new_time);
+void runDiagnosticTo(ostream& output);
+void loadEntry(
const string& user,
const string& id,
const uint64_t& time_created,
const uint64_t& time_due,
const string& description,
const TaskEntryStatus& status
);
+void unload();</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>685</x>
<y>350</y>
<w>15</w>
<h>85</h>
</coordinates>
<panel_attributes>lt=<<<<-
bg=black</panel_attributes>
<additional_attributes>10.0;10.0;10.0;150.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>455</x>
<y>700</y>
<w>55</w>
<h>15</h>
</coordinates>
<panel_attributes>lt=<<<<-
bg=black</panel_attributes>
<additional_attributes>90.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>370</x>
<y>660</y>
<w>90</w>
<h>100</h>
</coordinates>
<panel_attributes>HashList
--
-head: HashEntry*
-length: int
--
+getValue()
+getKey()</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>345</x>
<y>340</y>
<w>255</w>
<h>150</h>
</coordinates>
<panel_attributes>lt=<<<<-
bg=black</panel_attributes>
<additional_attributes>490.0;10.0;10.0;280.0</additional_attributes>
</element>
</diagram>