Difference between revisions of "Project A3 20141 - OOP344"

From CDOT Wiki
Jump to: navigation, search
m (Class: IntList, Files [intlist.h, intlist.cpp], Test: 0)
m
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
{{OOP344 Index Extended | 20141}}
 +
 
= Introduction =
 
= Introduction =
 
In this assignment, you will construct an integer linked list, adapt it into a templated linked list, then create a '''bonus''' object editor.
 
In this assignment, you will construct an integer linked list, adapt it into a templated linked list, then create a '''bonus''' object editor.
  
 
== Testing ==
 
== Testing ==
Use the testing package linked [https://scs.senecac.on.ca/~hasan.kamal-al-deen/public_resources/oop344/a3test_mar262014.zip here(Updated March 26 2014)] to test your assignment. Please read the notes/comments in a3test.cpp.
+
Use the testing package linked [https://scs.senecac.on.ca/~hasan.kamal-al-deen/public_resources/oop344/a3test_apr032014.zip here(Updated April 3 2014)] to test your assignment. Please read the notes/comments in a3test.cpp.
  
 
== Expectations ==
 
== Expectations ==
Line 68: Line 70:
 
These two classes are almost identical to IntListNode and IntList, except that they are templated.
 
These two classes are almost identical to IntListNode and IntList, except that they are templated.
  
In the specs below, note the sections that are marked '''Important'''. Those sections will have more than just a template parameter change from the int version of the list.
+
In the specs below, note the sections that are marked <big><u><i>Important</i></u></big>. Those sections will have more than just a template parameter change from the int version of the list.
  
=== Class: ListNode<T>, Files: [list.h], Test: 1 ===
+
=== Class: ListNode<T>, Files: [list.h], Test Number: 1 ===
 
Templated ListNode class. Similar to IntListNode but templated to hold any type.
 
Templated ListNode class. Similar to IntListNode but templated to hold any type.
  
Line 84: Line 86:
  
 
; Constructor: Accepts two arguments.
 
; Constructor: Accepts two arguments.
;* '''Important'''. Const T reference to initialize node's value. Defaults to a default constructed T.
+
:* <big><u><i>Important</i></u></big> const T reference to initialize node's value. Defaults to a default constructed T.
;* Pointer to next node in the list. Defaults to NULL.
+
:* Pointer to next node in the list. Defaults to NULL.
 
; Copy Constructor: Initializes internal value as a copy of the source's internal value. Sets this object's next pointer to NULL.
 
; Copy Constructor: Initializes internal value as a copy of the source's internal value. Sets this object's next pointer to NULL.
 
; Standard Assignment Operator: Assigns source's internal value to the current object's internal value. Sets this object's next pointer to NULL. Does not alter the object in the case of self-assignment. Returns a reference to the current object.
 
; Standard Assignment Operator: Assigns source's internal value to the current object's internal value. Sets this object's next pointer to NULL. Does not alter the object in the case of self-assignment. Returns a reference to the current object.
  
 
; val: Val getter. Const function. Does not accept parameters. Returns internal value.
 
; val: Val getter. Const function. Does not accept parameters. Returns internal value.
; val: Val setter. '''Important'''. Receives a const T reference. Sets internal value to received reference. Does not return anything.
+
; val: Val setter. <big><u><i>Important</i></u></big> receives a const T reference. Sets internal value to received reference. Does not return anything.
  
 
; next: Next getter. Const function. Does not accept parameters. Returns pointer to next node.
 
; next: Next getter. Const function. Does not accept parameters. Returns pointer to next node.
  
=== Class: List<T>, Files [list.h], Test: 1 ===
+
=== Class: List<T>, Files [list.h], Test Number: 1 ===
 
A templated linked list class. Similar to IntList. Uses ListNode<T> as a node class.
 
A templated linked list class. Similar to IntList. Uses ListNode<T> as a node class.
  
Line 107: Line 109:
 
; head: Head getter. Const function. Returns pointer to head node in list.
 
; head: Head getter. Const function. Returns pointer to head node in list.
  
; push: Adds a new node to the '''end of the list'''. I'll say that again, '''END OF THE LIST'''. '''Important'''. Receives a const T reference. The new node's value should be set to the received reference.
+
; push: Adds a new node to the '''end of the list'''. I'll say that again, '''END OF THE LIST'''. <big><u><i>Important</i></u></big> receives a const T reference. The new node's value should be set to the received reference.
 
; pop: Destroys the '''last node in the list'''. I'll say that again, '''LAST NODE IN THE LIST'''. Does not receive any arguments. Does not return anything.
 
; pop: Destroys the '''last node in the list'''. I'll say that again, '''LAST NODE IN THE LIST'''. Does not receive any arguments. Does not return anything.
 
; clear: Removes all nodes in the list. Has no effect if the list is empty. Does not accept parameters. Does not return anything.
 
; clear: Removes all nodes in the list. Has no effect if the list is empty. Does not accept parameters. Does not return anything.
Line 117: Line 119:
  
 
== Submission ==
 
== Submission ==
Please only submit '''ONCE YOUR CODE SUCCESSFULLY PASSES ALL TESTS!''' This includes the '''COMMON SENSE TEST''' which is the test that you perform '''yourself''' on your own code to ensure that it matches with what is required '''in the spec'''. Please see your instructor's specific instructions on how to submit.
+
Please only submit '''ONCE YOUR CODE SUCCESSFULLY PASSES ALL TESTS!''' This includes the '''COMMON SENSE TEST''' which is the test that you perform '''yourself''' on your own code to ensure that it matches with what is required in the spec.
 +
 
 +
; Section A, C: Please submit via blackboard.
 +
; Section B: Please see your instructor's specific instructions on how to submit.

Latest revision as of 10:22, 3 April 2014


OOP344 | Weekly Schedule | Student List | Teams | Project | A1 | A2 | A3 | Student Resources

Introduction

In this assignment, you will construct an integer linked list, adapt it into a templated linked list, then create a bonus object editor.

Testing

Use the testing package linked here(Updated April 3 2014) to test your assignment. Please read the notes/comments in a3test.cpp.

Expectations

Test numbers are provided at the end of each class spec heading, as are file names.

Please read this note on code SANITY.

When you are finished the assignment, you will have created the following files:

  • intlist.h
  • intlist.cpp
  • list.h
  • Will update with part 3 soon.

Part 1: Integer Linked List

Build the classes IntList and IntListNode. Place the headers in intlist.h and the implementation in intlist.cpp. These classes form an integer linked list.

Class: IntListNode, Files: [intlist.h, intlist.cpp], Test Number: 0

Integer linked list node. Node is considered last in the list if its next pointer is NULL. Note the public and protected sections below. You may need to make IntList a friend of this class.

Recommended Members

  • An integer member to hold the node's value.
  • A pointer to the next node in the list.

Public Functions

Constructor
Accepts two arguments:
  • Integer to initialize node's value. Defaults to a default constructed int.
  • Pointer to next node in list. Defaults to NULL.
Copy Constructor
Initializes internal value as a copy of the source's internal value. Sets this object's next pointer to NULL.
Standard Assignment Operator
Assigns source's internal value to the current object's internal value. Sets this object's next pointer to NULL. Does not alter the object in the case of self-assignment. Returns a reference to the current object.
val
Val getter. Const function. Does not accept parameters. Returns internal value.
val
Val setter. Receives an int. Sets internal value to received int. Does not return anything.
next
Next getter. Const function. Does not accept parameters. Returns pointer to the next node.

Class: IntList, Files [intlist.h, intlist.cpp], Test Number: 0

Integer linked list. Uses IntListNode as a node class.

Recommended Members

  • Pointer to head node in list
  • Current size (number of nodes) of list

Public Functions

Constructor
Does not accept parameters. Initializes list to safe empty state.
size
Size getter. Const function. Does not receive parameters. Should return number of nodes in list.
head
Head getter. Const function. Returns pointer to head node in list.
push
Adds a new node to the end of the list. I'll say that again, END OF THE LIST. Receives an int parameter. The new node's value should be set to the received int.
pop
Destroys the last node in the list. I'll say that again, LAST NODE IN THE LIST. Does not receive any arguments. Does not return anything.
clear
Removes all nodes in the list. Has no effect if the list is empty. Does not accept parameters. Does not return anything.
Destructor
Should ensure that all memory allocated by the list has been deallocated. You are encouraged to use the functions available to you.
Standard Assignment Operator
Clears this list of all nodes. Then, refills list with the same number of nodes as in the source list. Value of each new node should equal the value of corresponding node in source list. Should not alter object in the case of self-assignment. Should return a reference to the current object.
Copy Constructor
Initializes object to safe state then copies source list into current list. Similar to assignment operator.

Part 2: Templated Linked List

NOTE: Finish part 1 before working on this part.

Build the templated linked list node class ListNode<T> and the templated linked list class List<T> in the file list.h.

These two classes are almost identical to IntListNode and IntList, except that they are templated.

In the specs below, note the sections that are marked Important. Those sections will have more than just a template parameter change from the int version of the list.

Class: ListNode<T>, Files: [list.h], Test Number: 1

Templated ListNode class. Similar to IntListNode but templated to hold any type.

The syntax for prototyping a templated class is:

 template <typename T> SomeClass;

Recommended Members

  • Template type member to hold the value.
  • Pointer to next node in list.

Public Functions

These functions are similar to their IntListNode counterparts.

Constructor
Accepts two arguments.
  • Important const T reference to initialize node's value. Defaults to a default constructed T.
  • Pointer to next node in the list. Defaults to NULL.
Copy Constructor
Initializes internal value as a copy of the source's internal value. Sets this object's next pointer to NULL.
Standard Assignment Operator
Assigns source's internal value to the current object's internal value. Sets this object's next pointer to NULL. Does not alter the object in the case of self-assignment. Returns a reference to the current object.
val
Val getter. Const function. Does not accept parameters. Returns internal value.
val
Val setter. Important receives a const T reference. Sets internal value to received reference. Does not return anything.
next
Next getter. Const function. Does not accept parameters. Returns pointer to next node.

Class: List<T>, Files [list.h], Test Number: 1

A templated linked list class. Similar to IntList. Uses ListNode<T> as a node class.

Recommended Members

  • Pointer to head node in list
  • Current size (number of nodes) of list

Public Functions

Constructor
Does not accept parameters. Initializes list to safe empty state.
size
Size getter. Const function. Does not receive parameters. Should return number of nodes in list.
head
Head getter. Const function. Returns pointer to head node in list.
push
Adds a new node to the end of the list. I'll say that again, END OF THE LIST. Important receives a const T reference. The new node's value should be set to the received reference.
pop
Destroys the last node in the list. I'll say that again, LAST NODE IN THE LIST. Does not receive any arguments. Does not return anything.
clear
Removes all nodes in the list. Has no effect if the list is empty. Does not accept parameters. Does not return anything.
Destructor
Should ensure that all memory allocated by the list has been deallocated. You are encouraged to use the functions available to you.
Standard Assignment Operator
Clears this list of all nodes. Then, refills list with the same number of nodes as in the source list. Value of each new node should equal the value of corresponding node in source list. Should not alter object in the case of self-assignment. Should return a reference to the current object.
Copy Constructor
Initializes object to safe state then copies source list into current list. Similar to assignment operator.

Submission

Please only submit ONCE YOUR CODE SUCCESSFULLY PASSES ALL TESTS! This includes the COMMON SENSE TEST which is the test that you perform yourself on your own code to ensure that it matches with what is required in the spec.

Section A, C
Please submit via blackboard.
Section B
Please see your instructor's specific instructions on how to submit.