Professional Documents
Culture Documents
Rizoan Toufiq1
1 Assistant Professor
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 2 / 64
Overview
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 3 / 64
Structures
#include <iostream>
using namespace std;
}
};
int main( )
{
CDAccount account;
account.getData();
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 9 / 64
Overview
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 10 / 64
Classes
#include <iostream>
using namespace std;
class DayOfYear
{
public:
void output( );
int month;
int day;
};
//Uses iostream:
void DayOfYear::output( )
{
cout << "month = " << month
<< ", day = " << day << endl;
}
int main( )
{
DayOfYear today, birthday;
if (today.month == birthday.month
&& today.day == birthday.day)
cout << "Happy Birthday!\n";
else
cout << "Happy Unbirthday!\n";
return 0;
}
exampleClass01.cpp
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 18 / 64
Public and Private
#include <iostream>
using namespace std;
class DayOfYear
{
public:
void input( );
void output( );
void set(int newMonth, int newDay);
int getMonth( );
int getDay( );
private:
void checkDate( );
int month;
int day;
};
void DayOfYear::checkDate( ){
if ((month < 1) || (month > 12) || (day < 1) ||
(day > 31)){
cout << "Illegal date. Aborting program.\n";
exit(1);
}
}
void DayOfYear::input( )
{
cout << "Enter the month as a number: ";
cin >> month; //Private Member Variable
cout << "Enter the day of the month: ";
cin >> day;//Private Member Variable
checkDate( ); //Private Member Function
}
void DayOfYear::output( ){
cout << "month = " << month
<< ", day = " << day << endl;
}
int DayOfYear::getMonth( ){
return month; //Can’t access directly by object
}
int DayOfYear::getDay( ){
return day; //Can’t access directly by object
}
int main( ){
DayOfYear today, bachBirthday;
bachBirthday.set(3, 21);
cout << "J. S. Bach’s birthday is ";
bachBirthday.output( );
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 29 / 64
Programming Tip: Make All Member Variables Private
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 31 / 64
Programming Tip: Define Accessor and Mutator Functions
Member functions that allow you to find out the values of the private
member variables of a class are called accessor functions.
Member functions that allow you to change the values of the private
member variables of a class are called mutator functions.
Good Practice: the names of accessor functions normally include
the word ’get’
Good Practice: the names of mutator functions normally include
the word ’set’
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 33 / 64
Programming Tip: Use the Assignment Operator
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 35 / 64
Summary of Some Properties of Classes
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 37 / 64
Constructors for Initialization
#include <iostream>
using namespace std;
class DayOfYear{
public:
DayOfYear();
DayOfYear(int m, int d);
void output();
private:
int month;
int day;
};
DayOfYear::DayOfYear(){
month = 7;
day = 6;
}
void DayOfYear::output(){
cout << "month = " << month
<< ", day = " << day << endl;
}
int main(){
DayOfYear yourBirthday(5,10),testbirthday;
cout << "Your birthday is ";
yourBirthday.output( );
testbirthday.output();
DayOfYear *ptr;
ptr = new DayOfYear(6,6);
ptr->output();
return 0;
}
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 44 / 64
Programming Tip: Always Include a Default Constructor
class DayOfYear{
public:
DayOfYear();
DayOfYear(int m, int d);
void output();
private:
int month;
int day;
};
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 46 / 64
Abstract Data Types
ADT
A data type is called an abstract data type (abbreviated ADT) if the
programmers who use the type do not have access to the details of how
the values and operations are implemented.
The predefined types, such as int, are abstract data types (ADTs). You
do not know how the operations, such as + and *, are implemented
for the type int.
Even if you did know, you would not use this information in any C++
program.
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 49 / 64
Classes to Produce Abstract Data Types
class BankAccount
{
public:
BankAccount(int dollars, int cents, double rate);
BankAccount(int dollars, double rate);
BankAccount();
void set(int dollars, int cents, double rate);
void set(int dollars, double rate);
void update();
double getBalance();
double getRate();
void output(ostream& outs);
private:
double balance;
double interestRate;
double fraction(double percent);
};
The programmer who uses the type BankAccount need not know how
you implemented the definition of BankAccount::update or any of
the other member functions.
void BankAccount::update()
{
balance = balance + fraction(interestRate) * balance;
}
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 54 / 64
Introduction to Inheritance
#include <iostream>
using namespace std;
//define base class
class BankAccount{
double balance;
public:
void set_balance(double bal);
double get_balance();
};
int main( ){
SavingsAccount account;
account.set_balance(2000.00);
account.set_savingsbalance(3000.00);
account.output();
return 0;
}
The keyword public tells the compiler that BankAccount will be in-
herited such that all public elements of the base class will be public
element of the derived class.
All private elements of the base class remains private to it and are not
directly accessible by the derived class.
1 Structure
2 Classes
Defining Classes and Member Functions
Public and Private
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
3 Abstract Data Types
Classes to Produce Abstract Data Types
4 Introduction to Inheritance
5 Resources
Rizoan Toufiq (Assistant Prof.,CSE,RUET) Classes and Objects 61 / 64
Read
Walter Savitch,
Problem Solving with C++
- Chapter 10
Walter Savitch
Problem Solving with C++
Herbert Schildt
Teach Yourself C++