Object-Oriented Programming Using C++ Third Edition Chapter 7 Using Classes
Creating Classes • A class is a category of objects; it is a new data type – Classes provide a description of an object – Classes provide a convenient way to group related data and the functions that use the data – When you create an object from the class, you automatically create all the related fields – You think about them and manipulate them as real- life classes and objects • Abstract data type (ADT): a type that you define Object-Oriented Programming Using C++, Third Edition 2
Creating Classes (continued) Student aSophomore; aSophomore.idNum = 7645; Error! By default, all members of a cout<<aSophomore.idNum; class are private Object-Oriented Programming Using C++, Third Edition 3
Creating Classes (continued) Access modifier Object-Oriented Programming Using C++, Third Edition 4
Encapsulating Class Components • To encapsulate components is to contain them – Encapsulation is an example of a black box • An interface intercedes between you and the inner workings of an object Object-Oriented Programming Using C++, Third Edition 5
Designing Classes • If you need a class for students, you should ask: – What shall we call it? – What are its attributes? – What methods are needed by Student? – Any other methods? • In most cases, you declare both fields and functions – You declare a field using a data type and an identifier – You declare a function by writing its prototype, which serves as the interface to the function Object-Oriented Programming Using C++, Third Edition 6
Designing Classes • To instantiate an object is to declare or create it Student aSophomore; aSophomore.displayStudentData(); • A function that uses your class is a class client Object-Oriented Programming Using C++, Third Edition 7
Implementing Class Functions • When you construct a class, you create two parts: – Declaration section: contains the class name, variables (attributes), and function prototypes – Implementation section: contains the functions • Use both the class name and the scope resolution operator (::) when you implement a class function Object-Oriented Programming Using C++, Third Edition 8
Implementing Class Functions (continued) Object-Oriented Programming Using C++, Third Edition 9
Using Public Functions to Alter Private Data Object-Oriented Programming Using C++, Third Edition 10
Using Public Functions to Alter Private Data (continued) … Object-Oriented Programming Using C++, Third Edition 11
Using Private Functions and Public Data Object-Oriented Programming Using C++, Third Edition 12
… … Object-Oriented Programming Using C++, Third Edition 13
Considering Scope when Defining Member Functions Object-Oriented Programming Using C++, Third Edition 14
Considering Scope when Defining Member Functions (continued) Object-Oriented Programming Using C++, Third Edition 15
Using Static Class Members • When a class field is static, only one memory location is allocated – All members of the class share a single storage location for a static data member of that same class • When you create a non-static variable within a function, a new variable is created every time you call that function • When you create a static variable, the variable maintains its memory address and previous value for the life of the program Object-Oriented Programming Using C++, Third Edition 16
Defining Static Data Members Since it is not const, anyone can modify it Object-Oriented Programming Using C++, Third Edition 17
Defining Static Data Members (continued) • Static variables are sometimes called class variables, class fields, or class-wide fields because they don’t belong to a specific object; they belong to the class Object-Oriented Programming Using C++, Third Edition 18
Using Static Functions • A static function can be used without a declared object • Non-static functions can access static variables (provided there is an object) • Static functions cannot access non-static variables Object-Oriented Programming Using C++, Third Edition 19
Using Static Functions (continued) Object-Oriented Programming Using C++, Third Edition 20
Understanding the this Pointer … … … Object-Oriented Programming Using C++, Third Edition 21
Understanding the this Pointer (continued) Object-Oriented Programming Using C++, Third Edition 22
Understanding the this Pointer (continued) • The this pointer holds the memory address of the current object that is using the function • The this pointer is automatically supplied when you call a non-static member function of a class – For example, clerk.displayValues(); – Is actually displayValues(&clerk); • The actual argument list used by the compiler for displayValues() is displayValues(Employee *this) • The this pointer is a constant pointer Object-Oriented Programming Using C++, Third Edition 23
Using the this Pointer Explicitly Object-Oriented Programming Using C++, Third Edition 24
Using the Pointer-to-Member Operator Object-Oriented Programming Using C++, Third Edition 25
Understanding Polymorphism • Polymorphism is the object-oriented program feature that allows the same operation to be carried out differently depending on the object • For example, – clerk.displayValues(); – shirt.displayValues(); – XYZCompany.displayValues(); Object-Oriented Programming Using C++, Third Edition 26
Understanding Polymorphism (continued) Object-Oriented Programming Using C++, Third Edition 27
You Do It: Creating and Using a Class class CollegeCourse { private: string department; int courseNum; int seats; public: void setDepartmentAndCourse(string, int); void setSeats(int); void displayCourseData(); }; Object-Oriented Programming Using C++, Third Edition 28
Using a static Field class Letter { private: string title; string recipient; static int count; public: void setRecipient(string, string); void displayGreeting(); static void displayCount(); }; Object-Oriented Programming Using C++, Third Edition 29
Understanding How static and Non-static Fields are Stored Object-Oriented Programming Using C++, Third Edition 30
Summary • A class is a category of objects • When you create a class, you hide, or encapsulate, the individual components • When you construct a class, you create the declaration section and the implementation section • When you create a class, usually you want to make data items private, and to make functions public • The scope resolution operator (::) identifies a member function as being in scope within a class Object-Oriented Programming Using C++, Third Edition 31
Summary (continued) • Each class object gets its own block of memory for its data members • You can access a static, class-wide field using a static function • One copy of each class member function is stored no matter how many objects exist • Within any member function, you can explicitly use the this pointer to access the object’s data fields • Polymorphism allows the same operation to be carried out differently depending on the object Object-Oriented Programming Using C++, Third Edition 32

