0% found this document useful (0 votes)
105 views49 pages

Introduction To Classes and Objects: 2006 Pearson Education, Inc. All Rights Reserved

The document discusses defining classes and objects in C++. It introduces the GradeBook class which contains a member function to display a welcome message. This function is initially defined without parameters but is later updated to include a string parameter for the course name. The class definition specifies data members and member functions. Member functions are called on objects using the dot operator.

Uploaded by

SEENIVAS
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
105 views49 pages

Introduction To Classes and Objects: 2006 Pearson Education, Inc. All Rights Reserved

The document discusses defining classes and objects in C++. It introduces the GradeBook class which contains a member function to display a welcome message. This function is initially defined without parameters but is later updated to include a string parameter for the course name. The class definition specifies data members and member functions. Member functions are called on objects using the dot operator.

Uploaded by

SEENIVAS
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 49

1

3
Introduction to
Classes and
Objects
 2006 Pearson Education, Inc. All rights reserved.
2

3.1 Introduction
3.2 Classes, Objects, Member Functions and Data Members
3.3 Overview of the Chapter Examples
3.4 Defining a Class with a Member Function
3.5 Defining a Member Function with a Parameter
3.6 Data Members, set Functions and get Functions
3.7 Initializing Objects with Constructors
3.8 Placing a Class in a Separate File for Reusability
3.9 Separating Interface from Implementation
3.10 Validating Data with set Functions

 2006 Pearson Education, Inc. All rights reserved.


3

3.1 Introduction
• Programs from Chapter 2
– All statements were located in function main
• Typically
– Programs will consist of
• Function main and
• One or more classes
– Each containing data members and member functions

 2006 Pearson Education, Inc. All rights reserved.


4

3.2 Classes, Objects, Member Functions


and Data Members
• Review of classes: Car example
– Functions describe the mechanisms that perform a
tasks, such as acceleration
• Hides complex tasks from user, just as a driver can use
the pedal to accelerate without needing to know how
the acceleration is performed
– Classes must be defined before they can be used, car
must be built before it can be driven
– Many car objects created from same class, many cars
built from same engineering drawing

 2006 Pearson Education, Inc. All rights reserved.


5

3.2 Classes, Objects, Member Functions


and Data Members (Cont.)
• Review of classes: Car example (Cont.)
– Member-function calls send messages to an object to
perform tasks, just like pressing the gas pedal sends a
message to the car to accelerate
– Objects and cars both have attributes, like color and
miles driven

 2006 Pearson Education, Inc. All rights reserved.


6

3.3 Overview of the Chapter Examples

• Seven simple examples


– Examples used to build a GradeBook class
• Topics covered:
– Member functions
– Data members
– Clients of a class
• Other classes or functions that call the member functions of this
class’s objects
– Separating interface from implementation
– Data validation
• Ensures that data in an object is in a particular format or range

 2006 Pearson Education, Inc. All rights reserved.


7

3.4 Defining a Class With a Member


Function
• Class definition
– Tells compiler what member functions and data members
belong to the class
– Keyword class followed by the class’s name
– Class body is enclosed in braces ({})
• Specifies data members and member functions
• Access-specifier public:
– Indicates that a member function or data member is
accessible to other functions and member functions of
other classes

 2006 Pearson Education, Inc. All rights reserved.


1 // Fig. 3.1: fig03_01.cpp
8
2 // Define class GradeBook with a member function displayMessage;
Outline
3 // Create a GradeBook object and call its displayMessage function.
4 #include <iostream>
5 using std::cout;
6 using std::endl; fig03_01.cpp
7 Beginning of class definition
8 // GradeBook class definition for class GradeBook (1 of 1)
9 class GradeBook Beginning of class body
10 { Access specifier public; makes
11 public: members available to the public
12 // function that displays a Member user
welcome message to the GradeBook function displayMessge
13 void displayMessage() returns nothing
14 {
15 cout << "Welcome to the Grade Book!" << endl;
16 } // end function displayMessage
17 }; // end class GradeBook
18 End of class body
19 // function main begins program execution
20 int main() Use dot operator to call
21 { GradeBook’s member function
22 GradeBook myGradeBook; // create a GradeBook object named myGradeBook
23 myGradeBook.displayMessage(); // call object's displayMessage function
24 return 0; // indicate successful termination
25 } // end main

