CIS278 Project 6 Dynamic Arrays, More Operator Overloading solution

$24.99

Original Work ?
Category:

Description

5/5 - (2 votes)

Part I The MyString class
Code the MyString class in indicated in the following UML diagram. Note that the member variable is a DYNAMIC ARRAY, so this class will be implementing the Big 3 function (copy constructor, operator= and destructor).

A MyString object is similar to a string object which you have used in Project 5. An object of type MyString will store a collection of characters – a string. Internally, the MyString object will use a char array (c-string) to store the data. This array will be a dynamic array, so that when a MyString object is created, the exact amount of storage needed can be allocated (don’t forget that a c-string stores a ‘\0’ following all chars).

MyString
– char * str // storage for characters in the string. This array will contain a ‘\0’ at
//the end so that C-string functions can be used
– int len //number of characters in str (not counting the ‘\0’)
+ MyString()
+ MyString(char newstr[])
+ MyString(const MyString& obj) // copy constructor
+ ~MyString() // destructor

+ int getLen() const
+ void setElement(int index, char item)
+ char getElement(int index) const

+ bool operator==(const MyString& obj)
+ bool operator!=(const MyString& obj)
+ char& operator[] (int);
+ MyString& operator=(const MyString& obj) //assignment operator overload
friend ostream& operator<<(ostream& out, const MyString& obj) MyString() Creates a string which contains “default”; MyString(char newstr[]) Accepts one C-string argument, allocates an array large enough for this CString (don’t forget room for the ‘\0’), stores it, and initializes len + MyString(const MyString& obj) This copy constructor initializes the new MyString object to store the same characters as ‘obj’. The new object is totally independent of the object ‘obj’ (deep copy) + ~MyString() Deletes any dynamic memory that was allocated for this object. + int getLen() Returns the number of characters in this string (does not count \0) //These functions have a precondition that 0 <= in < len + void setElement(int in, char item) Sets the character at index ‘in’ to ‘item’ + char getElement(int in) Returns the character at index ‘in’ + bool operator==(const MyString& obj) Returns true if this MyString object contains the same characters (in the same order) as obj + bool operator!=(const MyString& obj) Returns true if this MyString object does not contain the same characters (in the same order) as obj + char& operator[] (int in) returns the character at index ‘in’ + MyString& operator=(const MyString& obj) assignment operator overload ostream& operator<<(ostream& out, const MyString& obj) non-member function which outputs all characters MyString object obj Part II Application Write an application which: //tests simple constructors Creates a MyString object, str1, using the no-arg constructor Creates a MyString object, str2, using on-arg constructor (user provides string to be passed as argument) Updates each of the characters of str1, allowing user to enter characters and position Outputs str1 and str2 // tests simple operator overloads Outputs a message indicating if str1 and str2 are equal or not Outputs the characters of str2, one per line (use the [] to access chars) //tests copy constructor, verifying object independence Creates a MyString object, str3, initializing it to str2 Output str2 and str3 Updates 2 characters of str2, allowing user to enter characters and position Output str2 and str3 //tests assignment operator, verifying object independence Output str1 and str3 Assigns str3 to str1 Output str1 and str3 Updates 2 characters of str3, allowing user to enter characters and position Output str1 and str3