ClassDiagram.uxf

Summary

Maintainability
Test Coverage
<?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 &gt; 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&lt;KeyType, ValueType&gt;

--
-table: HashList&lt;K, V&gt;*
-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>&lt;&lt;enumeration&gt;&gt;
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&lt;string&gt;</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>&lt;&lt;Project: Console Application&gt;&gt;
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>&lt;&lt;Project: Static Library&gt;&gt;
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&amp;) 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&lt;Operation&gt;
--
+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>&lt;&lt;enumeration&gt;&gt;
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>&lt;&lt;Project: Unit Tests&gt;&gt;
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=&lt;&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=&lt;&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&lt;KeyType, ValueType&gt;
--
/+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=&lt;&lt;&lt;&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=&lt;&lt;&lt;&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=&lt;&lt;&lt;&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=&lt;&lt;&lt;&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=&lt;&lt;&lt;&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=&lt;&lt;&lt;&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=&lt;&lt;&lt;&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=&lt;&lt;&lt;&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=&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=&lt;&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=&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=&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=&lt;&lt;&lt;&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&amp; key, const _val_t* const val = NULL,
        _key_t** new_key = NULL, _val_t** new_val = NULL):void
+remove(const _key_t&amp; key):void 
+clear(void):void
+find(const _key_t&amp; 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&lt;_key_t, _val_t&gt;::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&amp; 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&amp; 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&lt;string, TaskEntry*&gt;
-tree: HashTable&lt;unsigned long long, TaskEntry*&gt;
-history: OperationManager
--
+void printAllTo(ostream&amp; output);
+void createEntry(const string&amp; description);
+void deleteEntry(const string&amp; id);
+void updateEntryStatus(const string&amp; id, const TaskEntryStatus&amp; new_status);
+void updateEntryDescription(const string&amp; id, const string&amp; new_description);
+void updateEntryDue(const string&amp; id, const string&amp; new_time);
+void runDiagnosticTo(ostream&amp; output);
+void loadEntry(
    const string&amp; user,
    const string&amp; id,
    const uint64_t&amp; time_created,
    const uint64_t&amp; time_due,
    const string&amp; description,
    const TaskEntryStatus&amp; 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=&lt;&lt;&lt;&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=&lt;&lt;&lt;&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=&lt;&lt;&lt;&lt;-
bg=black</panel_attributes>
    <additional_attributes>490.0;10.0;10.0;280.0</additional_attributes>
  </element>
</diagram>