Welcome to the Grade Book!

 2006 Pearson Education,


Inc. All rights reserved.
9

3.4 Defining a Class With a Member


Function (Cont.)
• Member function definition
– Return type of a function
• Indicates the type of value returned by the function when it
completes its task
• void indicates that the function does not return any value
– Function names must be a valid identifier
– Parentheses after function name indicate that it is a
function
– Function body contains statements that perform the
function’s task
• Delimited by braces ({})

 2006 Pearson Education, Inc. All rights reserved.


10

3.4 Defining a Class With a Member


Function (Cont.)
• Using a class
– A class is a user-defined type (or programmer-defined
type)
• Can be used to create objects
– Variables of the class type
– Dot operator (.)
• Used to access an object’s data members and member
functions
• Example
– myGradeBook.displayMessage()
• Call member function displayMessage of
GradeBook object myGradeBook

 2006 Pearson Education, Inc. All rights reserved.


11

3.5 Defining a Member Function with a


Parameter
• Function parameter(s)
– Information needed by a function to perform its task
• Function argument(s)
– Values supplied by a function call for each of the function’s
parameters
• Argument values are copied into function parameters

 2006 Pearson Education, Inc. All rights reserved.


12

3.5 Defining a Member Function with a


Parameter (Cont.)
• A string
– Represents a string of characters
– An object of C++ Standard Library class std::string
• Defined in header file <string>
• Library function getline
– Used to retrieve input until newline is encountered
– Example
• getline( cin, nameOfCourse );
– Inputs a line from standard input into string object
nameOfCourse

 2006 Pearson Education, Inc. All rights reserved.


1 // Fig. 3.3: fig03_03.cpp
13
2
3
// Define class GradeBook with a member function that takes a parameter;
// Create a GradeBook object and call its displayMessage function.
Outline
4 #include <iostream>
5 using std::cout;
Include string class definition
6 using std::cin;
fig03_03.cpp
7 using std::endl;
8
9 #include <string> // program uses C++ standard string class
(1 of 2)
10 using std::string;
11 using std::getline;
12
13 // GradeBook class definition Member function parameter
14 class GradeBook
15 {
16 public:
17 // function that displays a welcome message to the GradeBook user
18 void displayMessage( string courseName ) Use the function
19 {
parameter as a variable
20 cout << "Welcome to the grade book for\n" << courseName << "!"
21 << endl;
22 } // end function displayMessage
23 }; // end class GradeBook
24
25 // function main begins program execution
26 int main()
27 {
28 string nameOfCourse; // string of characters to store the course name
29 GradeBook myGradeBook; // create a GradeBook object named myGradeBook
30

 2006 Pearson Education,


Inc. All rights reserved.
31 // prompt for and input course name
14
32 cout << "Please enter the course name:" << endl;
Outline
33 getline( cin, nameOfCourse ); // read a course name with blanks
34 cout << endl; // output a blank line
35
36 // call myGradeBook's displayMessage function fig03_03.cpp
37 // and pass nameOfCourse as an argument
38 myGradeBook.displayMessage( nameOfCourse ); (2 of 2)
39 return 0; // indicate successful termination
40 } // end main Passing an argument to
Please enter the course name: the member function
CS101 Introduction to C++ Programming

Welcome to the grade book for


CS101 Introduction to C++ Programming!

 2006 Pearson Education,


Inc. All rights reserved.
15

3.5 Defining a Member Function with a


Parameter (Cont.)
• Parameter Lists
– Additional information needed by a function
– Located in parentheses following the function name
– Function may have any number of parameters
• Parameters separated by commas
– Number, order and types of arguments in a function call
must match the number, order and types of parameters in
the called function’s parameter list

 2006 Pearson Education, Inc. All rights reserved.


16

Good Programming Practice 3.1

To avoid ambiguity, do not use the same


names for the arguments passed to a function
and the corresponding parameters in the
function definition.

 2006 Pearson Education, Inc. All rights reserved.


