- Introduction to Java OOPs Concepts in Hindi
- Object-Oriented Programming System in Java in Hindi
- Object
- Class
- Inheritance
- Polymorphism
- Abstraction
- Encapsulation
Introduction to OOPs Concepts in Java
इस पृष्ठ में, हम OOPs की मूल बातों के बारे में जानेंगे। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग एक प्रतिमान (paradigm) है जो कई अवधारणाएं प्रदान करता है, जैसे inheritance, data binding, polymorphism आदि।
Simula को पहली object oriented प्रोग्रामिंग भाषा माना जाता है। प्रोग्रामिंग paradigm जहां हर एक चीज का प्रतिनिधित्व एक object के रूप में किया जाता है, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा के रूप में जाना जाता है।
Smalltalk को पहली सही मायने में object oriented प्रोग्रामिंग भाषा माना जाता है।
लोकप्रिय object oriented भाषाएं Java , C# , PHP , python , C++ आदि हैं।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का मुख्य उद्देश्य वास्तविक दुनिया की entities को लागू करना है, उदाहरण के लिए, object, classes, abstraction, inheritance, polymorphism, आदि।
OOPs (object oriented programming system)
ऑब्जेक्ट का मतलब एक वास्तविक दुनिया की इकाई है जैसे कि पेन, कुर्सी, टेबल, कंप्यूटर, घड़ी, आदि। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग क्लास और ऑब्जेक्ट्स का उपयोग करके प्रोग्राम डिजाइन करने के लिए एक पद्धति या प्रतिमान है। यह कुछ अवधारणाओं को प्रदान करके सॉफ्टवेयर विकास और रखरखाव को सरल बनाता है:
- Object
- Class
- Inheritance
- Polymorphism
- Abstraction
- encapsulation
इन अवधारणाओं के अलावा, कुछ अन्य शब्द हैं जो ऑब्जेक्ट-ओरिएंटेड डिज़ाइन में उपयोग किए जाते हैं:
- Coupling
- Cohesion
- Association
- Aggregation
- Composition
Object

कोई भी इकाई जिसकी कोई state और behaviour हो उसे एक वस्तु के रूप में जाना जाता है। उदाहरण के लिए, एक कुर्सी, कलम, मेज, कीबोर्ड, बाइक, आदि यह physical या logical हो सकता है।
एक ऑब्जेक्ट को एक class के instance के रूप में परिभाषित किया जा सकता है। एक ऑब्जेक्ट में एक address होता है और मेमोरी में कुछ जगह लेता है। ऑब्जेक्ट एक-दूसरे के डेटा या कोड के विवरण को जाने बिना communicate कर सकते हैं केवल आवश्यक चीज स्वीकार किए गए संदेश का प्रकार है और objects द्वारा response का प्रकार।
उदाहरण: एक कुत्ता एक वस्तु है क्योंकि इसमें रंग, नाम, नस्ल, आदि के साथ-साथ पूंछ को हिलाने, भौंकने, खाने आदि जैसे व्यवहार हैं।
Class
Objects के संग्रह को class कहा जाता है। यह एक logical इकाई है।
एक class को एक ब्लूप्रिंट के रूप में भी परिभाषित किया जा सकता है जिससे आप एक individual object बना सकते हैं। क्लास space consume नहीं करता है।
Inheritance
जब कोई object किसी parent object के सभी गुणों और व्यवहारों को प्राप्त कर लेती है , तो उसे inheritance के रूप में जाना जाता है। यह कोड reusability प्रदान करता है। इसका उपयोग runtime polymorphism को प्राप्त करने के लिए किया जाता है।
Polymorphism

यदि किसी कार्य को विभिन्न तरीकों से किया जाता है , तो इसे बहुरूपता के रूप में जाना जाता है। उदाहरण के लिए: ग्राहक को अलग-अलग ढंग से समझाने के लिए, कुछ draw करने के लिए, उदाहरण के लिए, आकृति, त्रिकोण, आयत आदि।
जावा में, हम बहुरूपता को प्राप्त करने के लिए method overloading और method overriding का उपयोग करते हैं।
एक और उदाहरण कुछ बोलने के लिए हो सकता है; उदाहरण के लिए, एक बिल्ली म्याऊ बोलती है, कुत्ते भौंकते हैं, आदि।
Abstraction
Internal details को छिपाना और functionality दिखाना abstraction के रूप में जाना जाता है। उदाहरण के लिए फोन कॉल, हम internal processing नहीं जानते।
जावा में, हम abstract class और interface का उपयोग abstraction प्राप्त करने के लिए करते हैं।
encapsulation

