Example by encapsulation or information hiding

Instruction:
• Use mouse’s left button.
• If mouse buttons don’t work, use arrow keys of keyboard for slide
show.
• Keyboard Arrow key --> or mouse’s left button for “next slide.”
• Keyboard Arrow key <-- for “previous slide.”
• When it is end, Press “Home” button to go back to main page.
Encapsulation ( Information Hiding )
In Object Oriented C++ Approach
Presented by: Thakur Rai
Objectives
1. Explanation of Encapsulation and Information
Hiding.
2. What encapsulation or information hiding approach
provide in Object Oriented ?
3. General 3 different ways to Encapsulate data.
4. Advantage of Encapsulation ( Information hiding ).
5. Example by encapsulation or information hiding
( Explanation of Encapsulation and Information Hiding )
Encapsulation
“ to enclose in or as in a capsule ”
1. The object-oriented meaning of encapsulation is to enclose
related data, routines and definitions in a class capsule. This
does not necessarily mean hiding. (Mish)
2. Encapsulation is the ‘bundling together’ of data and
behavior so that they are inseparable.
(Mcgraw Hill)
Cont. Explanation of Encapsulation and Information Hiding
Why Encapsulation is also called information hiding ?
Encapsulation (also called information hiding) consists of
separating the external aspects of an object, from the
internal implementation details of the object, which are
hidden from other objects.
Encapsulation prevents a program from becoming to
interdependent that a small change has massive ripple
effects.
Encapsulation has ability to combine data structure and
behavior in a single entity makes encapsulation cleaner and
more powerful than in conventional languages that separate
data structure and behavior.
Cont. Explanation of Encapsulation and Information Hiding
Information Hiding
1. Information hiding: a module is characterized by the
information it hides from other modules, which are called
its clients. The hidden information remains a secret to the
client modules.
(Ghezzi et al)
2. The purpose of Information hiding is to make inaccessible
certain details that should not affect other parts of a system.
(Ross et al)
3. Information hiding is the principle that users of a software
component (such as a class) need to know only the essential
details of how to initialize and access the component, and do
not need to know the details of the implementation. (Budd)
Note: A class can act like Server, and a program “main” can act like Client.
What encapsulation or information hiding approach provides in
Object Oriented?
1. The interface is the visible surface of the capsule.
The interface describes the essential characteristics of objects
of the class which are visible to the exterior world.
Interface data – which should be visible from outside/other
class or method.
2. The implementation is hidden in the capsule.
The implementation hiding means that data can only be
manipulated, that is updated, within the class, but it does not
mean hiding interface data.
Implementation data – which should be hidden from
outside/other class or method.
Note: A function is an interface and has function definition, and A class is an implementation
and has its declaration includes all implementation details of data and function members.
General 3 ways to Encapsulate Data
1. Public member access specifier
2. Private member access specifier
3. Protected member access specifier
Cont. General 3 ways to Encapsulate Data
1. Public member access specifier.
Syntax
public: <declarations>
Description:
1. A public member can be accessed by any function.
2. Members of a struct or union are public by default.
3. You can override the default struct access with private or
protected but you cannot override the default union
access.
4. Friend declarations are not affected by these access
specifiers.
Cont. General 3 ways to Encapsulate Data
2.
Private member access specifier
Syntax
private: <declarations>
Description:
1. A private member can be accessed only by member
functions and friends of the class in which it is declared.
2. Class members are private by default.
3. You can override the default struct access with private or
protected but you cannot override the default union access.
4. Friend declarations are not affected by these access
specifiers.
Cont. General 3 ways to Encapsulate Data
3. Protect member access specifier
Syntax
protected: <declarations>
Description:
1. A protected member can be accessed by member functions
and friends of the class in which it was declared, and by
classes derived (derived classes) from the declared class.
2. You can override the default struct access with private or
protected but you cannot override the default union access.
3. Friend declarations are not affected by these access
specifiers.
Cont. General 3 ways to Encapsulate Data
class MyClass
{
public:
//access from anywhere
int x;
private:
//only access from within a class
int y;
protected:
//access from within a class ,or derived class
int z;
};
void main()
{
MyClass CopyClass;
CopyClass.x = 1; //OK, Public Access.
CopyClass.y = 2; //Error! Y isn't a member of MyClass
CopyClass.z = 3; //Error! Z isn't a member of MyClass
}
Advantage of Encapsulation ( Information hiding )
1. It prevents others accessing the insides of an object.
The only thing that can manipulate the data in an
object is that object’s method or member function.
2. It main aim is to prevent accident.
It builds a protective wall (encapsulation) around the
member data and member function of the class, and
hiding implementation details of object. So It keeps
data safe from accident.
Example by encapsulation or information hiding
#include <iostream>
// Declaration of the Box class.
class Box
{
private:
int height, width, depth; // private data members.
public:
Box(int, int, int); // constructor function.
~Box();
// destructor function.
int volume();
// member function (compute volume).
};
(cont.)
// Definition of the Box class.
Box::Box( int ht, int wd, int dp )
// The constructor function.
{
height = ht;
width = wd;
depth = dp;
}
Box::~Box()
// The destructor function. Use of scope resolution ‘::’
{
// does nothing
}
int Box::volume()
// Member function to compute the Box's volume.
{
return height * width * depth;
}
(cont.)
// The main() function.
int main()
{
// Construct a Box object.
Box thisbox(7, 8, 9);
// actual values
// Compute and display the object's volume.
int volume = thisbox.volume();
std::cout << “output volume is : “ << volume;
return 0;
}
output volume is: 504