17

Good Programming Practice 3.2

Choosing meaningful function names and


meaningful parameter names makes programs
more readable and helps avoid excessive use of
comments.

 2006 Pearson Education, Inc. All rights reserved.


18

3.6 Data Members, set Functions and get


Functions
• Local variables
– Variables declared in a function definition’s body
• Cannot be used outside of that function body
– When a function terminates
• The values of its local variables are lost
• Attributes
– Exist throughout the life of the object
– Represented as data members
• Variables in a class definition
– Each object of class maintains its own copy of attributes

 2006 Pearson Education, Inc. All rights reserved.


1 // Fig. 3.5: fig03_05.cpp
19
2
3
// Define class GradeBook that contains a courseName data member
// and member functions to set and get its value;
Outline
4 // Create and manipulate a GradeBook object with these functions.
5 #include <iostream>
6 using std::cout;
fig03_05.cpp
7 using std::cin;
8 using std::endl;
9
(1 of 3)
10 #include <string> // program uses C++ standard string class
11 using std::string;
12 using std::getline;
13
14 // GradeBook class definition set function modifies private data
15 class GradeBook
16 {
17 public:
18 // function that sets the course name
19 void setCourseName( string name )
20 {
21 courseName = name; // store the course name in the object
22 } // end function setCourseName get function accesses private data
23
24 // function that gets the course name
25 string getCourseName()
26 {
27 return courseName; // return the object's courseName
28 } // end function getCourseName
29

 2006 Pearson Education,


Inc. All rights reserved.
30 // function that displays a welcome message 20
31 void displayMessage() Outline
32 {
33 // this statement calls getCourseName to get the
34 // name of the course this GradeBook represents
35 cout << "Welcome to the grade book for\n" << getCourseName() << "!" fig03_05.cpp
36 << endl;
37 } // end function displayMessage (2 of 3)
38 private:
Use set and get functions,
39 string courseName; // course name for this GradeBook
even within the class
40 }; // end class GradeBook
41
private
42 // function main begins members
program accessible
execution only
43 int main() to member functions of the class
44 {
45 string nameOfCourse; // string of characters to store the course name
46 GradeBook myGradeBook; // create a GradeBook object named myGradeBook
47
48 // display initial value of courseName
49 cout << "Initial course name is: " << myGradeBook.getCourseName()
50 << endl;
51

Accessing private data outside class definition

 2006 Pearson Education,


Inc. All rights reserved.
52 // prompt for, input and set course name
21
53 cout << "\nPlease enter the course name:" << endl;
Outline
54 getline( cin, nameOfCourse ); // read a course name with blanks
55 myGradeBook.setCourseName( nameOfCourse ); // set the course name
56
57 cout << endl; // outputs a blank line fig03_05.cpp
58 myGradeBook.displayMessage(); // display message with new course name
59 return 0; // indicate successful termination (3 of 3)
60 } // end main
Modifying private data outside class definition

Initial course name is:

Please enter the course name:


CS101 Introduction to C++ Programming

Welcome to the grade book for


CS101 Introduction to C++ Programming!

 2006 Pearson Education,


Inc. All rights reserved.
22

3.6 Data Members, set Functions and get


Functions (Cont.)
• Access-specifier private
– Makes a data member or member function accessible only
to member functions of the class
– private is the default access for class members
– Data hiding
• Returning a value from a function
– A function that specifies a return type other than void
• Returns a value to its calling function

 2006 Pearson Education, Inc. All rights reserved.


23

Software Engineering Observation 3.1

As a rule of thumb, data members should be


declared private and member functions
should be declared public. (We will see that it
is appropriate to declare certain member
functions private, if they are to be accessed
only by other member functions of the class.)

 2006 Pearson Education, Inc. All rights reserved.


24

3.6 Data Members, set Functions and get


Functions (Cont.)
• Software engineering with set and get functions
– public member functions that allow clients of a class to
set or get the values of private data members
– Allows the creator of the class to control how clients access
private data
– Should also be used by other member functions of the same
class

 2006 Pearson Education, Inc. All rights reserved.


25