एक इकाई में कोड और डेटा को एक साथ bind (या लपेटना) एनकैप्सुलेशन के रूप में जाना जाता है । उदाहरण के लिए, एक कैप्सूल, इसे विभिन्न दवाओं के साथ लपेटा जाता है।
एक जावा class एनकैप्सुलेशन का उदाहरण है। जावा bean पूरी तरह से इनकैप्सुलेटेड क्लास है क्योंकि यहां सभी डेटा members private हैं।
Coupling
Coupling से तात्पर्य किसी अन्य class के ज्ञान या सूचना या निर्भरता से है। यह तब उठता है जब classes एक-दूसरे के बारे में जानते हैं। यदि किसी class के पास किसी अन्य class की जानकारी का विवरण है, तो मजबूत coupling है। जावा में, हम एक class, method और क्षेत्र के दृश्यता स्तर class को प्रदर्शित करने के लिए निजी, संरक्षित और सार्वजनिक modifiers का उपयोग करते हैं। आप कमजोर coupling के लिए इंटरफेस का उपयोग कर सकते हैं क्योंकि कोई ठोस implementation नहीं है।
Cohesion
Cohesion एक component के स्तर को संदर्भित करता है जो एक अच्छी तरह से परिभाषित कार्य करता है। एक एकल अच्छी तरह से परिभाषित कार्य एक अत्यधिक cohesive method द्वारा किया जाता है। कमजोर cohesive method कार्य को अलग-अलग भागों में विभाजित करेगी। Java.io पैकेज एक highly cohesive पैकेज है क्योंकि इसमें I/O संबंधित classes और interface हैं। हालाँकि, java.util पैकेज एक कमजोर cohesive पैकेज है क्योंकि इसमें असंबंधित classes और इंटरफेस हैं।
Association
Association objects के बीच संबंध का प्रतिनिधित्व करता है। यहां, एक वस्तु को एक वस्तु या कई वस्तुओं के साथ जोड़ा जा सकता है। वस्तुओं के बीच चार प्रकार के संबंध हो सकते हैं:
- One to One
- One to Many
- Many to One, and
- Many to Many
आइए real-time उदाहरणों के साथ संबंध को समझते हैं। उदाहरण के लिए, एक देश में एक प्रधानमंत्री (One to One) हो सकता है, और एक प्रधानमंत्री में कई मंत्री (One to Many) हो सकते हैं। इसके अलावा, कई सांसदों के पास एक प्रधानमंत्री (Many to One) हो सकते हैं, और कई मंत्रियों के पास कई विभाग (Many to Many) हो सकते हैं।
एसोसिएशन undirectional या bidirectional हो सकता है।
Aggregation
Aggregation एसोसिएशन को प्राप्त करने का एक तरीका है। aggregation उस संबंध का प्रतिनिधित्व करता है जहां एक वस्तु में उसके State के हिस्से के रूप में अन्य वस्तुएं होती हैं। यह objects के बीच कमजोर संबंध का प्रतिनिधित्व करता है। इसे जावा में एक has-a संबंध भी कहा जाता है। जैसे, विरासत is-a रिश्ते का प्रतिनिधित्व करती है। यह वस्तुओं के पुन: उपयोग का एक और तरीका है। यह वस्तुओं के पुन: उपयोग का एक और तरीका है।
Composition
Composition भी एसोसिएशन को प्राप्त करने का एक तरीका है। composition उस संबंध का प्रतिनिधित्व करती है जहां एक वस्तु में उसके state के हिस्से के रूप में अन्य वस्तुएँ होती हैं। containing object और dependent object के बीच एक मजबूत संबंध है। यह वह state है जहां वस्तुओं का स्वतंत्र अस्तित्व नहीं है। यदि आप parent ऑब्जेक्ट को हटाते हैं, तो सभी child ऑब्जेक्ट automatically हटा दिए जाएंगे।
Advantage of OOPs over Procedure-oriented programming language
1) OOPs विकास और रखरखाव को आसान बनाता है, जबकि एक प्रक्रिया-उन्मुख प्रोग्रामिंग भाषा में, कोड आकार बढ़ने पर प्रबंधन करना आसान नहीं है।
2) OOP डेटा छुपाता है, जबकि, प्रक्रिया-उन्मुख प्रोग्रामिंग भाषा में, global डेटा कहीं से भी एक्सेस किया जा सकता है।
चित्र: प्रक्रिया-उन्मुख कार्यक्रम में डेटा प्रतिनिधित्व
चित्र: ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में डेटा प्रतिनिधित्व
3) OOPs वास्तविक दुनिया की घटना को अधिक प्रभावी ढंग से अनुकरण करने की क्षमता प्रदान करता है। यदि हम ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा का उपयोग कर रहे हैं तो हम real world problem का समाधान प्रदान कर सकते हैं।
What is the difference between an object-oriented programming language and object-based programming language?
ऑब्जेक्ट-आधारित प्रोग्रामिंग भाषा inheritance को छोड़कर OOPs की सभी विशेषताओं का अनुसरण करती है। जावास्क्रिप्ट और VBScript ऑब्जेक्ट-आधारित प्रोग्रामिंग भाषाओं के उदाहरण हैं।