C++: The OOP features

Data Abstraction:

Objective

using FDTs main (){ int a = 193; int b = 456; int c; c = a + b + 47; printf("%d\n",c); } using ADTs main (){ BigInt a = "1232545678893"; BigInt b = "2344567812356"; BigInt c; c = a + b + 47; c.print(); printf("\n"); }

C++ Support

struct point{ int xVal,yVal; // members void SetPt(int,int);//member functions void OffsetPt(int,int); };

Encapsulation with the class construct

class point{ int xVal,yVal; // members public: void SetPt(int,int);//member functions void OffsetPt(int,int) };

Data Hiding - Types of Access:

Derived Classes & Virtual Functions

Using Virtual functions

An Example: Class Declaration using Protected, Public, Friend & Virtual

class TList{ protected: friend class TIterator; Tlink * fLink; // first link to list int fNumItems // No. of elems in list public: TList(void); // constructor virtual void Additem(void* item); virtual void Remove(void* item); int NumItems() {return fNumItems;} };

'this' - the implicit argument

TList::AddItem(void* item){ ... this.NumItems(); ... }