3.7 Initializing Objects with Constructors

• Constructors
– Functions used to initialize an object’s data when it is
created
• Call made implicitly when object is created
• Must be defined with the same name as the class
• Cannot return values
– Not even void
– Default constructor has no parameters
• The compiler will provide one when a class does not explicitly
include a constructor

 2006 Pearson Education, Inc. All rights reserved.


1 // Fig. 3.7: fig03_07.cpp
26
2 // Instantiating multiple objects of the GradeBook class and using
Outline
3 // the GradeBook constructor to specify the course name
4 // when each GradeBook object is created.
5 #include <iostream>
6 using std::cout; fig03_07.cpp
7 using std::endl;
8 (1 of 3)
9 #include <string> // program uses C++ standard string class
10 using std::string;
11
Constructor has same name as
12 // GradeBook class definition class and no return type
13 class GradeBook
14 {
15 public:
16 // constructor initializes courseName with string supplied as argument
17 GradeBook( string name )
18 {
19 setCourseName( name ); // call set function to initialize courseName
20 } // end GradeBook constructor
21
22 // function to set the course name
23 void setCourseName( string name )
24 {
Initialize data member
25 courseName = name; // store the course name in the object
26 } // end function setCourseName
27

 2006 Pearson Education,


Inc. All rights reserved.
28 // function to get the course name
27
29 string getCourseName()
Outline
30 {
31 return courseName; // return object's courseName
32 } // end function getCourseName
33 fig03_07.cpp
34 // display a welcome message to the GradeBook user
35 void displayMessage() (2 of 3)
36 {
37 // call getCourseName to get the courseName
38 cout << "Welcome to the grade book for\n" << getCourseName()
39 << "!" << endl;
40 } // end function displayMessage
41 private:
42 string courseName; // course name for this GradeBook
43 }; // end class GradeBook
44

 2006 Pearson Education,


Inc. All rights reserved.
45 // function main begins program execution
28
46 int main()
Outline
47 {
48 // create two GradeBook objects
49 GradeBook gradeBook1( "CS101 Introduction to C++ Programming" );
50 GradeBook gradeBook2( "CS102 Data Structures in C++" ); fig03_07.cpp
51
52 // display initial value of courseName for each GradeBook (3 of 3)
53 cout << "gradeBook1 created for course: " << gradeBook1.getCourseName()
54 << "\ngradeBook2 created for course: " << gradeBook2.getCourseName()
55 << endl; Creating objects implicitly calls the constructor
56 return 0; // indicate successful termination
57 } // end main

gradeBook1 created for course: CS101 Introduction to C++ Programming


gradeBook2 created for course: CS102 Data Structures in C++

 2006 Pearson Education,


Inc. All rights reserved.
29

Error-Prevention Tip 3.2

Unless no initialization of your class’s data


members is necessary (almost never), provide a
constructor to ensure that your class’s data
members are initialized with meaningful values
when each new object of your class is created.

 2006 Pearson Education, Inc. All rights reserved.


30

3.8 Placing a Class in a Separate File


for Reusability
• .cpp file is known as a source-code file
• Header files
– Separate files in which class definitions are placed
• Allow compiler to recognize the classes when used elsewhere
– Generally have .h filename extensions
• Driver files
– Program used to test software (such as classes)
– Contains a main function so it can be executed

 2006 Pearson Education, Inc. All rights reserved.


1 // Fig. 3.9: GradeBook.h
31
2 // GradeBook class definition in a separate file from main. Outline
3 #include <iostream>
4 using std::cout;
5 using std::endl; Class definition is in a header file
6
fig03_09.cpp
7 #include <string> // class GradeBook uses C++ standard string class
8 using std::string;
(1 of 2)
9
10 // GradeBook class definition
11 class GradeBook
12 {
13 public:
14 // constructor initializes courseName with string supplied as argument
15 GradeBook( string name )
16 {
17 setCourseName( name ); // call set function to initialize courseName
18 } // end GradeBook constructor
19
20 // function to set the course name
21 void setCourseName( string name )
22 {
23 courseName = name; // store the course name in the object
24 } // end function setCourseName
25

 2006 Pearson Education,


Inc. All rights reserved.
26 // function to get the course name
32
27 string getCourseName()
Outline
28 {
29 return courseName; // return object's courseName
30 } // end function getCourseName
31 fig03_09.cpp
32 // display a welcome message to the GradeBook user
33 void displayMessage() (2 of 2)
34 {
35 // call getCourseName to get the courseName
36 cout << "Welcome to the grade book for\n" << getCourseName()
37 << "!" << endl;
38 } // end function displayMessage
39 private:
40 string courseName; // course name for this GradeBook
41 }; // end class GradeBook

 2006 Pearson Education,


