c++ classes tutorials

22
C++ Classes C++ Classes & & Object Oriented Object Oriented Programming Programming

Upload: kksupaul

Post on 24-Dec-2014

553 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: C++ classes tutorials

C++ Classes C++ Classes &&

Object Oriented ProgrammingObject Oriented Programming

Page 2: C++ classes tutorials

Object Oriented ProgrammingObject Oriented Programming

Programmer Programmer thinksthinks about and defines the about and defines the attributes and behavior of objects.attributes and behavior of objects.

Often the objects are modeled after real-Often the objects are modeled after real-world entities.world entities.

Very different approach than Very different approach than function-basedfunction-based programming (like C).programming (like C).

Page 3: C++ classes tutorials

Object Oriented ProgrammingObject Oriented Programming

Object-oriented programming (OOP) Object-oriented programming (OOP) – Encapsulates data (attributes) and functions Encapsulates data (attributes) and functions

(behavior) into packages called classes.(behavior) into packages called classes. So, Classes are user-defined (programmer-So, Classes are user-defined (programmer-

defined) types.defined) types.– Data (data members) Data (data members) – Functions (member functions or methods)Functions (member functions or methods)

In other words, they are structures + In other words, they are structures + functionsfunctions

Page 4: C++ classes tutorials

Classes in C++Classes in C++

A class definition begins with the keyword A class definition begins with the keyword classclass..

The body of the class is contained within a The body of the class is contained within a set of braces, set of braces, { } ;{ } ; (notice the semi-colon). (notice the semi-colon).

class class_name}.….….…;{

Class body (data member + methodsmethods)

Any valid identifier

Page 5: C++ classes tutorials

Classes in CClasses in C++++

Within the body, the keywords Within the body, the keywords private:private: and and public:public: specify the access level of the specify the access level of the members of the class.members of the class.– the default is the default is privateprivate..

Usually, the data members of a class are Usually, the data members of a class are declared in the declared in the private:private: section of the class section of the class and the member functions are in and the member functions are in public:public: section.section.

Page 6: C++ classes tutorials

Classes in C++Classes in C++

class class_name}

private:………

public:………

;{

Public members or methods

private members or methods

Page 7: C++ classes tutorials

Classes in C++Classes in C++

Member access specifiersMember access specifiers– public: public:

can be accessed outside the class directly.can be accessed outside the class directly.– The public stuff is The public stuff is the interfacethe interface..

– private:private: Accessible only to member functions of classAccessible only to member functions of class Private members and methods are for internalPrivate members and methods are for internal use use

only.only.

Page 8: C++ classes tutorials

Class ExampleClass Example

This class example shows how we can This class example shows how we can encapsulate (gather) a circle information into encapsulate (gather) a circle information into one package (unit or class) one package (unit or class)

class Circle{ private:

double radius; public:

void setRadius(double r);double getDiameter();

double getArea();double getCircumference();

};

No need for others classes to access and retrieve its value directly. Theclass methods are responsible forthat only.

They are accessible from outsidethe class, and they can access themember (radius)

Page 9: C++ classes tutorials

Creating an object of a ClassCreating an object of a Class

Declaring a variable of a class type creates an Declaring a variable of a class type creates an objectobject. You can have many variables of the same . You can have many variables of the same type (class).type (class).– InstantiationInstantiation

Once an object of a certain class is instantiated, a Once an object of a certain class is instantiated, a new memory location is created for it to store its new memory location is created for it to store its data members and codedata members and code

You can instantiate many objects from a class You can instantiate many objects from a class type.type.– Ex) Circle c; Circle *c; Ex) Circle c; Circle *c;

Page 10: C++ classes tutorials

Special Member FunctionsSpecial Member Functions

Constructor:Constructor:– Public function memberPublic function member– called when a new object is created called when a new object is created

(instantiated).(instantiated).– Initialize data members.Initialize data members.– Same name as classSame name as class– No return typeNo return type– Several constructorsSeveral constructors

Function overloadingFunction overloading

Page 11: C++ classes tutorials

Special Member FunctionsSpecial Member Functions

class Circle{ private:

double radius; public:

Circle();Circle(int r); void setRadius(double r);double getDiameter();double getArea();double getCircumference();

};

Constructor with no argument

Constructor with one argument

Page 12: C++ classes tutorials

Implementing class methodsImplementing class methods

Class implementation: writing the code of class Class implementation: writing the code of class methods.methods.

There are two ways:There are two ways:1.1. Member functions defined outside classMember functions defined outside class

Using Binary scope resolution operator (Using Binary scope resolution operator (::::)) ““Ties” member name to class nameTies” member name to class name Uniquely identify functions of particular classUniquely identify functions of particular class Different classes can have member functions with same Different classes can have member functions with same

namename– Format for defining member functionsFormat for defining member functions

ReturnTypeReturnType ClassNameClassName::::MemberFunctionNameMemberFunctionName( ){( ){……

}}

Page 13: C++ classes tutorials

Implementing class methodsImplementing class methods

