1. ओओपी के सिद्धांतों का परिचय

आज आप एक नई और दिलचस्प दुनिया की खोज करेंगे। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग ( OOP ) की दुनिया । आपने पहले कक्षाओं और वस्तुओं के बारे में सीखा। आज आप उनके बारे में और भी बहुत कुछ जानेंगे।

ओओपी कार्यक्रमों की बढ़ती जटिलता की प्रतिक्रिया के रूप में उभरा। जब कार्यक्रमों में चर और तरीके हजारों की संख्या में आने लगे, तो यह स्पष्ट हो गया कि कुछ करना होगा। एक समाधान डेटा और संबद्ध विधियों को अलग-अलग वस्तुओं में संयोजित करना था।

अब प्रोग्रामर को अलग से वर्णन करना था कि कैसे वस्तुएं बाहरी रूप से परस्पर क्रिया करती हैं और वे आंतरिक रूप से कैसे व्यवहार करती हैं। इससे प्रोग्राम को समझना और लिखना बहुत आसान हो गया। हालाँकि, एक प्रश्न बना रहा: कौन सी विधियाँ किसी वस्तु के लिए आंतरिक होनी चाहिए और कौन सी अन्य वस्तुओं के लिए उपलब्ध होनी चाहिए?

कई उपाय आजमाए गए। और खोजी गई सर्वोत्तम प्रथाओं के आधार पर, OOP के 4 सिद्धांत सामने आए। वे अमूर्तता, एनकैप्सुलेशन, वंशानुक्रम और बहुरूपता हैं । पहले, केवल तीन थे, लेकिन बाद में विशेषज्ञों ने अमूर्तता को भी जोड़ने का फैसला किया।


2. अमूर्तता

इंटरनेट पर लोग अभी भी OOP में अमूर्तता की परिभाषा पर बहस करते हैं । समस्या यह नहीं है कि हर कोई गलत है। यह है कि हर कोई सही है । एक प्रोग्राम जितना छोटा होता है, उतना ही अमूर्त जावा भाषा से जुड़ा होता है। एक कार्यक्रम जितना बड़ा होता है, उतना ही अमूर्त वास्तविक दुनिया की वस्तुओं को मॉडलिंग/सरल बनाने से जुड़ा होता है।

लेकिन सबसे अच्छे दिमाग इस बात से सहमत प्रतीत होते हैं:

एब्सट्रैक्शन किसी वस्तु की केवल उन विशेषताओं का उपयोग है जो किसी प्रोग्राम में पर्याप्त रूप से सटीक रूप से इसका प्रतिनिधित्व करते हैं। मुख्य विचार फ़ील्ड और विधियों के सबसे छोटे सेट के साथ ऑब्जेक्ट का प्रतिनिधित्व करना है जो एक साथ आपके कार्यों को पर्याप्त सटीकता के साथ हल करने की अनुमति देता है

जावा में, अमूर्त वर्ग और इंटरफेस के माध्यम से अमूर्त किया जाता है।

वास्तविक जीवन में अमूर्तता

वास्तविक जीवन में अमूर्तता का एक अच्छा उदाहरण कंपनी या संगठन में नौकरी का विवरण है। किसी पद का शीर्षक एक बात है, लेकिन किसी पद को सौंपी गई विशिष्ट जिम्मेदारियां पूरी तरह से अलग मामला है।

कल्पना कीजिए कि आप अपनी भविष्य की कंपनी के संगठनात्मक ढांचे को डिजाइन कर रहे हैं। आप सचिवीय जिम्मेदारियों को कई अलग-अलग पदों पर बांट कर विभाजित कर सकते हैं। आप सीईओ की स्थिति को कई अलग-अलग पदों में विभाजित कर सकते हैं: सीएफओ, सीटीओ, सीएमओ, एचआर निदेशक। या, उदाहरण के लिए, आप ऑफिस मैनेजर और रिक्रूटर के पदों को मिलाकर एक कर सकते हैं।

आप नौकरी के शीर्षक के बारे में सोचते हैं और फिर इन पदों के लिए जिम्मेदारियां बांटते हैं। अमूर्त वस्तु से पूरी तरह से अलग हो रहा है और आवश्यक गुणों और घटकों का चयन कर रहा है जिनकी हमें आवश्यकता है।

ओओपी के सिद्धांतों का परिचय।  मतिहीनता

प्रोग्रामिंग के दृष्टिकोण से, एब्सट्रैक्शन एक प्रोग्राम का ऑब्जेक्ट में सही विभाजन है । आमतौर पर, किसी भी बड़े प्रोग्राम को इंटरेक्टिंग ऑब्जेक्ट के रूप में प्रस्तुत करने के दर्जनों तरीके हैं। एब्सट्रैक्शन आपको आवश्यक विशेषताओं का चयन करने देता है और गैर-आवश्यक लोगों को अनदेखा करता है।


3. एनकैप्सुलेशन

इनकैप्सुलेशन का लक्ष्य वस्तुओं को सरल बनाकर अंतःक्रिया में सुधार करना है।

और किसी चीज़ को सरल बनाने का सबसे अच्छा तरीका है किसी भी जटिल चीज़ को ताक-झांक करने वाली नज़रों से छिपाना। उदाहरण के लिए, यदि आपको बोइंग जंबो जेट के कॉकपिट में डाल दिया जाता है, तो आप तुरंत समझ नहीं पाएंगे कि इसे कैसे संचालित किया जाए:

