Wednesday 29 May 2013

Classes and Objects


Class
l  A class is usually represents a noun.
l  It encapsulates the state and behavior of the concept it represents.
l  It encapsulates the state through data placeholders called attributes(or member variables)
l  It encapsulates behavior through sections of code called methods (functions).
Object
l  Object is an instance of class.
l  Object is a runtime entity
l  Object is a physical representation of a class

An example of class

#include<iostream.h>
class distance
{
     private:
     int km,m,cm;
     public:
     void getdata()
     {
          cout<<”Enter KM, M, CM:”;
          cin>>km>>m>>cm;
     }
     void showdata()
     {
          cout<<”KM=”<<km<<”M=”<<m<<” CM=”<<cm;
     }
};
void main()
{
  distance d1,d2;
  d1.getdata();
  d2.getdata();
  d1.show();
  d2.show();
}

Access Specifiers

l  There are three access specifiers: private, protected and public.
l  These access specifiers are used to categorize access rules for class members
l  Those data members and member functions declared as private, can not accessed outside the class.
l  Those data members and member functions declared as public can accessed outside the class along with inside access
l  Protected works similar to private that is can not access from outside the class but the difference between private and protected will get clear in inheritance.

Properties of member functions
l  Member variables and member functions can be accessed from outside class with the help of object of the same class and dot operator, only when members are public.
l  Member functions can access other members of the same class regardless of their access category.
l  Member functions can access other members without using object and dot operator. For example, in above program getdata() is accessing km,m and cm without using object and dot operator. These variables are members of object who invoked member function getdata().
l  Member function can be defined inside or outside the class. If they are defined inside the class, mechanism is very clear from the above example, as we defined two member functions getdata() and showdata() inside the class.
l  When we intend to define member functions outside the class, we have to declare it inside the class. When we define member function outside, membership label should be placed between return type and function name. So the syntax is

return type Class name :: Function name (argument list)
{
… …...
}
l  All functions defined inside the class are inline by default. If definition of member function is written outside the class then inline keyword must use to make function inline.
l  Several different classes can use the same function name. The membership label will resolve their scope.

Function call by passing objects and returning objects

#include<iostream.h>
class complex
{
     private:
     int a;
     int b;
     public:
     void getdata();
     void showdata();
     complex add(complex);  
};
void complex:: getdata()
{
     cout<<”Enter two numbers”;
     cin>>a>>b;
}
void complex:: showdata()
{
     cout<<”a=”<<a<<”b=”<<b;
}
complex complex :: add(complex c)
{
  complex temp;
  temp.a=a+c.a;
  temp.b=b+c.b;
  return(temp);
}
void main()
{
  complex c1,c2,c3;
  c1.getdata();
  c2.getdata();
  c3=c1.add(c2);
  c3.show();
}

l  We have created three objects of type complex
l  We call getdata() twice first via c1 and then via c2.
l  Now member function add() is called via c1 and passes object c2 as a parameter.
l  In function add() value of c2 is received in object c.
l  We have created another object temp in function add() to temporary hold sum of c1 and c2.
l  Function add() returns object temp, this value is then get collected in object c3.
l  Show() function is next used to display content of c3. 

No comments:

Post a Comment