ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग एक प्रकार की प्रोग्रामिंग है जो अपने कामकाज के लिए ऑब्जेक्ट्स और क्लासेस का उपयोग करती है। ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग रियल-वर्ल्ड एंटिटीज जैसे इनहेरिटेंस, पॉलीमॉर्फिज्म, डेटा हाइडिंग आदि पर आधारित है। इसका उद्देश्य डेटा और इन डेटा सेट्स पर काम करने वाले फंक्शन्स को एक सिंगल एंटिटी में बांधना है ताकि उनके उपयोग को प्रतिबंधित किया जा सके।
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के कुछ बेसिक कॉन्सेप्ट्स हैं:
- क्लास
- ऑब्जेक्ट्स
- एनकैप्सुलेशन
- पॉलीमॉर्फिज्म
- इनहेरिटेंस
- एब्स्ट्रैक्शन
क्लास - एक क्लास एक डेटा-टाइप है जिसके अपने मेंबर्स होते हैं यानी डेटा मेंबर्स और मेंबर फंक्शन्स। यह ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज में ऑब्जेक्ट के लिए ब्लूप्रिंट है। यह C++ में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का बेसिक बिल्डिंग ब्लॉक है। क्लास के मेंबर्स को प्रोग्रामिंग लैंग्वेज में क्लास का इंस्टेंस बनाकर एक्सेस किया जाता है।
क्लास की कुछ महत्वपूर्ण विशेषताएं हैं:
क्लास एक यूजर-डिफाइंड डेटा-टाइप है।
एक क्लास में डेटा मेंबर्स और मेंबर फंक्शन्स जैसे मेंबर्स होते हैं।
डेटा मेंबर्स क्लास के वेरिएबल्स हैं।
मेंबर फंक्शन्स वे मेथड्स हैं जिनका उपयोग डेटा मेंबर्स को मैनिपुलेट करने के लिए किया जाता है।
डेटा मेंबर्स क्लास के गुणों को परिभाषित करते हैं जबकि मेंबर फंक्शन्स क्लास के व्यवहार को परिभाषित करते हैं।
एक क्लास में कई ऑब्जेक्ट्स हो सकते हैं जिनके गुण और व्यवहार उन सभी के लिए सामान्य होते हैं।
सिंटैक्स
class class_name {
data_type data_name;
return_type method_name(parameters);
} ऑब्जेक्ट - एक ऑब्जेक्ट क्लास का एक इंस्टेंस है। यह एक एंटिटी है जिसका उपयोग ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में विशेषताओं और व्यवहार के साथ किया जाता है। एक ऑब्जेक्ट वह एंटिटी है जिसे मेमोरी आवंटित करने के लिए बनाया जाता है। जब एक क्लास परिभाषित की जाती है तो उसके पास स्वयं का मेमोरी चंक नहीं होता जो ऑब्जेक्ट्स बनते ही आवंटित हो जाता है।
सिंटैक्स
class_name object_name;
उदाहरण
#include <iostream>
using namespace std;
class calculator {
int number1;
int number2;
char symbol;
public:
void add() {
cout << "The sum is " << number1 + number2;
}
void subtract() {
cout << "The subtraction is " << number1 - number2;
}
void multiply() {
cout << "The multiplication is " << number1 * number2;
}
void divide() {
cout << "The division is " << number1 / number2;
}
calculator(int a, int b, char sym) {
number1 = a;
number2 = b;
symbol = sym;
switch(symbol) {
case '+': add(); break;
case '-': subtract(); break;
case '*': multiply(); break;
case '/': divide(); break;
default: cout << "Wrong operator";
}
}
};
int main() {
calculator c1(12, 34, '+');
} आउटपुट
The sum is 46
एनकैप्सुलेशन ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में, एनकैप्सुलेशन डेटा और जानकारी को एक सिंगल यूनिट में लपेटने की अवधारणा है। एनकैप्सुलेशन की एक औपचारिक परिभाषा होगी: एनकैप्सुलेशन डेटा और संबंधित फंक्शन को एक साथ बांधना है जो डेटा को मैनिपुलेट कर सकते हैं।
आइए एक आसान रियल-लाइफ उदाहरण से इस विषय को समझते हैं:
हमारे कॉलेजों में, प्रत्येक कोर्स के लिए विभाग होते हैं जैसे कंप्यूटर साइंस, इन्फॉर्मेशन टेक, इलेक्ट्रॉनिक्स आदि। इनमें से प्रत्येक विभाग के अपने स्टूडेंट्स और विषय होते हैं जिनका रिकॉर्ड रखा जाता है और पढ़ाया जाता है। आइए प्रत्येक विभाग को एक क्लास के रूप में सोचें जो उस विभाग के स्टूडेंट्स के बारे में डेटा और पढ़ाए जाने वाले विषयों को एनकैप्सुलेट करता है। साथ ही एक विभाग के कुछ निश्चित नियम और दिशानिर्देश होते हैं जिनका पालन उस कोर्स के स्टूडेंट्स को करना होता है जैसे टाइमिंग्स, सीखने के दौरान उपयोग की जाने वाली विधियां आदि। यह रियल लाइफ में एनकैप्सुलेशन है, वहां डेटा है और डेटा को मैनिपुलेट करने के तरीके हैं।
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में एनकैप्सुलेशन की अवधारणा के कारण एक और बहुत महत्वपूर्ण अवधारणा संभव है, वह है डेटा एब्स्ट्रैक्शन या डेटा हाइडिंग। यह संभव है क्योंकि एनकैप्सुलेटिंग डेटा को छुपाता है और केवल वही जानकारी दिखाता है जिसे प्रदर्शित करने की आवश्यकता होती है।
पॉलीमॉर्फिज्म नाम से परिभाषित होता है कि पॉलीमॉर्फिज्म कई रूप हैं। जिसका अर्थ है पॉलीमॉर्फिज्म ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की क्षमता है किसी कार्य को कई रूपों का उपयोग करके करने की। मेथड का व्यवहार उस टाइप या स्थिति पर निर्भर करता है जिसमें मेथड को कॉल किया जाता है।
आइए एक रियल-लाइफ उदाहरण लेते हैं, एक व्यक्ति स्थिति के आधार पर एक से अधिक व्यवहार रख सकता है। जैसे एक महिला एक मां, मैनेजर और बेटी है और यह उसके व्यवहार को परिभाषित करता है। यहीं से पॉलीमॉर्फिज्म की अवधारणा आई।
C++ प्रोग्रामिंग लैंग्वेज में, पॉलीमॉर्फिज्म दो तरीकों का उपयोग करके प्राप्त किया जाता है। वे हैं ऑपरेटर ओवरलोडिंग और फंक्शन ओवरलोडिंग।
ऑपरेटर ओवरलोडिंग ऑपरेटर ओवरलोडिंग में एक ऑपरेटर के उपयोग के विभिन्न इंस्टेंस में कई व्यवहार हो सकते हैं।
फंक्शन ओवरलोडिंग समान नाम वाले फंक्शन्स जो कुछ कंडीशन के आधार पर कई प्रकार के कार्य कर सकते हैं।
इनहेरिटेंस यह एक क्लास की क्षमता है कि वह दूसरी क्लास से गुणों या विशेषताओं को इनहेरिट या प्राप्त करे। यह ऑब्जेक्ट ओरिएंटेड प्रोग्राम में बहुत महत्वपूर्ण है क्योंकि यह पुन: उपयोगिता की अनुमति देता है यानी इनहेरिटेंस का उपयोग करके दूसरी क्लास में परिभाषित मेथड का उपयोग करना। वह क्लास जो दूसरी क्लास से गुण प्राप्त करती है उसे चाइल्ड क्लास या सबक्लास के रूप में जाना जाता है और वह क्लास जिससे गुण इनहेरिट किए जाते हैं उसे बेस क्लास या पैरेंट क्लास के रूप में जाना जाता है।
C++ प्रोग्रामिंग लैंग्वेज निम्नलिखित प्रकार के इनहेरिटेंस का समर्थन करता है:
- सिंगल इनहेरिटेंस
- मल्टीपल इनहेरिटेंस
- मल्टी-लेवल इनहेरिटेंस
- हायरार्किकल इनहेरिटेंस
- हाइब्रिड इनहेरिटेंस
एब्स्ट्रैक्शन डेटा एब्स्ट्रैक्शन या डेटा हाइडिंग डेटा को छुपाने और अंतिम यूजर को केवल प्रासंगिक डेटा दिखाने की अवधारणा है। यह ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का एक महत्वपूर्ण हिस्सा भी है।
आइए कॉन्सेप्ट को बेहतर ढंग से समझने के लिए रियल-लाइफ उदाहरण लेते हैं, जब हम बाइक चलाते हैं तो हम केवल इतना जानते हैं कि ब्रेक दबाने से बाइक रुक जाएगी और थ्रॉटल घुमाने से गति बढ़ेगी लेकिन आप नहीं जानते कि यह कैसे काम करता है और यह भी ऐसी चीज नहीं है जो हमें जाननी चाहिए, इसलिए यह उसी अवधारणा से किया जाता है जैसे डेटा एब्स्ट्रैक्शन।
C++ प्रोग्रामिंग लैंग्वेज में दो तरीके हैं जिनका उपयोग करके हम डेटा एब्स्ट्रैक्शन पूरा कर सकते हैं:
- क्लास का उपयोग करके
- हेडर फाइल का उपयोग करके