लेकिन विमान के यात्रियों के लिए सब कुछ सरल है: आप एक टिकट खरीदते हैं और विमान पर चढ़ जाते हैं, जो उड़ान भरता है और फिर उतरता है। आप केवल "टिकट खरीदने" और "विमान पर चढ़ने" की क्षमता के साथ आसानी से एक महाद्वीप से दूसरे तक उड़ सकते हैं। उड़ान, टेकऑफ़, लैंडिंग और विभिन्न आपातकालीन स्थितियों के लिए विमान तैयार करने की सारी जटिलता आपसे छिपी हुई है। उपग्रह नेविगेशन, ऑटोपायलट और वायु यातायात नियंत्रण केंद्रों का उल्लेख नहीं करना। और यह हमारे लिए जीवन को सरल बनाता है।

प्रोग्रामिंग के दृष्टिकोण से, एनकैप्सुलेशन "कार्यान्वयन को छिपा रहा है"। मुझे यह परिभाषा पसंद है। हमारी कक्षा में सैकड़ों विधियाँ हो सकती हैं और विभिन्न स्थितियों में बहुत जटिल व्यवहारों को लागू कर सकती हैं। लेकिन हम इसके सभी तरीकों को चुभने वाली आँखों से छिपा सकते हैं (उन्हें निजी संशोधक के साथ चिह्नित करके), और अन्य वर्गों के साथ बातचीत करने के लिए केवल दो या तीन तरीके छोड़ सकते हैं (उन्हें सार्वजनिक संशोधक के साथ चिह्नित करके)। तब हमारे कार्यक्रम के अन्य सभी वर्ग केवल तीन सार्वजनिक विधियों को देखेंगे और उन्हें कॉल करेंगे, अन्य नहीं। और सारी जटिलता कक्षा के अंदर छिपी होगी, ठीक वैसे ही जैसे खुश यात्रियों से कॉकपिट छिपा होता है।


4. वंशानुक्रम

विरासत के दो पहलू हैं । प्रोग्रामिंग में विरासत और वास्तविक जीवन में विरासत। प्रोग्रामिंग में, वंशानुक्रम दो वर्गों के बीच एक विशेष संबंध है । लेकिन वास्तविक जीवन में विरासत कहीं अधिक दिलचस्प है।

यदि हमें वास्तविक जीवन में कुछ बनाने की आवश्यकता है, तो हमारे पास दो विकल्प हैं:

  1. बहुत समय और प्रयास खर्च करके, वह चीज़ बनाएं जिसकी हमें खरोंच से ज़रूरत है।
  2. पहले से मौजूद किसी चीज़ के आधार पर हमें वह चीज़ बनाएँ जिसकी हमें ज़रूरत है।

इष्टतम रणनीति यह है: एक मौजूदा अच्छा समाधान लें, इसे थोड़ा संशोधित करें, इसे हमारी आवश्यकताओं के अनुरूप समायोजित करें और फिर इसका उपयोग करें।

यदि हम मानव इतिहास को उसकी शुरुआत से खोजते हैं, तो हम पाते हैं कि ग्रह पर जीवन शुरू हुए अरबों साल बीत चुके हैं। लेकिन अगर हम मनुष्यों के शुरुआती बिंदु को हमारे प्राइमेट पूर्वज मानते हैं (अर्थात मनुष्य "प्राइमेट पूर्वजों" पर आधारित हैं), तो केवल कुछ मिलियन वर्ष ही बीते हैं। खरोंच से निर्माण में अधिक समय लगता है। बहुत लंबे समय तक।

प्रोग्रामिंग में, आप एक वर्ग को दूसरे के आधार पर बनाकर कुछ ऐसा ही कर सकते हैं। नया वर्ग मौजूदा वर्ग से (विरासत में) उतरता है। यह बहुत फायदेमंद होता है जब मौजूदा वर्ग में 80-90% डेटा और विधियों की आवश्यकता होती है। हम केवल उपयुक्त वर्ग को अपनी नई कक्षा के माता-पिता के रूप में घोषित करते हैं, और मूल वर्ग के सभी डेटा और विधियाँ स्वचालित रूप से नई कक्षा में दिखाई देती हैं। सुविधाजनक, है ना?


5. बहुरूपता

बहुरूपता एक प्रोग्रामिंग अवधारणा है। यह एक ऐसी स्थिति का वर्णन करता है जहां एक इंटरफ़ेस के पीछे विभिन्न कार्यान्वयन छिपे हुए हैं। समकक्ष के लिए वास्तविक जीवन की तलाश में, हम पाते हैं कि वाहन चलाना एक अच्छा फिट है।

यदि कोई ट्रक चला सकता है, तो उसे एंबुलेंस के पहिए के पीछे या स्पोर्ट्स कार के पहिए के पीछे भी लगाया जा सकता है। कार के प्रकार की परवाह किए बिना एक व्यक्ति कार चला सकता है, क्योंकि सभी कारों में एक ही नियंत्रण इंटरफ़ेस होता है: एक स्टीयरिंग व्हील, पैडल और गियरशिफ्ट। कारों के इंटर्नल अलग हैं, लेकिन उन सभी का नियंत्रण इंटरफ़ेस समान है।

प्रोग्रामिंग की दुनिया में लौटते हुए, बहुरूपता विभिन्न वर्गों की वस्तुओं (आमतौर पर एक सामान्य पूर्वज) को उसी तरह से एक्सेस करने की अनुमति देता है, एक ऐसी संपत्ति जिसका मूल्य शायद ही बढ़ा हो। जैसे-जैसे कार्यक्रम बड़ा होता है इसका मूल्य बढ़ता जाता है।

OOP का मतलब सिद्धांत है। आंतरिक कानून। उनमें से प्रत्येक हमें किसी न किसी तरह से सीमित करता है , लेकिन जब कार्यक्रम बड़ा हो जाता है तो बदले में महान लाभ प्रदान करता है। OOP के चार सिद्धांत टेबल के चार पायों की तरह हैं। एक को हटा दो तो सारा सिस्टम अस्थिर हो जाता है।