Skip to main content

Concepts of Object Oriented Programming


1. Object

Objects are the model of entities related to the problem. They are actually the group of data and functions. They are also called basic run time entities in object oriented system. They represents real world entities of problem such as student, customer, products program has to handle. In real world each entity has some data and some functions. For example if the entity is a student then data would be name, marks, percent etc. and functions would be getdata, putdata etc. The data of one object can only be accessed by the functions of that object. However the functions of one object can be accessed by the functions of another object. Thus in OOP data are hidden from outside objects and remains secure.  

Object समस्या से संबंधित entities के model होते है। वास्तव में object संबंधित data व functions के समूह होते है। इन्हें object oriented system में basic run time entities भी कहते है। ये समस्या के वास्तविक दुनिया के entities जैसे—student, customer, products को represent करते है जिन्हें प्रोग्राम को handle करना होता है। वास्तविक दुनिया में प्रत्येक entity के कुछ न कुछ data व functions होते है। उदाहरण के लिए यदि entity कोई student है तो name, marks, percent आदि इसके data हो सकते है तथा getdata, putdata आदि इसके function हो सकते है। एक object के अंतर्गत आने वाले data को केवल उसी object के functions के द्वारा ही access किया जा सकता है। किन्तु एक object के अंतर्गत आने वाले functions को दूसरे object के functions के द्वारा भी access किया जा सकता है। इस प्रकार OOP में data बाहरी object से छिपा हुआ व सुरक्षित रहता है।

Object creation syntax:

class_name object_name;

Object creation example:

student s1;

Object
Fig. Representation of Object


2. Class

Class is a user-defined data type and objects are the variable of type class. We know that In object oriented system for solving problem we first create model of entities related to the problem called objects. But before creating objects we need to define class for that objects. Once a class has been defined we can create any number of objects belonging to that class. Each object has a set of data and functions of type class to which they are belonged. All data and function defined within class are called member of that class. Class definition is generally divided into two section: private and public. We generally declare data in private section and functions in public section but it is not necessary. One important thing to be notice here is that when we define class there no memory is allocated for members of class. Memory is allocated for members only when we create objects of that class and it allocated for each object separately.


Class
एक user-defined डेटा टाईप होता है और objects class type के variable होते है। हम जानते है कि object oriented system में समस्या को हल करने के लिए सबसे पहले हम समस्या से संबंधित entities का मॉडल बनाते जिन्हेंं objects कहते  है। लेकिन objects बनाने से पहले हमें उस objects के लिए class को define करने की आवश्यकता होती  है। एक बार class को define कर देने के बाद हम उस class से संबंधित कितने भी objects बना सकते है। प्रत्येक object के पास उस class के data एवं functions का set होता है जिससे वे संबंधित होते है। Class के अंदर define किए गए सभी data एवं functions  उस class के member कहलाते है। Class definition सामान्यतः दो भागों private और public में विभाजित रहता है। हम सामान्यतः data को private भाग में तथा functions को public भाग में declare करते है किन्तु ऐसा करना जरूरी नहीं होता है। एक महत्वपूर्ण बात जो यहा ध्यान देनी चाहिए कि जब हम class को define करते है तो इसके members के लिए कोई मेमोरी allocate नहीं होती है। Members के लिए मेमोरी केवल तब allocate होती है जब हम उस class का object बनाते है और यह प्रत्येक objects के लिए अलग-अलग allocate होती है।

Class definition syntax:

class class_name
{
     private:
          member data;
     public:
          member functions;
};

Class definition example:

class student
{
     private:
          char name[10];
          int marks;
          float percent;
     public:
          void getdata(void);
          void putdata(void);
};

Example program for Object and Class


#include<iostream>
using namespace std;
class student
{
     private:
         char name[10];
         int marks;
         float percent;
     public:
         void getdata(void);
         void putdata(void);
};
void student::getdata(void)
{
    cout<<"Enter name: ";
    cin>>name;
    cout<<"Enter marks: ";
    cin>>marks;
    cout<<"Enter percent: ";
    cin>>percent;
}
void student::putdata(void)
{
    cout<<"Name: "<<name<<endl;
    cout<<"Marks: "<<marks<<endl;
    cout<<"Percent: "<<percent<<endl;
}
int main()
{
    student s1,s2;
    s1.getdata();
    s2.getdata();
    s1.putdata();
    s2.putdata();
    return 0;
}