2.2. Member functions defined inside classMember functions defined inside class– Do not need scope resolution operator, class Do not need scope resolution operator, class

name;name;class Circle{ private:

double radius; public:

Circle() { radius = 0.0;}Circle(int r);void setRadius(double r){radius = r;}double getDiameter(){ return radius *2;}double getArea();double getCircumference();

};

Defined inside class

Page 14: C++ classes tutorials

class Circle{ private:

double radius; public:

Circle() { radius = 0.0;}Circle(int r);void setRadius(double r){radius = r;}double getDiameter(){ return radius *2;}double getArea();double getCircumference();

};Circle::Circle(int r){ radius = r;}double Circle::getArea(){ return radius * radius * (22.0/7);}double Circle:: getCircumference(){ return 2 * radius * (22.0/7);}

Defined outside class

Page 15: C++ classes tutorials

Accessing Class MembersAccessing Class Members

Operators to access class membersOperators to access class members– Identical to those for Identical to those for structstructss– Dot member selection operator (Dot member selection operator (..))

ObjectObject Reference to objectReference to object

– Arrow member selection operator (Arrow member selection operator (->->) ) PointersPointers

Page 16: C++ classes tutorials

class Circle{ private:

double radius; public:

Circle() { radius = 0.0;}Circle(int r);void setRadius(double r){radius = r;}double getDiameter(){ return radius *2;}double getArea();double getCircumference();

};Circle::Circle(int r){ radius = r;}double Circle::getArea(){ return radius * radius * (22.0/7);}double Circle:: getCircumference(){ return 2 * radius * (22.0/7);}

void main(){ Circle c1,c2(7);

cout<<“The area of c1:” <<c1.getArea()<<“\n”;

//c1.raduis = 5;//syntax error c1.setRadius(5);

cout<<“The circumference of c1:”<< c1.getCircumference()<<“\n”;

cout<<“The Diameter of c2:”<<c2.getDiameter()<<“\n”;

}

The first constructor is

called

The second constructor is

called

Since radius is a private class data

member

Page 17: C++ classes tutorials

class Circle{ private:

double radius; public:

Circle() { radius = 0.0;}Circle(int r);void setRadius(double r){radius = r;}double getDiameter(){ return radius *2;}double getArea();double getCircumference();

};Circle::Circle(int r){ radius = r;}double Circle::getArea(){ return radius * radius * (22.0/7);}double Circle:: getCircumference(){ return 2 * radius * (22.0/7);}

void main(){ Circle c(7); Circle *cp1 = &c; Circle *cp2 = new Circle(7); cout<<“The are of cp2:”

<<cp2->getArea(); }

Page 18: C++ classes tutorials

DestructorsDestructors

DestructorsDestructors– Special member functionSpecial member function– Same name as class Same name as class

Preceded with tilde (Preceded with tilde (~~))

– No arguments No arguments – No return valueNo return value– Cannot be overloadedCannot be overloaded– Before system reclaims object’s memoryBefore system reclaims object’s memory

Reuse memory for new objectsReuse memory for new objects Mainly used to de-allocate dynamic memory locationsMainly used to de-allocate dynamic memory locations

Page 19: C++ classes tutorials

Another class ExampleAnother class Example

This class shows how to handle time parts.This class shows how to handle time parts.class Time{ private:

int *hour,*minute,*second; public:

Time();Time(int h,int m,int s);void printTime();void setTime(int h,int m,int s);int getHour(){return *hour;}int getMinute(){return *minute;}int getSecond(){return *second;}void setHour(int h){*hour = h;}void setMinute(int m){*minute = m;}void setSecond(int s){*second = s;}~Time();

};

Destructor

Page 20: C++ classes tutorials

Time::Time(){

hour = new int;minute = new int;second = new int;*hour = *minute = *second = 0;

}

Time::Time(int h,int m,int s){

hour = new int;minute = new int;second = new int;*hour = h;*minute = m;*second = s;

}

void Time::setTime(int h,int m,int s){

*hour = h;*minute = m;*second = s;

}

Dynamic locations should be allocated

to pointers first

Page 21: C++ classes tutorials

void Time::printTime(){ cout<<"The time is : ("<<*hour<<":"<<*minute<<":"<<*second<<")"

<<endl;}

Time::~Time(){

delete hour; delete minute;delete second;}

void main(){

Time *t;t= new Time(3,55,54);t->printTime();

t->setHour(7);t->setMinute(17);t->setSecond(43);

t->printTime();

delete t;}

Output:The time is : (3:55:54)The time is : (7:17:43)Press any key to continue

Destructor: used here to de-allocate memory locations

When executed, the destructor is called

Page 22: C++ classes tutorials

Reasons for OOPReasons for OOP

1.1. Simplify programmingSimplify programming

2.2. InterfacesInterfaces Information hiding:Information hiding:

– Implementation details hidden within classes themselvesImplementation details hidden within classes themselves

3.3. Software reuseSoftware reuse Class objects included as members of other Class objects included as members of other

classesclasses