what is abstraction java learn with examples
यह ट्यूटोरियल बताता है कि प्रोग्रामिंग उदाहरणों के साथ जावा में एब्स्ट्रेक्शन क्या है। आप यह भी जानेंगे कि एक सार वर्ग क्या है और इसका उपयोग क्यों किया जाता है:
इस JAVA सीरीज में, हम ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) की महत्वपूर्ण विशेषताओं पर चर्चा करेंगे, जिन्हें चार स्तंभों के रूप में भी जाना जाता है, यानी एब्सट्रैक्शन, एनकैप्सुलेशन, इनहेरिटेंस, और पॉलीमॉर्फिज़्म।
OOP का पहला स्तंभ 'अमूर्त' है। 'अमूर्तता केवल उपयोगकर्ता को प्रासंगिक जानकारी दिखाने के लिए डेटा का चयन करने की प्रक्रिया है।'
=> यहाँ जावा शुरुआती गाइड पर एक नज़र रखना।
आप क्या सीखेंगे:
OOP में अमूर्तता
सरल शब्दों में, अमूर्त वस्तुओं के केवल प्रासंगिक गुणों को 'प्रदर्शित करता है' और अनावश्यक विवरणों को 'छुपाता है'।
उदाहरण के लिए, जब हम एक कार चला रहे होते हैं, तो हम केवल कार को शुरू करने / कार को रोकने, तेज करने / तोड़ने आदि के बारे में चिंतित होते हैं। हम इस बारे में चिंतित नहीं हैं कि वास्तविक स्टार्ट / स्टॉप मैकेनिज्म या गति / ब्रेक प्रक्रिया आंतरिक रूप से कैसे काम करती है। हम केवल उन विवरणों में रुचि नहीं रखते हैं।
हम इन कार्यों के बारे में 'सार' के बारे में चिंतित हैं जो हमें कार को आगे बढ़ाने और हमारे गंतव्य तक पहुंचने में मदद करेंगे। यह अमूर्तता का एक सरल उदाहरण है।
इस प्रकार कार में सभी तंत्र और प्रक्रियाएं होती हैं लेकिन अंत उपयोगकर्ता के दृष्टिकोण से, यानी कार चालक के दृष्टिकोण से वह केवल इन प्रक्रियाओं के सार दृश्य में रुचि रखेगा।
अमूर्तता प्रोग्रामिंग के प्रयासों को कम करती है और इस तरह जटिलता। एप्लिकेशन का उपयोग करने वाले एक अंतिम-उपयोगकर्ता को इस बात की चिंता नहीं है कि किसी विशेष सुविधा को कैसे लागू किया जाता है। वह / वह केवल आवश्यकतानुसार सुविधाओं का उपयोग कर सकता है।
इस प्रकार अमूर्तता में, हम विचारों से निपटते हैं न कि घटनाओं से। इसका मतलब यह है कि हम उपयोगकर्ता से कार्यान्वयन विवरण छिपाते हैं और अंत-उपयोगकर्ता के लिए केवल कार्यक्षमता को उजागर करते हैं। जिससे उपयोगकर्ता केवल 'यह क्या करता है' के बजाय 'यह क्या करता है' यह जान सकेगा।
OOP में अमूर्तता दो प्रकार की हो सकती है।
# 1) डेटा एब्स्ट्रक्शन
डेटा अमूर्तता में, हम ज्यादातर जटिल डेटा प्रकार बनाते हैं और उनके कार्यान्वयन को छिपाते हैं। हम केवल उनके कार्यान्वयन के विवरण में जाने के बिना इन डेटा प्रकारों में हेरफेर करने के लिए संचालन को उजागर करते हैं।
इस दृष्टिकोण का एक फायदा यह है कि हम उपयोगकर्ता के सामने आने वाले व्यवहार को बदलने के बिना कार्यान्वयन को कभी भी बदल सकते हैं।
# 2) एब्सट्रैक्शन को नियंत्रित करें
नियंत्रण अमूर्त सभी नियंत्रण बयान एकत्र करता है जो अनुप्रयोग का एक हिस्सा है और उन्हें एक इकाई के रूप में उजागर करता है। इस सुविधा का उपयोग तब किया जाता है जब हमें इस नियंत्रण इकाई का उपयोग करके कार्य करने की सुविधा प्रदान करनी होती है।
नियंत्रण अमूर्त संरचित प्रोग्रामिंग की मुख्य इकाई बनाता है और नियंत्रण अमूर्त का उपयोग करके हम सरल कार्यों को जटिल रूपरेखा में परिभाषित कर सकते हैं।
जावा में अमूर्तता क्या है
जैसा कि जावा एक ओओपी भाषा है, अमूर्त को जावा भाषा की महत्वपूर्ण विशेषताओं और भवन ब्लॉकों में से एक के रूप में देखा जा सकता है। जावा में, अमूर्त वर्ग और इंटरफ़ेस का उपयोग करके अमूर्तता को लागू किया जाता है।
तो हम जावा में अमूर्तता को कैसे लागू करते हैं? जावा अमूर्तता को लागू करने के लिए एक गैर-पहुंच संशोधक 'अमूर्त' प्रदान करता है। इस अमूर्त संशोधक का उपयोग कक्षाओं और विधियों के साथ किया जा सकता है लेकिन चर नहीं।
इंटरफ़ेस पूर्ण अमूर्तता प्रदान करता है यानी यह केवल पद्धति प्रोटोटाइप प्रदान करता है न कि उनका कार्यान्वयन। एक अमूर्त वर्ग आंशिक अमूर्तता प्रदान करता है जिसमें कम से कम एक विधि को लागू नहीं किया जाना चाहिए।
इस ट्यूटोरियल में हम एब्सट्रैक्ट के साथ अमूर्त कक्षाओं के बारे में विस्तार से चर्चा करेंगे। हम अपने बाद के ट्यूटोरियल में विस्तार से इंटरफेस का पता लगाएंगे।
जावा अमूर्त उदाहरण
नीचे दिए गए उदाहरण पर विचार करें।
//abstract class abstract class Car{ abstract void accelerate(); } //concrete class class Suzuki extends Car{ void accelerate(){ System.out.println('Suzuki::accelerate'); } } class Main{ public static void main(String args()){ Car obj = new Suzuki(); //Car object =>contents of Suzuki obj.accelerate(); //call the method } }
आउटपुट:
ऊपर दिए गए सरल अमूर्त उदाहरण में एक क्लास कार है। इस श्रेणी की कार में, हमारे पास तेजी लाने के लिए एक सार विधि है ()। तब हमें यह वर्ग सुजुकी वर्ग में मिला। सुजुकी वर्ग के अंदर, हम गति विधि को लागू करते हैं।
उपरोक्त उदाहरण बस उस तरीके को दिखाता है जिसमें एक सार वर्ग को परिभाषित, विरासत में मिला है, और फिर कार्यक्रम में उपयोग किया जाता है।
जावा सार वर्ग क्या है
हमने पहले ही उल्लेख किया है कि जावा अमूर्त कक्षाओं और इंटरफेस का उपयोग करके अमूर्तता को लागू करता है। आइए पहले सार वर्ग के बारे में सब कुछ जानें।
एक सार वर्ग को 'अमूर्त' कीवर्ड के साथ घोषित एक वर्ग के रूप में परिभाषित किया जा सकता है और एक प्रतिबंध है कि इसे तत्काल नहीं किया जा सकता है।
एक अमूर्त वर्ग में कोई अमूर्त विधि (कोई कार्यान्वयन के साथ एक विधि) नहीं हो सकती है। जहां तक जेवीएम का सवाल है, एक अमूर्त वर्ग एक अधूरा वर्ग है जिसमें पूर्ण व्यवहार नहीं होता है।
अमूर्त वर्ग का सामान्य सिंटैक्स नीचे दिया गया है:
abstract class { public abstract void abstractMethod(); public void normalMethod() { //method body } }
जैसा कि उपरोक्त सार वर्ग के वाक्य-विन्यास में दिखाया गया है, हम सार के साथ-साथ एक सार वर्ग में गैर-अमूर्त तरीके भी रख सकते हैं। कीवर्ड 'एब्सट्रैक्ट' वर्ग घोषणा से पहले है।
संक्षेप में, एक अमूर्त वर्ग को नीचे दिखाया गया है।
जावा में सार विधि
एक अमूर्त विधि एक ऐसा तरीका है जो बिना किसी कार्यान्वयन के keyword अमूर्त ’कीवर्ड से पहले होता है। एक अमूर्त वर्ग के अंदर एक अमूर्त विधि घोषित की जाती है।
अमूर्त विधि वह है जो किसी वर्ग को अपूर्ण बना देती है क्योंकि उसका कार्यान्वयन नहीं होता है। इसलिए जब हम कक्षा में एक सार पद्धति शामिल करते हैं, तो स्वाभाविक रूप से वर्ग अधूरा हो जाता है।
हम अमूर्त विधि का उपयोग उपवर्ग में लागू करके कर सकते हैं अर्थात् एक वर्ग सार वर्ग को विरासत में देता है और फिर उन्हें ओवरराइड करके सार वर्ग में घोषित सभी सार विधियों के लिए कोड प्रदान करता है या प्रदान करता है।
इस प्रकार उपवर्ग में अमूर्त विधि को ओवरराइड करना अनिवार्य हो जाता है। यदि उपवर्ग में भी सार पद्धति को लागू नहीं किया जाता है, तो हमें उपवर्ग को भी 'सार' घोषित करना होगा।
अमूर्त विधि की सामान्य घोषणा है:
सार शून्य मेथडनाम (पैरामीटर_लिस्ट);
सार विधि लिखते समय, हमें निम्नलिखित नियमों को याद रखने की आवश्यकता है:
- एक वर्ग जिसमें एक या अधिक अमूर्त विधियाँ हैं, एक अमूर्त वर्ग है।
- अमूर्त कीवर्ड के साथ कुछ अन्य कीवर्ड का उपयोग नहीं किया जाना चाहिए।
इस प्रकार, निम्नलिखित संयोजन जावा में अवैध हैं।
- अंतिम
- मूल निवासी
- सार स्थिर
- सार निजी
- सार सिंक्रनाइज़ किया गया
- सार सख्त
आइए एक अमूर्त वर्ग और एक अमूर्त पद्धति का उदाहरण लागू करें।
सबसे अच्छा मुफ्त फ़ायरवॉल क्या है
//abstract class abstract class Bank{ abstract int getInterestRate(); } //concrete class class Citi extends Bank{ int getInterestRate(){return 7;} } //concrete class class HSBC extends Bank{ int getInterestRate(){return 6;} } class Main{ public static void main(String args()){ Bank b; b = new Citi (); // concrete class object System.out.println('Citi Rate of Interest is: '+b.getInterestRate()+'%'); b = new HSBC (); // concrete class object System.out.println('HSBC Rate of Interest is: '+b.getInterestRate()+'%'); } }
आउटपुट:
उपरोक्त उदाहरण में, हमारे पास एक बैंक वर्ग है। इस वर्ग में, हमारे पास एक सार विधि है, getInterestRate ()। फिर हम दो वर्गों - आईसीआईसीआई और बीओआई की घोषणा करते हैं जो बैंक वर्ग से विरासत में मिली हैं। ये दोनों वर्ग अपनी-अपनी ब्याज दरों को वापस करके getInterestRate () पद्धति को लागू करते हैं।
फिर मुख्य विधि में, हम एक बैंक ऑब्जेक्ट बनाते हैं। सबसे पहले, बैंक ऑब्जेक्ट में ICICI वर्ग का एक ऑब्जेक्ट होता है और ब्याज दर प्रदर्शित करता है। अगला, BOI ऑब्जेक्ट बनाया गया है और यह ब्याज दर प्रदर्शित करता है।
इस प्रकार, हम यह मान सकते हैं कि बैंक वर्ग एक प्रकार का स्केच या एक संरचना है जो हमें ब्याज दर प्राप्त करने की अनुमति देता है। इस संरचना से, हम जितने चाहें उतने ठोस वर्ग बना सकते हैं, और फिर हम प्रत्येक बैंक वस्तु के लिए संबंधित ब्याज दरें प्राप्त कर सकते हैं (यह मुख्य विधि में दिखाया गया है)।
जावा में एक सार वर्ग का उपयोग क्या है
हम एक अमूर्त वर्ग का उपयोग क्यों करते हैं जब वास्तव में इसका कोई कार्यान्वयन नहीं होता है?
उपरोक्त प्रश्न के उत्तर के साथ, हम यह भी बताएंगे कि उदाहरण में एक अमूर्त वर्ग का उपयोग कैसे किया जाए।
आइए वाहनों का एक उदाहरण देखें। हम जानते हैं कि वाहन कई प्रकार के हो सकते हैं। हमारे पास कार, स्कूटर, बाइक, मोपेड, बस आदि हो सकते हैं, हालांकि कई प्रकार के वाहन हैं, उनके पास कुछ गुण या विशेषताएं हैं जो सभी प्रकार के वाहनों के बावजूद आम हैं।
उदाहरण के लिए, प्रत्येक वाहन का एक मॉडल, चेसिस नंबर, रंग आदि होता है। उनमें से प्रत्येक में स्टार्ट, स्टॉप, एक्सीलेंस, ब्रेक आदि जैसे कार्य होते हैं। अब प्रत्येक वाहन में उपरोक्त गुण और विधियाँ होंगी जो दूसरों के लिए भी सामान्य हैं। एक वाहन उपयोगकर्ता के रूप में एक ही समय में, हम कुछ पहलुओं में दिलचस्पी नहीं ले सकते।
उदाहरण के लिए, यदि कोई व्यक्ति कार चला रहा है, तो उसे वाहन चलाने या रोकने या वाहन को तेज करने या ब्रेक देने में दिलचस्पी होगी। वह यह जानने में दिलचस्पी नहीं रखता है कि वाहन कैसे शुरू होता है या रुकता है। हम केवल कार्यों के सार काम में रुचि रखते हैं और उनके विवरण में नहीं।
अब यदि हम उपरोक्त उदाहरण प्रणाली को एक सॉफ्टवेयर अनुप्रयोग में प्रस्तुत करना चाहते हैं, तो हम इसे कैसे डिज़ाइन करते हैं? सबसे पहले, हम कुछ अमूर्तता को लागू करेंगे। अब, हम जानते हैं कि कुछ कार्य सामान्य हैं लेकिन प्रत्येक मॉडल के आधार पर इन कार्यों का कार्यान्वयन अलग होगा।
शुरू करने के लिए, हम एक सार वर्ग 'वाहन' घोषित करते हैं।
हमने इस प्रणाली को नीचे दिखाया है:
इसलिए हमारे पास एक सार वर्ग वाहन होगा और वाहन के प्रत्येक मॉडल का प्रतिनिधित्व करने वाला एक ठोस वर्ग होगा। उदाहरण के प्रयोजनों के लिए, हमने केवल तीन मॉडल यानि कार, बाइक और स्कूटर का उपयोग किया है।
नीचे दिए गए उपरोक्त प्रणाली से वर्ग पदानुक्रम है।
abstract class Vehicle{ abstract void start () ; abstract void stop (); abstract void accelerate (); abstract void brake (); } class Car extends Vehicle{ void start () { //code here…} void stop () { //code here…} void accelerate () { //code here…} void brake () { //code here…} } class Bike extends Vehicle{ void start () { //code here…} void stop () { //code here…} void accelerate () { //code here…} void brake () { //code here…} } class Scooter extends Vehicle{ void start () { //code here…} void stop () { //code here…} void accelerate () { //code here…} void brake () { //code here…} }
इसलिए हमारे पास एक वाहन सार वर्ग और तीन वर्ग कार, बाइक और स्कूटर होंगे। इनमें से प्रत्येक वर्ग वाहन वर्ग का विस्तार करेगा और प्रत्येक सार पद्धति को ओवरराइड करेगा।
इस प्रकार, सामान्य तौर पर, जब भी हमें ऐसी प्रणाली का प्रतिनिधित्व करना होता है जिसमें प्रतिनिधित्व करने के लिए सामान्य तरीके या संचालन होते हैं, तो उपयोगकर्ता को केवल बाहरी दृष्टिकोण पेश करने के लिए, हम अमूर्तता के लिए जाते हैं। नतीजतन, हम सामान्य तरीकों को निकालते हैं और उन्हें सार विधियों के रूप में दर्शाते हैं और इन सार तरीकों को एक सामान्य सार वर्ग में इकट्ठा करते हैं।
एक बार जब हमारे पास अमूर्त वर्ग के रूप में प्रतिनिधित्व प्रणाली की व्यवस्था और अमूर्त विधियों के रूप में संचालन होता है, तो हम दिए गए अमूर्त वर्ग से किसी भी वर्ग की संख्या प्राप्त कर सकते हैं और प्रत्येक कक्षा के लिए इन परिचालनों को लागू करने के लिए सार विधियों को ओवरराइड कर सकते हैं।
कैसे एक सरणी जावा में एक मूल्य जोड़ने के लिए
इस तरह यह एक प्रणाली को डिजाइन करने के लिए उपयोगी हो जाता है।
सार वर्ग और इंटरफ़ेस
हमने सार वर्ग को ऊपर देखा है। इंटरफेस अभी तक अन्य बिल्डिंग ब्लॉक हैं जो अमूर्तता को लागू करते हैं। इंटरफेस अनुबंध हैं, और इंटरफ़ेस को लागू करने वाले वर्गों को इन अनुबंधों का सम्मान करना होगा।
इंटरफेस में कॉन्ट्रैक्ट कुछ और नहीं बल्कि ऐसे तरीके हैं जो लागू नहीं होते हैं। इंटरफेस के अंदर, हमारे पास केवल विधि प्रोटोटाइप होंगे। इंटरफेस के अंदर तरीकों का एक भी कार्यान्वयन नहीं होगा।
यदि हमारे पास एक इंटरफ़ेस घोषणा निम्नानुसार है:
public interface interfaceA{ void myInterfaceMethod (); }
तब इंटरफ़ेस को लागू करने वाले किसी भी वर्ग को 'myInterfaceMethod' को ओवरराइड करना होगा।
यदि हम किसी कक्षा में विधि को ओवरराइड नहीं करते हैं, तो उस वर्ग को सार के रूप में दर्शाया जाता है।
abstract class TestClass implements interfaceA{ // not a compulsion to override myInterfaceMethod. }
हमारे पास बाद में इंटरफ़ेस पर एक अलग ट्यूटोरियल होगा।
इसके बाद, जावा में एब्सट्रैक्ट क्लासेस और इंटरफेसेस के बीच कुछ अंतरों पर चर्चा करते हैं।
सार वर्ग और इंटरफ़ेस के बीच अंतर
सार वर्ग | इंटरफेस |
---|---|
एक सार वर्ग में सार्वजनिक सदस्यों के अलावा निजी या संरक्षित डेटा सदस्य हो सकते हैं। | इंटरफ़ेस सदस्य डिफ़ॉल्ट रूप से सार्वजनिक होते हैं। |
एक सार वर्ग में अमूर्त और / या गैर-अमूर्त विधियां हो सकती हैं। | एक इंटरफ़ेस में केवल अमूर्त विधियाँ हो सकती हैं। |
सार में अंतिम चर नहीं हो सकता है या नहीं हो सकता है। | डिफ़ॉल्ट चर के रूप में इंटरफ़ेस अंतिम रूप दे सकता है। |
एक सार वर्ग में अंतिम, स्थिर या गैर-स्थिर या गैर-अंतिम चर हो सकते हैं। | इंटरफेस में केवल अंतिम और स्थैतिक चर हो सकते हैं। |
एक सार वर्ग इंटरफ़ेस कार्यान्वयन प्रदान कर सकता है। | इंटरफेस एक अमूर्त वर्ग को लागू नहीं कर सकता है। |
एक सार वर्ग 'फैली हुई' कीवर्ड का उपयोग करके विरासत में मिला है। | इंटरफ़ेस 'कार्यान्वयन' कीवर्ड का उपयोग करके कार्यान्वित किया गया है। |
एक सार वर्ग अन्य वर्गों का विस्तार कर सकता है या कई इंटरफेस को लागू कर सकता है। | इंटरफ़ेस केवल दूसरे इंटरफ़ेस को लागू कर सकता है। |
जावा में सार वर्ग और इंटरफ़ेस का उपयोग कब करें
अमूर्त वर्ग का उपयोग कब करना है और जावा अनुप्रयोग में इंटरफेस का उपयोग कब करना है, इस बारे में निर्णय बुद्धिमानी से लिया जाना चाहिए क्योंकि हाथ में समस्या को अच्छी तरह से समझने के बाद। दो पहलू हैं जिन्हें हमें नीचे दिखाए गए अनुसार समझना होगा।
आंशिक व्यवहार के साथ सार कक्षाएं
हम जानते हैं कि अमूर्त वर्गों को पूरी तरह से कम लागू नहीं किया जा सकता है। उनका आंशिक व्यवहार हो सकता है। दूसरी ओर, इंटरफेस के पास कोई कार्यान्वयन नहीं है। इसलिए जब हमें एक अमूर्त वर्ग और कार्यान्वयन के बीच चयन करना होता है, तो हमें अपने आवेदन के इस पहलू पर विचार करना होगा।
इसका मतलब यह है कि हमें पहले यह तय करना होगा कि क्या हम जो एप्लिकेशन डिजाइन कर रहे हैं उसका कोई सामान्य आंशिक कार्यान्वयन है जिसे हम एक अमूर्त वर्ग में अलग कर सकते हैं।
उदाहरण के लिए, विचार करें कि हम एक वेब एप्लिकेशन डिज़ाइन कर रहे हैं। इसके लिए, हमें कुछ वेब तकनीक का उपयोग करना होगा, जैसे कि सर्वलेट, रीस्ट एपीआई इत्यादि। अब इन वेब तकनीकों में से प्रत्येक में कुछ तकनीकें या कदम हैं, जिन्हें लागू किए जाने के बावजूद लागू किया जाना है। फिर हम अपने अनुकूलित एप्लिकेशन का निर्माण करते हैं।
तो इस मामले में, निश्चित कोड जिसे वेब तकनीक को निष्पादित करना है एक अमूर्त वर्ग में रखा जा सकता है। क्या इसके लिए हमारे पास कोई इंटरफ़ेस हो सकता है? नहीं, क्योंकि इंटरफ़ेस में कार्यान्वयन नहीं हो सकता है।
अनुबंध केवल इंटरफेस
हम जानते हैं कि इंटरफेस में अनुबंध या विधियां हैं जो इसका एक हिस्सा हैं। ये विधियाँ केवल प्रोटोटाइप हैं। हमें इन इंटरफेस को एक कक्षा में लागू करना होगा और फिर विधियों को ओवरराइड करना होगा।
अब जावा कलेक्शंस फ्रेमवर्क के मैप इंटरफेस पर विचार करें। कई वर्ग जैसे हाशप, ट्रीपैप और हैशटेबल आदि इस इंटरफ़ेस को लागू करते हैं। इनमें से प्रत्येक वर्ग का एक अलग कार्यान्वयन है। उनके पास कोई सामान्य व्यवहार नहीं है जिसे अमूर्त वर्ग में दर्शाया जा सकता है।
तो हम क्या करते हैं कि हम विधि प्रोटोटाइप के साथ एक इंटरफ़ेस डिज़ाइन करें और फिर प्रत्येक कक्षाओं को लागू करें।
इस तरह से हमें अमूर्त वर्ग और इंटरफ़ेस के बीच चयन करने से पहले प्रत्येक कारक को ठीक से तौलना चाहिए।
अंतर के बीच अंतर और एनकैप्सुलेशन
आइए अमूर्त और OOP की एक और महत्वपूर्ण विशेषता के बीच अंतर के कुछ अंतरों पर चर्चा करें।
मतिहीनता | कैप्सूलीकरण |
---|---|
जानकारी प्राप्त करने और अमूर्त करने की प्रक्रिया | जानकारी को बांधने की प्रक्रिया। |
अमूर्त तकनीक डिजाइन या इंटरफ़ेस स्तर पर है। | एन्कैप्सुलेशन तंत्र कार्यान्वयन स्तर पर है। |
अमूर्त विवरण छुपाता है। | इनकैप्सुलेशन सूचना को एक इकाई में बांधता है जिससे सूचना सुरक्षा सुनिश्चित होती है। |
अमूर्त वर्गों और इंटरफेस का उपयोग करके अमूर्त को लागू किया जाता है। | एक्सेस मॉडिफायर अर्थात् सार्वजनिक, निजी और संरक्षित और डिफ़ॉल्ट इनकैप्सुलेशन में भूमिका निभाते हैं। |
अमूर्तता में, केवल सार दृश्य उपयोगकर्ता को प्रस्तुत किया जाता है जबकि जटिल और विस्तृत डेटा उपयोगकर्ता से छिपा होता है। | एनकैप्सुलेशन में, डेटा को एक इकाई के रूप में बंडल किया जाता है और एक्सेस मॉडिफायर और गेट्टर और सेटर विधियों का उपयोग करके इसे संरक्षित या सुलभ बनाया जा सकता है। |
बार बार पूछे जाने वाले प्रश्न
Q # 1) क्या एब्सट्रैक्शन और डेटा एक ही है?
उत्तर: नहीं, Abstraction और Data Hide करना समान नहीं है। लेकिन दोनों वस्तु-उन्मुख प्रोग्रामिंग की महत्वपूर्ण विशेषताएं हैं। जबकि अमूर्त पृष्ठभूमि की जानकारी को छिपाने की एक प्रक्रिया है, डेटा छिपाना प्रत्यक्ष पहुंच से डेटा को इन्सुलेट करने की एक तकनीक है।
Q # 2) एब्सट्रैक्शन के क्या फायदे हैं?
उत्तर: अमूर्त के कुछ फायदे नीचे दिए गए हैं:
- पृष्ठभूमि के विवरण को छिपाने और उपयोगकर्ता को केवल सार दृश्य को उजागर करने से, अमूर्तता कोड को सरल और अधिक पठनीय बनाती है।
- जैसा कि अमूर्तता अनावश्यक विवरणों को ढालती है, यह कोड को छोटा बनाता है।
- कोड रखरखाव बिना अमूर्त के जटिल और कठिन हो सकता है।
Q # 3) एब्स्ट्रेक्शन इतना महत्वपूर्ण क्यों है?
उत्तर: अमूर्तता हमें पृष्ठभूमि के विवरण को छिपाने की अनुमति देती है जो महत्वपूर्ण हैं और दुनिया में लीक होने पर अराजकता का कारण बन सकते हैं। पृष्ठभूमि के विवरणों को छिपाकर और उपयोगकर्ता के लिए केवल आवश्यक इंटरफ़ेस को उजागर करके, अमूर्तता अनुप्रयोगों को सरल बनाती है।
Q # 4) एक वास्तविक समय के उदाहरण के साथ अमूर्तता को समझाइए।
उत्तर: ज्यामितीय आकृतियों, वाहनों आदि सहित अमूर्तता के कई वास्तविक समय के उदाहरण हैं, फिर भी एक और उदाहरण एटीएम (स्वचालित टेलर मशीन) है। एटीएम कैश विदड्रॉल, बैलेंस चेकिंग, मनी ट्रांसफर आदि जैसे ऑपरेशंस को सपोर्ट करता है, लेकिन हमें इस बात की जानकारी नहीं है कि ये ऑपरेशन आंतरिक रूप से कैसे काम करते हैं।
हमें केवल आवश्यक संचालन का चयन और प्रदर्शन करने के लिए एक यूजर इंटरफेस के साथ एक मॉनिटर दिया जाता है।
Q # 5) क्या हम बिना एनकैप्सुलेशन के एब्सट्रैक्शन हासिल कर सकते हैं?
उत्तर: अमूर्तता कार्यान्वयन विवरणों को ढाल देती है और एन्कैप्सुलेशन ऑब्जेक्ट विवरण को छुपाता है। वस्तु वास्तविक-संसार का सार रूप है और इसके विवरण को एनकैप्सुलेशन का उपयोग करते हुए छिपाया जाता है। इस प्रकार गर्भपात के लिए एनकैप्सुलेशन की आवश्यकता होती है।
निष्कर्ष
इस ट्यूटोरियल में, हमने विस्तार से जावा में अमूर्त चर्चा की है। अमूर्तता उपयोगकर्ता से अनावश्यक विवरण छिपाने की एक तकनीक है। उपयोगकर्ता को केवल उन विवरणों तक पहुंच दी जाती है जो प्रासंगिक हैं। वाहन संचालन या एटीएम संचालन वास्तविक दुनिया में अमूर्तता के क्लासिक उदाहरण हैं।
जब हम एटीएम का उपयोग करते हैं, तो हम केवल नकद निकासी जैसे कार्यों को करने में रुचि रखते हैं, आदि के बारे में विवरणों के बारे में जानने के बिना कि वास्तव में आंतरिक रूप से ऑपरेशन कैसे किया जाता है।
जावा अमूर्त वर्गों और इंटरफेस के माध्यम से अमूर्तता प्रदान करता है। जबकि इंटरफेस 100% अमूर्तता प्रदान करते हैं, अमूर्त वर्ग आंशिक अमूर्तता प्रदान करते हैं। इंटरफेस और अमूर्त वर्गों के बीच चयन को विकसित किए जाने वाले एप्लिकेशन के आधार पर बनाया जाना चाहिए और यह भी कि उपयोगकर्ता को कौन सी जानकारी उजागर करनी है।
हमने इस ट्यूटोरियल में सार वर्गों और इंटरफेस के बीच अंतर के साथ-साथ सार विधियों पर भी चर्चा की।
=> यहाँ सभी जावा ट्यूटोरियल की जाँच करें।
अनुशंसित पाठ
- उदाहरण के साथ जावा इंटरफेस और एब्सट्रैक्ट क्लास ट्यूटोरियल
- जावा इंटेगर एंड जावा बिगइन्टेगर क्लास विद एग्जाम्पल्स
- उदाहरण के साथ जावा स्कैनर क्लास ट्यूटोरियल
- जावा वेक्टर क्या है | उदाहरणों के साथ जावा वेक्टर क्लास ट्यूटोरियल
- जावा Enum: जावा गणन ट्यूटोरियल उदाहरण के साथ
- जावा बेसिक्स: जावा सिंटैक्स, जावा क्लास और कोर जावा कॉन्सेप्ट
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- जावा Iterator: उदाहरण के साथ जावा में Iterators का उपयोग करना सीखें