1 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X 1 Chapter 9 Classes & Objects type string is a natural lead-in to OOP, since strings act like character arrays and are, in fact, objects (a class type)
2 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X Objects in Brief Object ::= a domain entity (p. 274) student button circle Coke machine string defined by name, state, & behavior 2
3 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X Objects in Brief name ::= the usual rules for identifiers state ::= data members (state variables) behavior ::= function members (methods) alternately-- object ::= named set of properties/members data members member functions 3
4 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X Objects in Brief name ::= the usual rules for identifiers state ::= data members (state variables) behavior ::= function members (methods) alternately-- object ::= named set of properties/members data members member functions 4
5 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X Objects in Brief Example: Circle Object Example: Circle Object Example: Circle Object State Variable: radius Methods: setRadius(), getArea(), getDiameter() int main(){ Circle c; c.setRadius(5); cout << c.getArea() << c.getDiameter(); 5
6 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X Implementation in C++ Objects are defined using a class The class is a blueprint for creating objects objects are created by making an instance of the class Circle is a class type c is an instance of the class metaphor: classes are to objects as apple pie recipes are to apple pies 6
7 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X 7 Case Study: The Standard Class string ( 9.8) 9.8) 9.8) > 100 member functions (p. 284)
8 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X The Standard Class string cstring ::= NUL-terminated char array → low-level; error-prone; not a type type string avoids problems associated with cstrings provides additional operations (!) 8
9 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X 9 String Ops copy (=) append (+) compare (<, <=, ==,...) #include int main(){ string s1, s2(“hot”), s3(“dog”), s4; s1 = s2 + ‘ ‘ + s3 + “!”; s4 = s1; cout << s1 << s4 << endl; }
10 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X 10 Appending a String You can use several overloaded functions to add new contents to a string. For example, see the following code: string s1("Welcome"); s1.append(" to C++"); // appends " to C++" to s1 cout << s1 << endl; // s1 now becomes Welcome to C++ string s2("Welcome"); s2.append(" to C and C++", 0, 5); // appends " to C" to s2 cout << s2 << endl; // s2 now becomes Welcome to C string s3("Welcome"); s3.append(" to C and C++", 5); // appends " to C" to s3 cout << s3 << endl; // s3 now becomes Welcome to C string s4("Welcome"); s4.append(4, 'G'); // appends "GGGG" to s4 cout << s4 << endl; // s4 now becomes WelcomeGGGG
11 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X 11 Assigning a String You can use several overloaded functions to assign new contents to a string. For example, see the following code: string s1("Welcome"); s1.assign("Dallas"); // assigns "Dallas" to s1 cout << s1 << endl; // s1 now becomes Dallas string s2("Welcome"); s2.assign("Dallas, Texas", 0, 5); // assigns "Dalla" to s2 cout << s2 << endl; // s2 now becomes Dalla string s3("Welcome"); s3.assign("Dallas, Texas", 5); // assigns "Dalla" to s3 cout << s3 << endl; // s3 now becomes Dalla string s4("Welcome"); s4.assign(4, 'G'); // assigns "GGGG" to s4 cout << s4 << endl; // s4 now becomes GGGG
12 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X 12 Functions at, clear, erase, and empty You can use the at(index) function to retrieve a character at a specified index, clear() to clear the string, erase(index, n) to delete part of the string, and empty() to test if a string is empty. For example, see the following code: string s1("Welcome"); cout << s1.at(3) << endl; // s1.at(3) returns c cout << s1.erase(2, 3) << endl; // s1 is now Weme s1.clear(); // s1 is now empty cout << s1.empty() << endl; // s1.empty returns 1 (means true)
13 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X 13 Comparing Strings Often, in a program, you need to compare the contents of two strings. You can use the compare function. This function works in the same way as the C-string strcmp function and returns a value greater than 0, 0, or less than 0. For example, see the following code: string s1("Welcome"); string s2("Welcomg"); cout << s1.compare(s2) << endl; // returns -2 cout << s2.compare(s1) << endl; // returns 2 cout << s1.compare("Welcome") << endl; // returns 0
14 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X 14 String Operators