Classes cpp intro thomson bayan college

  • 1.
    Object-Oriented Programming Using C++ Third Edition Chapter 7 Using Classes
  • 2.
    Creating Classes • Aclass is a category of objects; it is a new data type – Classes provide a description of an object – Classes provide a convenient way to group related data and the functions that use the data – When you create an object from the class, you automatically create all the related fields – You think about them and manipulate them as real- life classes and objects • Abstract data type (ADT): a type that you define Object-Oriented Programming Using C++, Third Edition 2
  • 3.
    Creating Classes (continued) StudentaSophomore; aSophomore.idNum = 7645; Error! By default, all members of a cout<<aSophomore.idNum; class are private Object-Oriented Programming Using C++, Third Edition 3
  • 4.
    Creating Classes (continued) Access modifier Object-Oriented Programming Using C++, Third Edition 4
  • 5.
    Encapsulating Class Components •To encapsulate components is to contain them – Encapsulation is an example of a black box • An interface intercedes between you and the inner workings of an object Object-Oriented Programming Using C++, Third Edition 5
  • 6.
    Designing Classes • Ifyou need a class for students, you should ask: – What shall we call it? – What are its attributes? – What methods are needed by Student? – Any other methods? • In most cases, you declare both fields and functions – You declare a field using a data type and an identifier – You declare a function by writing its prototype, which serves as the interface to the function Object-Oriented Programming Using C++, Third Edition 6
  • 7.
    Designing Classes • Toinstantiate an object is to declare or create it Student aSophomore; aSophomore.displayStudentData(); • A function that uses your class is a class client Object-Oriented Programming Using C++, Third Edition 7
  • 8.
    Implementing Class Functions •When you construct a class, you create two parts: – Declaration section: contains the class name, variables (attributes), and function prototypes – Implementation section: contains the functions • Use both the class name and the scope resolution operator (::) when you implement a class function Object-Oriented Programming Using C++, Third Edition 8
  • 9.
    Implementing Class Functions (continued) Object-Oriented Programming Using C++, Third Edition 9
  • 10.
    Using Public Functionsto Alter Private Data Object-Oriented Programming Using C++, Third Edition 10
  • 11.
    Using Public Functionsto Alter Private Data (continued) … Object-Oriented Programming Using C++, Third Edition 11
  • 12.
    Using Private Functionsand Public Data Object-Oriented Programming Using C++, Third Edition 12
  • 13.
    … Object-Oriented Programming Using C++, Third Edition 13
  • 14.
    Considering Scope whenDefining Member Functions Object-Oriented Programming Using C++, Third Edition 14
  • 15.
    Considering Scope whenDefining Member Functions (continued) Object-Oriented Programming Using C++, Third Edition 15
  • 16.
    Using Static ClassMembers • When a class field is static, only one memory location is allocated – All members of the class share a single storage location for a static data member of that same class • When you create a non-static variable within a function, a new variable is created every time you call that function • When you create a static variable, the variable maintains its memory address and previous value for the life of the program Object-Oriented Programming Using C++, Third Edition 16
  • 17.
    Defining Static DataMembers Since it is not const, anyone can modify it Object-Oriented Programming Using C++, Third Edition 17
  • 18.
    Defining Static DataMembers (continued) • Static variables are sometimes called class variables, class fields, or class-wide fields because they don’t belong to a specific object; they belong to the class Object-Oriented Programming Using C++, Third Edition 18
  • 19.
    Using Static Functions •A static function can be used without a declared object • Non-static functions can access static variables (provided there is an object) • Static functions cannot access non-static variables Object-Oriented Programming Using C++, Third Edition 19
  • 20.
    Using Static Functions(continued) Object-Oriented Programming Using C++, Third Edition 20
  • 21.
    Understanding the thisPointer … … … Object-Oriented Programming Using C++, Third Edition 21
  • 22.
    Understanding the thisPointer (continued) Object-Oriented Programming Using C++, Third Edition 22
  • 23.
    Understanding the thisPointer (continued) • The this pointer holds the memory address of the current object that is using the function • The this pointer is automatically supplied when you call a non-static member function of a class – For example, clerk.displayValues(); – Is actually displayValues(&clerk); • The actual argument list used by the compiler for displayValues() is displayValues(Employee *this) • The this pointer is a constant pointer Object-Oriented Programming Using C++, Third Edition 23
  • 24.
    Using the thisPointer Explicitly Object-Oriented Programming Using C++, Third Edition 24
  • 25.
    Using the Pointer-to-MemberOperator Object-Oriented Programming Using C++, Third Edition 25
  • 26.
    Understanding Polymorphism • Polymorphismis the object-oriented program feature that allows the same operation to be carried out differently depending on the object • For example, – clerk.displayValues(); – shirt.displayValues(); – XYZCompany.displayValues(); Object-Oriented Programming Using C++, Third Edition 26
  • 27.
    Understanding Polymorphism (continued) Object-OrientedProgramming Using C++, Third Edition 27
  • 28.
    You Do It:Creating and Using a Class class CollegeCourse { private: string department; int courseNum; int seats; public: void setDepartmentAndCourse(string, int); void setSeats(int); void displayCourseData(); }; Object-Oriented Programming Using C++, Third Edition 28
  • 29.
    Using a staticField class Letter { private: string title; string recipient; static int count; public: void setRecipient(string, string); void displayGreeting(); static void displayCount(); }; Object-Oriented Programming Using C++, Third Edition 29
  • 30.
    Understanding How staticand Non-static Fields are Stored Object-Oriented Programming Using C++, Third Edition 30
  • 31.
    Summary • A classis a category of objects • When you create a class, you hide, or encapsulate, the individual components • When you construct a class, you create the declaration section and the implementation section • When you create a class, usually you want to make data items private, and to make functions public • The scope resolution operator (::) identifies a member function as being in scope within a class Object-Oriented Programming Using C++, Third Edition 31
  • 32.
    Summary (continued) • Eachclass object gets its own block of memory for its data members • You can access a static, class-wide field using a static function • One copy of each class member function is stored no matter how many objects exist • Within any member function, you can explicitly use the this pointer to access the object’s data fields • Polymorphism allows the same operation to be carried out differently depending on the object Object-Oriented Programming Using C++, Third Edition 32