Pure Virtual Functions
It is possible that you want to include a virtual
function in a base class so that it may be redefined
in a derived class to suit the objects of that class,
but that there is no meaningful definition you could
give for the function in the base class.
We can change the virtual function area() in
the base class to the following:
class Shape {
protected:
int width, height;
public:
Shape( int a=0, int b=0)
{
width = a;
height = b;
}
// pure virtual function
virtual int area() = 0;
};
The = 0 tells the compiler that the function has no
body and above virtual function will be called pure
virtual function.
Data abstraction refers to providing only essential
information to the outside world and hiding their
background details, i.e., to represent the needed
information in program without presenting the details.
Data abstraction is a programming (and design)
technique that relies on the separation of interface
and implementation.
Let's take one real life example of a TV, which you
can turn on and off, change the channel, adjust the
volume, and add external components such as speakers,
VCRs, and DVD players, BUT you do not know its
internal details, that is, you do not know how it
receives signals over the air or through a cable,
how it translates them, and finally displays them on the screen.
Thus, we can say a television clearly separates its
internal implementation from its external interface
and you can play with its interfaces like the power
button, channel changer, and volume control without
having zero knowledge of its internals.
In C++, classes provides great level of data abstraction.
They provide sufficient public methods to the outside
world to play with the functionality of the object and
to manipulate object data, i.e., state without actually
knowing how class has been implemented internally.
For example, your program can make a call to the sort()
function without knowing what algorithm the function
actually uses to sort the given values. In fact, the
underlying implementation of the sorting functionality
could change between releases of the library, and as long
as the interface stays the same, your function call will still work.
In C++, we use classes to define our own abstract data types
(ADT). You can use the cout object of class ostream to stream
data to standard output like this:
#include <iostream>
using namespace std;
int main( )
{
cout << "Hello C++" <<endl;
return 0;
}
DATA ABSTRACTION
Here, you don't need to understand how cout displays
the text on the user's screen. You need to only know
the public interface and the underlying implementation
of ‘cout’ is free to change.
No comments:
Post a Comment