Module 11
Module 11
Partha Pratim
Das Module 11: Programming in C++
Objectives & Classes and Objects
Outline
Classes
Objects
Data Members
Partha Pratim Das
Complex
Rectangle
Stack
Department of Computer Science and Engineering
Indian Institute of Technology, Kharagpur
Member
Functions
[email protected]
Complex
Rectangle
Stack
Module 11
Objectives &
Outline
Classes
Objects
Data Members
Complex
Rectangle
Stack
Member
Functions
Complex
Rectangle
Stack
this pointer
State of an
Object
Complex
Rectangle
Stack
Module 11
Data Members
this Pointer
Complex
Rectangle State of an Object
Stack
Member
Functions
Complex
Rectangle
Stack
this pointer
State of an
Object
Complex
Rectangle
Stack
Module 11
Data Members
this pointer
Complex
Rectangle
Stack
Member
Functions
Complex
Rectangle
Stack
this pointer
State of an
Object
Complex
Rectangle
Stack
Data Members
Thus, classes offer data abstraction / encapsulation of
Complex Object Oriented Programming
Rectangle
Stack
Classes are similar to structures that aggregate data logically
Member
Functions A class is defined by class keyword
Complex
Rectangle
Stack Classes provide access specifiers for members to enforce data
this pointer hiding that separates implementation from interface
State of an private - accessible inside the definition of the class
Object
Complex public - accessible everywhere
Rectangle
Stack A class is a blue print for its instances (objects)
Summary NPTEL MOOCs Programming in C++ Partha Pratim Das 5
Objects
Objects
Thus, classes offer data abstraction / encapsulation of
Object Oriented Programming
Data Members
Complex
Rectangle Classes are similar to structures that aggregate data logically
Stack
this pointer
State of an
Object
Complex
Rectangle
Stack
Member
Functions
Complex
Rectangle
Stack
this pointer
State of an
Object
Complex
Rectangle
Stack
this pointer // Call global fn. with ’c’ as param // Invoke method print of ’c’
print(c); c.print();
State of an
Object return 0; return 0;
Complex } }
Rectangle ----- -----
Stack |4.200000+j5.300000| = 6.762396 |4.2+j5.3| = 6.7624
Summary NPTEL MOOCs Programming in C++ Partha Pratim Das 12
Program 11.09/10: Rectangles:
Methods
Module 11 Using struct Using class
Objects
Data Members
Complex
Rectangle
Stack
Member
Functions
Complex
Rectangle
Stack
this pointer
State of an
Object
Complex
Rectangle
Stack
Member
Functions
Complex
Rectangle
Stack
this pointer
State of an
Object
Complex
Rectangle
Stack
Objectives & Type of this pointer for a class X object: X * const this;
Outline
this pointer is accessible only in methods
Classes
#include <iostream> using namespace std;
Objects
Objectives &
Outline X a; a.f(2, 3); X::f(&a, 2, 3); // &a = this
Classes
Objects
Use of this pointer
Data Members Distinguish member from non-member
Complex class X { public: int m1, m2;
Rectangle void f(int k1, int k2) {
Stack m1 = k1; // this->m1 (member) is valid; this->k1 is invalid
this->m2 = k2; // m2 (member) is valid; this->k2 is invalid
Member
}
Functions
};
Complex
Rectangle Explicit Use
Stack // Link the object
this pointer class DoublyLinkedNode { public: DoublyLinkedNode *prev, *next; int data;
void append(DoublyLinkedNode *x) { next = x; x->prev = this; }
State of an }
Object ---
Complex // Return the object
Rectangle Complex& inc() { ++re; ++im; return *this; }
Stack
Module 11
Data Members
this pointer
Complex
Rectangle
Stack
Member
Functions
Complex
Rectangle
Stack
this pointer
State of an
Object
Complex
Rectangle
Stack
Module 11
Objects
Data Members
Complex
Rectangle
Stack
Member
Functions
Complex
Rectangle
Stack
this pointer
State of an
Object
Complex
Rectangle
Stack
Module 11
The state of an object is determined by the combined value of
all its data members. Consider class Complex:
Partha Pratim
Das class Complex { public:
double re_, im_; // ordered tuple of data members decide the state at any time
Objectives &
double get_re { return re_; }
Outline
void set_re(double re) { re_ = re; }
Classes double get_im { return im_; }
void set_im(double im) { im_ = im; }
Objects }
State of an c.get_re();
Object // STATE 2 of c = {6.4, 5.3} // No change of state
Complex
Rectangle c.set_im(7.8);
Stack // STATE 3 of c = {6.4, 7.8}
Module 11
Consider class Point and class Rect:
Partha Pratim Data members of Rect class: Point TL; Point BR; // Point class type object
Das Data members of Point class: int x; int y
this pointer
State of an
Object
Complex
Rectangle
Stack
Module 11
Consider class Stack:
Partha Pratim Data members of Stack class: char data[5] and int top;
Das
Stack s;
// STATE 1 of s = {{?, ?, ?, ?, ?}, ?} // No data member is initialized
Objectives &
Outline s.top_ = -1;
// STATE 2 of s = {{?, ?, ?, ?, ?}, -1}
Classes
s.push(’b’);
Objects
// STATE 3 of s = {{’b’, ?, ?, ?, ?}, 0}
Data Members
s.push(’a’);
Complex
Rectangle
// STATE 4 of s = {{’b’, ’a’, ?, ?, ?}, 1}
Stack
s.empty();
Member // STATE 4 of s = {{’b’, ’a’, ?, ?, ?}, 1} // No change of state
Functions
Complex s.push(’t’);
Rectangle // STATE 5 of s = {{’b’, ’a’, ’t’, ?, ?}, 2}
Stack
s.top();
this pointer // STATE 5 of s = {{’b’, ’a’, ’t’, ?, ?}, 2} // No change of state
State of an
s.pop();
Object
// STATE 6 of s = {{’b’, ’a’, ’t’, ?, ?}, 1}
Complex
Rectangle
Stack
Module 11
Partha Pratim
We have covered the following:
Das
Module 11
Partha Pratim
Das Name Mail Mobile
Objectives &
Partha Pratim Das, Instructor [email protected] 9830030880
Outline Tanwi Mallick, TA [email protected] 9674277774
Classes
Srijoni Majumdar, TA [email protected] 9674474267
Himadri B G S Bhuyan, TA [email protected] 9438911655
Objects
Data Members
Complex
Rectangle
Stack
Member
Functions
Complex
Rectangle
Stack
this pointer
State of an
Object
Complex
Rectangle
Stack