Output



3. Encapsulation 


Encapsulation refers to the process of wrapping up data and functions into single unit known as class. Data that are wrapped into a class can only be accessed by the functions of that class. It is completely hidden from non-class functions. This hiding of data from access of non-class functions is sometimes called data hiding too.

Encapsulation एक ऐसी प्रक्रिया है जिसमें हम data एवं functions को एक  single unit के अंतर्गत एक साथ रखते है जिसे class कहते है। एक class के अंतर्गत आने वाले data को केवल उसी class के functions के द्वारा ही access किया जा सकता है। यह non-class functions से पूरी तरह से छिपा हुआ रहता है। इस प्रकार non-class functions के पहुँच से data को छिपाकर रखने को कभी-कभी data hiding भी कहा जाता है।


4. Abstraction  


Abstraction refers to the process of providing only necessary information without explaining their background implementations. Classes use the concept of abstraction and therefore they are also called abstract data types (ADT). Generally they contains list of data and functions and implementations of all functions are placed outside the class.

Abstraction एक ऐसी प्रक्रिया है जिसमें केवल जरूरी information को ही बताया जाता है और उनके पिछे के कार्य करने के तरीके को नहीें बताया जाता। Classes abstraction के सिद्धांत का प्रयोग करती है इसीलिए इन्हें abstract data types (ADT) भी कहा जाता है। सामान्यतः वे data एवं functions को रखती है और सारे functions की coding class के बाहर होती है।


5. Inheritance

Inheritance is a process by which objects of one class acquire the properties of objects of another class. For this we need to create new class from existing class instead of creating it differently. Here the existing class is called base class and the new class is called derive class. The derive class will have its own new properties as well as all properties of its base class. Inheritance provides us an idea of reusability. This means we can add extra features to an existing class without modifying it. It saves our time and efforts of programming and also increases the reliability of program.

Inheritance एक ऐसी प्रक्रिया है जिसके द्वारा एक class के objects दूसरे class के properties को प्राप्त करते है। इसके लिए हमें नए class को अलग से बनाने के बजाय इसे पहले से ही बने class से बनाना होता है। यहा पहले से बने class को base class तथा बनाए गए नए class को derive class कहते है। Derive class के पास  अपनी खुद की नयी properties होती है साथ ही इसके base class की भी सभी properties भी होती है। Inheritance हमें reusability का विचार देता है।  इसका मतलब है कि हम पहले से बने हुए class में परिवर्तन किए बिना इसमें और भी features जो़ड़ सकते है। यह हमारे programming के समय और श्रम को बचाता है और program की विश्वसनीयता को बढ़ाता है।


6. Polymorphism

Polymorphism meas one name many forms. It is an ability of function and operator to take different forms in different situations. It is also called function overloading and operator overloading. In both of above overloading we uses same function name and operator symbol to perform different tasks according to arguments passed by user. Both of above are an example of compiletime polymorphism in which what task is to be done is decided during compilation of program. Apart from compiletime polymorphism there is also a type of polymorphism which is called runtime polymorphism  in which what task is to be done is decided during execution of program. Virtual function is an example of runtime polymorphism.

Polymorphism का अर्थ एक नाम अनेक रूप होता है। यह function और operator की अलग-अलग परिस्थिति में अलग-अलग रूप लेने की क्षमता होती है। इसे function overloading और operator overloading भी कहा जाता है। उपर्युक्त दोनो प्रकार के overloading में हम एक ही function name और operator symbol का प्रयोग यूजर द्वारा दिए गए arguments के अनुसार अलग-अलग कार्य करने के लिए करते है। ये दोनों compiletime polymorphism के उदाहरण है जिसमें क्या कार्य करना है यह प्रोग्राम के compilation के समय ही निर्धारित कर लिया जाता है। Compiletime polymorphism से अलग एक और प्रकार का भी polymorphism होता है जिसे runtime polymorphism कहते है जिसमें क्या कार्य करना है यह प्रोग्राम के execution के समय निर्धारित किया जाता है। Runtime polymorphism का उदाहरण Virtual function होता है।