A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.
-
Upload
egbert-patterson -
Category
Documents
-
view
231 -
download
1
Transcript of A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.
![Page 1: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/1.jpg)
A FIRST BOOK OF C++
CHAPTER 10
INTRODUCTION TO CLASSES
![Page 2: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/2.jpg)
OBJECTIVES
In this chapter, you will learn about:
• Object-Based Programming• Creating Your Own Classes• Constructors• Using Classes with Examples• Class Scope and Duration Categories• Common Programming Errors• Modeling Objects
A First Book of C++ 4th Edition 2
![Page 3: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/3.jpg)
OBJECT-BASED PROGRAMMINGObject: well suited to programming representation
• Can be specified by two basic characteristics:• State: how object appears at the moment• Behavior: how object reacts to external inputs
Example of an object: an elevator
• State: size, location, interior decoration• Behavior: reaction when one of its buttons is pushed
A First Book of C++ 4th Edition 3
![Page 4: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/4.jpg)
A CLASS IS A PLAN
Class can be considered a construction plan for objects and how they can be used
• Plan lists the required data items and supplies instructions for using the data
Many objects can be created from the same class
• Each different object type requires its own class
A First Book of C++ 4th Edition 4
![Page 5: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/5.jpg)
FROM RECIPE TO CLASS
Class can be considered the plan or recipe from which programming objects are created
Class typically contains sections for ingredients and methods
Class declaration section provides:
• List of data “ingredients” • List of method names and data types
A First Book of C++ 4th Edition 5
![Page 6: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/6.jpg)
CREATING YOUR OWN CLASSES
Class: programmer-defined data type
• Also called an abstract data type• Combination of data and their associated operations
(capabilities)
A C++ class provides mechanism for packaging data structure and functions together in self-contained unit
A First Book of C++ 4th Edition 6
![Page 7: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/7.jpg)
CLASS CONSTRUCTION
Two components:
• Declaration section: declares data types and function for class
• Implementation section: defines functions whose prototypes were declared in declaration section
Class members:
• Data members (instance variables)• Member functions
A First Book of C++ 4th Edition 7
![Page 8: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/8.jpg)
CLASS CONSTRUCTION (CONT'D.)
A First Book of C++ 4th Edition 8
![Page 9: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/9.jpg)
CLASS CONSTRUCTION (CONT'D.)
Example of class declaration section:
class Date{ private: int month;
int day;int year;
public:Date(int = 7, int = 4, int = 2012);void setDate(int, int, int);void showDate(void);
}; // this is a declaration - don't forget the semicolon
A First Book of C++ 4th Edition 9
![Page 10: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/10.jpg)
CLASS CONSTRUCTION (CONT'D.)
Declaration section of class definition
• Enclosed in braces• Includes variables (data members) and function declarations• Keywords private and public: define access rights
• private: class members (month, day, and year) can only be accessed using class functions
• Enforces data security (data hiding)
• public: class members (functions Date(), setDate(), showDate()) can be used outside of the class
A First Book of C++ 4th Edition 10
![Page 11: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/11.jpg)
CLASS CONSTRUCTION (CONT'D.)
Constructor method: initializes class data members with values
• Constructor function (Date()) has same name as the class• Default values for constructor are 7, 4, 2012• Constructor function has no return type (a requirement for this
special function)Two remaining member functions: setDate() and showDate() declared as returning no value (void)
A First Book of C++ 4th Edition 11
![Page 12: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/12.jpg)
CLASS CONSTRUCTION (CONT'D.)
A First Book of C++ 4th Edition 12
![Page 13: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/13.jpg)
CLASS CONSTRUCTION (CONT'D.)
A First Book of C++ 4th Edition 13
![Page 14: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/14.jpg)
CLASS CONSTRUCTION (CONT'D.)
Implementation section of class definition
• As shown in Program 10.1• Except for constructor function, which has no return data type
• Functions: defined the same as other C++ functions but also include scope resolution operator
• To identify function as member of class
• Implementation and declaration sections declare a class• Variables of the class (objects) must still be defined
A First Book of C++ 4th Edition 14
![Page 15: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/15.jpg)
CLASS CONSTRUCTION (CONT'D.)
Example: Creation of objects of Date class in main() function of Program 10.1
int main(){ Date a, b, c(4,1,2000); // declare 3 objects b.setDate(12,25,2009); // assign values to b's // data membersa.showDate(); // display object a's values
b.showDate(); // display object b's values c.showDate(); // display object c's values cout << endl; return 0;}
A First Book of C++ 4th Edition 15
![Page 16: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/16.jpg)
CLASS CONSTRUCTION (CONT'D.)
Description of main():
• Three objects of class Date defined• Constructor function: Date(), automatically called
• Memory allocated for each object
• Data members of the objects initialized
• Object a: no parameters assigned; therefore, defaults are used:
a.month = 7
a.day = 4
a.year = 2012
A First Book of C++ 4th Edition 16
![Page 17: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/17.jpg)
CLASS CONSTRUCTION (CONT'D.)
Description of main(): (cont'd.)
• Notation to create objects:objectName.attributeName
• Object b: no parameters assigned, same defaults used• Object c: defined with arguments 4, 1, and 1998
• Three arguments passed into constructor function resulting in initialization of c’s data members as:
c.month = 4
c.day = 1
c.year = 2000
A First Book of C++ 4th Edition 17
![Page 18: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/18.jpg)
CLASS CONSTRUCTION (CONT'D.)
Description of main(): (cont'd.)
• All functions of class Date are public; therefore:• b.setDate(12, 25, 2007) is a valid statement inside main() function
• Calls setDate() function with arguments 12 ,25, 2009
• Important distinction: data members of class Date are private
• The statement b.month = 12 is invalid in main()
A First Book of C++ 4th Edition 18
![Page 19: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/19.jpg)
CLASS CONSTRUCTION (CONT'D.)
Description of main(): (cont'd.)
• Last three statements in main() call showDate() to operate on a, b, and c objects
• Calls result in output displayed by Program 10.1
The date is 07/04/12
The date is 12/25/09
The date is 04/01/00• The statement cout << a; is invalid within main()
• cout does not know how to handle an object of class Date
A First Book of C++ 4th Edition 19
![Page 20: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/20.jpg)
TERMINOLOGY
Class: programmer-defined data type
Objects (instances): created from classes
• Relation of objects to classes is similar to relation of variables to C++ built-in data types
• int a; // a is a variable of type integer • Date a; // a is an object of class Date
• Instantiation: process of creating a new object• Creates new set of data members belonging to new object:
determines the object’s state
A First Book of C++ 4th Edition 20
![Page 21: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/21.jpg)
TERMINOLOGY (CONT'D.)
Interface: part of class declaration section
• Includes:• Class’s public member function declarations
• Supporting comments
Implementation consists of:
• Implementation section of class definition• Private member functions
• Public member functions
• Private data members from class declaration section
A First Book of C++ 4th Edition 21
![Page 22: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/22.jpg)
TERMINOLOGY (CONT'D.)
Internal construction of class is not relevant to programmer who just wishes to use class
Implementation can and should be hidden from all users
A First Book of C++ 4th Edition 22
![Page 23: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/23.jpg)
CONSTRUCTORS
A function that has the same name as its class
• Multiple constructors can be defined for a class• Each must be distinguishable by the number and types of its
parameters
• If no constructor function is written, compiler assigns default constructor
Purpose: initialize a new object’s data members
• May perform other tasks
A First Book of C++ 4th Edition 23
![Page 24: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/24.jpg)
CONSTRUCTORS (CONT'D.)Format: same name as class to which it belongs
• Must have no return type (not even void)Default constructor: does not require arguments when called
• Two cases:• No parameters declared
• As with compiler-supplied default constructor• Arguments have already been given default values in valid
prototype statement: • Date (int = 7, int = 4, int = 2012)• Declaration Date a; initializes the a object with default
values: 7, 4, 2012
A First Book of C++ 4th Edition 24
![Page 25: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/25.jpg)
CONSTRUCTORS (CONT'D.)Sample class declaration:
class Date{ private: int month, day, year; public: void setDate(int, int, int); void showDate()};
A First Book of C++ 4th Edition 25
![Page 26: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/26.jpg)
CONSTRUCTORS (CONT'D.)
No constructor has been included
• Compiler assigns a do-nothing default constructor equivalent to: Date (void) { }
• This constructor expects no parameters and has an empty body
A First Book of C++ 4th Edition 26
![Page 27: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/27.jpg)
CONSTRUCTORS (CONT'D.)
A First Book of C++ 4th Edition 27
![Page 28: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/28.jpg)
CONSTRUCTORS (CONT'D.)
Use of constructor in main() : Program 10.2
A First Book of C++ 4th Edition 28
int main(){ Date a; // declare an object Date b; // declare an object Date c (4,1,2009); // declare an object return 0;}
![Page 29: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/29.jpg)
CONSTRUCTORS (CONT'D.)
Output from Program 10.2
Created a new data object with data values 7, 4, 2012
Created a new data object with data values 7, 4, 2012
Created a new data object with data values 4, 1, 2009
A First Book of C++ 4th Edition 29
![Page 30: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/30.jpg)
CALLING CONSTRUCTORSConstructors are called whenever an object is created
• Date c(4,1,2009);• Date c = Date(4,1,2009);
C style of initialization
• Date c = 8;
Object should never be declared with empty parentheses
A First Book of C++ 4th Edition 30
![Page 31: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/31.jpg)
OVERLOADED AND INLINE CONSTRUCTORS
Constructors are called automatically each time an object is created
• Other methods must be called explicitly by name
Constructors can:
• Have default arguments (as in Program 10.1)• Be overloaded• Be written as inline functions
A First Book of C++ 4th Edition 31
![Page 32: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/32.jpg)
DESTRUCTORSCounterpart of constructor function
• Has same name as constructor • Preceded with a tilde (~)
• Date class constructor: ~Date()Default destructor
• Do-nothing destructor provided by C++ compiler in absence of explicit destructor
Can only be one destructor per class
• Destructors take no values and return no arguments
A First Book of C++ 4th Edition 32
![Page 33: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/33.jpg)
ARRAYS OF OBJECTS
Declaring array of objects is the same as declaring array of C++ built-in type
• Example: Date theDate[5];• Creates five objects named theDate[0] through theDate[4]
Member functions for theDate array objects are called using:
objectName.functionName
A First Book of C++ 4th Edition 33
![Page 34: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/34.jpg)
EXAMPLES
In the first example, you develop a class for determining the floor area of a rectangular room
In the second example, you construct a single elevator object
A First Book of C++ 4th Edition 34
![Page 35: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/35.jpg)
EXAMPLE 1: CONSTRUCTING A ROOM OBJECT
Create class from which room type objects can be constructed
Solution:
• One type of object: rectangular-shaped room• Represented by two double precision variables: length and width
• Functions needed:• Constructor: to specify an actual length and width value when
a room is instantiated
A First Book of C++ 4th Edition 35
![Page 36: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/36.jpg)
EXAMPLE 1: CONSTRUCTING A ROOM OBJECT (CONT'D.)
• Functions needed: (cont'd.)• Accessor: to display room’s length and width
• Mutator: to change above values
• Function to calculate room’s floor area from its length and width values
A First Book of C++ 4th Edition 36
![Page 37: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/37.jpg)
EXAMPLE 2: CONSTRUCTING AN ELEVATOR OBJECT
Simulate an elevator’s operation
Solution:
• One type of object: elevator• Three attributes: elevator’s number, current location, and
highest floor it can reach
• Functions needed:• Constructor: initializes the elevator’s number, starting floor
position, and highest floor
• request(): to alter the elevator’s position
A First Book of C++ 4th Edition 37
![Page 38: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/38.jpg)
CLASS SCOPE AND DURATION CATEGORIES
Scope of an identifier: defines the portion of a program where the identifier is valid
Class data members are local to the class in which they’re declared
Class method names are local to the class they’re declared in and can be used only by objects declared for the class
A First Book of C++ 4th Edition 38
![Page 39: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/39.jpg)
CLASS SCOPE AND DURATION CATEGORIES (CONT’D.)
A First Book of C++ 4th Edition 39
![Page 40: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/40.jpg)
STATIC CLASS MEMBERS
As each class object is created, it gets its own block of memory for its data members
In some cases, it’s convenient for every created object to share the same memory location for a specific variable
• C++ handles this situation by declaring a class variable to be static
Static class variables share the same storage space for all class objects
• They act as global variables for the class and provide a means of communication between objects
A First Book of C++ 4th Edition 40
![Page 41: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/41.jpg)
FRIEND FUNCTIONS
Friend functions
• Nonmember methods that are granted the same privileges as its member methods
Friends list
• List of friend functions• Series of method prototype declarations preceded with the
keyword friend and included in the class declaration section
A First Book of C++ 4th Edition 41
![Page 42: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/42.jpg)
COMMON PROGRAMMING ERRORS
Failing to terminate class declaration with semicolon
Including return type with constructor’s prototype
Failing to include return type with other function’s prototype
Using same name for data member as for member method
Defining more than one default constructor for class
A First Book of C++ 4th Edition 42
![Page 43: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/43.jpg)
COMMON PROGRAMMING ERRORS (CONT'D.)
Forgetting to include class name and scope operator, ::, in the header line of all member methods defined in class implementation section
Using the static keyword when defining a static data member or member method
Using the friend keyword when defining a friend function
Failing to instantiate static data members before creating class objects that must access these data members
A First Book of C++ 4th Edition 43
![Page 44: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/44.jpg)
SUMMARY
Class: programmer-defined data type
• Class definition: includes declaration and implementation sections
• Class members: variables and functions
Objects: same relation to class as variables have to C++ built-in data types
private keyword: private class members can only be accessed by member functions
A First Book of C++ 4th Edition 44
![Page 45: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/45.jpg)
SUMMARY (CONT'D.)
Class functions: may be written inline or defined in class implementation section
Constructor function: automatically called each time an object is declared
• If none defined, compiler will supply default constructor
Default constructor: constructor that does not require arguments
• One default constructor per class
A First Book of C++ 4th Edition 45
![Page 46: A FIRST BOOK OF C++ CHAPTER 10 INTRODUCTION TO CLASSES.](https://reader035.fdocuments.in/reader035/viewer/2022081514/56649f0d5503460f94c21f31/html5/thumbnails/46.jpg)
SUMMARY (CONT'D.)Objects created using either C or C++ style of declaration:
• C++: Date a, b, c(12, 25, 2002)• C: Date c = Date(12,25,2006)
Constructors may be overloaded
If constructor is defined, user-defined default constructor should be written
• Compiler will not provide itDestructor: called when object goes out of scope
• Takes no arguments, returns no value
A First Book of C++ 4th Edition 46