Inc. All rights reserved.
1 // Fig. 3.10: fig03_10.cpp
33
2 // Including class GradeBook from file GradeBook.h for use in main.
Outline
3 #include <iostream>
4 using std::cout;
5 using std::endl;
6 fig03_10.cpp
7 #include "GradeBook.h" // include definition of class GradeBook
8 (1 of 1)
9 // function main begins program execution
10 int main()
11 {
12 // create two GradeBook objects Including the header file causes the class
13 GradeBook gradeBook1( "CS101 Introduction definition to be copied
to C++ Programming" ); into the file
14 GradeBook gradeBook2( "CS102 Data Structures in C++" );
15
16 // display initial value of courseName for each GradeBook
17 cout << "gradeBook1 created for course: " << gradeBook1.getCourseName()
18 << "\ngradeBook2 created for course: " << gradeBook2.getCourseName()
19 << endl;
20 return 0; // indicate successful termination
21 } // end main

gradeBook1 created for course: CS101 Introduction to C++ Programming


gradeBook2 created for course: CS102 Data Structures in C++

 2006 Pearson Education,


Inc. All rights reserved.
34

3.8 Placing a Class in a Separate File


for Reusability (Cont.)
• #include preprocessor directive
– Used to include header files
• Instructs C++ preprocessor to replace directive with a copy
of the contents of the specified file
– Quotes indicate user-defined header files
• Preprocessor first looks in current directory
– If the file is not found, looks in C++ Standard Library
directory
– Angle brackets indicate C++ Standard Library
• Preprocessor looks only in C++ Standard Library directory

 2006 Pearson Education, Inc. All rights reserved.


35

3.8 Placing a Class in a Separate File


for Reusability (Cont.)
• Creating objects
– Compiler must know size of object
• C++ objects typically contain only data members
• Compiler creates one copy of class’s member functions
– This copy is shared among all the class’s objects

 2006 Pearson Education, Inc. All rights reserved.


36

3.9 Separating Interface from


Implementation
• Interface
– Describes what services a class’s clients can use and how to
request those services
• But does not reveal how the class carries out the services
• A class definition that lists only member function names,
return types and parameter types
– Function prototypes
– A class’s interface consists of the class’s public member
functions (services)
• Separating interface from implementation
– Client code should not break if implementation changes, as
long as interface stays the same

 2006 Pearson Education, Inc. All rights reserved.


37

3.9 Separating Interface from


Implementation (Cont.)
• Separating interface from implementation (Cont.)
– Define member functions outside the class definition, in a
separate source-code file
• In source-code file for a class
– Use binary scope resolution operator (::) to tie each
member function to the class definition
• Implementation details are hidden
– Client code does not need to know the implementation
– In header file for a class
• Function prototypes describe the class’s public interface

 2006 Pearson Education, Inc. All rights reserved.


1 // Fig. 3.11: GradeBook.h
38
2 // GradeBook class definition. This file presents GradeBook's public
Outline
3 // interface without revealing the implementations of GradeBook's member
4 // functions, which are defined in GradeBook.cpp.
5 #include <string> // class GradeBook uses C++ standard string class
6 using std::string; fig03_11.cpp
7
8 // GradeBook class definition Interface contains data members (1 of 1)
9 class GradeBook and member function prototypes
10 {
11 public:
12 GradeBook( string ); // constructor that initializes courseName
13 void setCourseName( string ); // function that sets the course name
14 string getCourseName(); // function that gets the course name
15 void displayMessage(); // function that displays a welcome message
16 private:
17 string courseName; // course name for this GradeBook
18 }; // end class GradeBook

 2006 Pearson Education,


Inc. All rights reserved.
1 // Fig. 3.12: GradeBook.cpp
39
2 // GradeBook member-function definitions. This file contains
Outline
3 // implementations of the member functions prototyped in GradeBook.h.
4 #include <iostream>
GradeBook implementation is
5 using std::cout;
6
placed in a separate source-code file
using std::endl; fig03_12.cpp
7
8 #include "GradeBook.h" // include definition of class GradeBook (1 of 2)
9
Include
10 // constructor initializes courseName with string supplied as argument the header file to access
11 GradeBook::GradeBook( string name ) the class name GradeBook
12 {
13 setCourseName( name ); // call set function to initialize courseName
14 } // end GradeBook constructor
15 Binary scope resolution operator
16 // function to set the course name ties a function to its class
17 void GradeBook::setCourseName( string name )
18 {
19 courseName = name; // store the course name in the object
20 } // end function setCourseName
21

 2006 Pearson Education,


Inc. All rights reserved.
22 // function to get the course name
40
23 string GradeBook::getCourseName()
Outline
24 {
25 return courseName; // return object's courseName
26 } // end function getCourseName
27 fig03_12.cpp
28 // display a welcome message to the GradeBook user
29 void GradeBook::displayMessage() (2 of 2)
30 {
31 // call getCourseName to get the courseName
32 cout << "Welcome to the grade book for\n" << getCourseName()
33 << "!" << endl;
34 } // end function displayMessage

 2006 Pearson Education,


Inc. All rights reserved.
1 // Fig. 3.13: fig03_13.cpp
41
2 // GradeBook class demonstration after separating
Outline
3 // its interface from its implementation.
4 #include <iostream>
5 using std::cout;
6 using std::endl; fig03_13.cpp
7
8 #include "GradeBook.h" // include definition of class GradeBook (1 of 1)
9
10 // function main begins program execution
11 int main()
12 {
13 // create two GradeBook objects
14 GradeBook gradeBook1( "CS101 Introduction to C++ Programming" );
15 GradeBook gradeBook2( "CS102 Data Structures in C++" );
16
17 // display initial value of courseName for each GradeBook
18 cout << "gradeBook1 created for course: " << gradeBook1.getCourseName()
19 << "\ngradeBook2 created for course: " << gradeBook2.getCourseName()
20 << endl;
21 return 0; // indicate successful termination
22 } // end main

gradeBook1 created for course: CS101 Introduction to C++ Programming


gradeBook2 created for course: CS102 Data Structures in C++

 2006 Pearson Education,


Inc. All rights reserved.
42

3.9 Separating Interface from


Implementation (Cont.)
• The Compilation and Linking Process
– Source-code file is compiled to create the class’s object code
(source-code file must #include header file)
• Class implementation programmer only needs to provide
header file and object code to client
– Client must #include header file in their own code
• So compiler can ensure that the main function creates and
manipulates objects of the class correctly
– To create executable application
• Object code for client code must be linked with the object
code for the class and the object code for any C++ Standard
Library object code used in the application

 2006 Pearson Education, Inc. All rights reserved.


43

Fig.3.14 | Compilation and linking process that produces an executable application.

 2006 Pearson Education, Inc. All rights reserved.


44

3.10 Validating Data with set


Functions
• set functions can validate data
– Known as validity checking
– Keeps object in a consistent state
• The data member contains a valid value
– Can return values indicating that attempts were made to
assign invalid data
• string member functions
– length returns the number of characters in the string
– Substr returns specified substring within the string

 2006 Pearson Education, Inc. All rights reserved.


1 // Fig. 3.15: GradeBook.h
45
2 // GradeBook class definition presents the public interface of
Outline
3 // the class. Member-function definitions appear in GradeBook.cpp.
4 #include <string> // program uses C++ standard string class
5 using std::string;
6 fig03_15.cpp
7 // GradeBook class definition
8 class GradeBook (1 of 1)
9 {
10 public:
11 GradeBook( string ); // constructor that initializes a GradeBook object
12 void setCourseName( string ); // function that sets the course name
13 string getCourseName(); // function that gets the course name
14 void displayMessage(); // function that displays a welcome message
15 private:
16 string courseName; // course name for this GradeBook
17 }; // end class GradeBook

 2006 Pearson Education,


Inc. All rights reserved.
1 // Fig. 3.16: GradeBook.cpp 46
2 // Implementations of the GradeBook member-function definitions. Outline
3 // The setCourseName function performs validation.
4 #include <iostream>
5 using std::cout;
6 using std::endl; fig03_16.cpp
7
8 #include "GradeBook.h" // include definition of class GradeBook (1 of 2)
9
10 // constructor initializes courseName with string supplied as argument
11 GradeBook::GradeBook( string name )
Constructor calls set function
12 {
13 setCourseName( name ); // validate and store courseName
to perform validity checking
14 } // end GradeBook constructor
15
16 // function that sets the course name;
17 // ensures that the course name has at most 25 characters
set functions perform validity checking to
18 void GradeBook::setCourseName( string name )
keep courseName in a consistent state
19 {
20 if ( name.length() <= 25 ) // if name has 25 or fewer characters
21 courseName = name; // store the course name in the object
22

 2006 Pearson Education,


Inc. All rights reserved.
23 if ( name.length() > 25 ) // if name has more than 25 characters
47
24 {
Outline
25 // set courseName to first 25 characters of parameter name
26 courseName = name.substr( 0, 25 ); // start at 0, length of 25
27
28 cout << "Name \"" << name << "\" exceeds maximum length (25).\n" fig03_16.cpp
29 << "Limiting courseName to first 25 characters.\n" << endl;
30 } // end if (2 of 2)
31 } // end function setCourseName
32
33 // function to get the course name
34 string GradeBook::getCourseName()
35 {
36 return courseName; // return object's courseName
37 } // end function getCourseName
38
39 // display a welcome message to the GradeBook user
40 void GradeBook::displayMessage()
41 {
42 // call getCourseName to get the courseName
43 cout << "Welcome to the grade book for\n" << getCourseName()
44 << "!" << endl;
45 } // end function displayMessage

 2006 Pearson Education,


Inc. All rights reserved.
1 // Fig. 3.17: fig03_17.cpp 48
2 // Create and manipulate a GradeBook object; illustrate validation. Outline
3 #include <iostream>
4 using std::cout;
5 using std::endl;
6 fig03_17.cpp
7 #include "GradeBook.h" // include definition of class GradeBook
8 Constructor will call set function
(1 of 2)
9 // function main begins program execution to perform validity checking
10 int main()
11 {
12 // create two GradeBook objects;
13 // initial course name of gradeBook1 is too long
14 GradeBook gradeBook1( "CS101 Introduction to Programming in C++" );
15 GradeBook gradeBook2( "CS102 C++ Data Structures" );
16

 2006 Pearson Education,


Inc. All rights reserved.
17 // display each GradeBook's courseName
49
18 cout << "gradeBook1's initial course name is: "
Outline
19 << gradeBook1.getCourseName()
20 << "\ngradeBook2's initial course name is: "
21 << gradeBook2.getCourseName() << endl;
22 fig03_17.cpp
23 // modify myGradeBook's courseName (with a valid-length string)
24 gradeBook1.setCourseName( "CS101 C++ Programming" ); (2 of 2)
25
26 // display each GradeBook's courseName
27 cout << "\ngradeBook1's course name is: "
28 << gradeBook1.getCourseName() Call set function to perform validity checking
29 << "\ngradeBook2's course name is: "
30 << gradeBook2.getCourseName() << endl;
31 return 0; // indicate successful termination
32 } // end main

Name "CS101 Introduction to Programming in C++" exceeds maximum length (25).


Limiting courseName to first 25 characters.

gradeBook1's initial course name is: CS101 Introduction to Pro


gradeBook2's initial course name is: CS102 C++ Data Structures

gradeBook1's course name is: CS101 C++ Programming


gradeBook2's course name is: CS102 C++ Data Structures

 2006 Pearson Education,


Inc. All rights reserved.

You might also like