में अमूर्तन Java

अमूर्तन क्या है? Java?

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

क्लिक करें यहाँ उत्पन्न करें यदि वीडियो उपलब्ध न हो

आइए उदाहरण के साथ OOPs में अमूर्तता का अध्ययन करें:

मान लीजिए कि आप एक बैंकिंग एप्लीकेशन बनाना चाहते हैं और आपसे अपने ग्राहक के बारे में सारी जानकारी एकत्र करने के लिए कहा जाता है। संभावना है कि आप ग्राहक के बारे में निम्नलिखित जानकारी प्राप्त करेंगे

में अमूर्तन Java
में अमूर्तन Java

लेकिन, बैंकिंग एप्लिकेशन बनाने के लिए उपरोक्त सभी जानकारी की आवश्यकता नहीं है। इसलिए, आपको केवल अपने लिए उपयोगी जानकारी का चयन करना होगा। बैंकिंग आवेदन उस पूल से। नाम, पता, कर जानकारी आदि जैसे डेटा बैंकिंग एप्लिकेशन के लिए समझ में आते हैं जो OOPs में एक अमूर्त उदाहरण है

में अमूर्तन Java

चूँकि हमने ग्राहक जानकारी को एक बड़े पूल से प्राप्त/हटाया/चुना है, इसलिए इस प्रक्रिया को अमूर्तन के रूप में संदर्भित किया जाता है। उफ़. हालाँकि, एक बार निकाली गई वही जानकारी कई तरह के अनुप्रयोगों के लिए इस्तेमाल की जा सकती है। उदाहरण के लिए, आप उसी डेटा का इस्तेमाल अस्पताल के आवेदन, जॉब पोर्टल आवेदन, सरकारी डेटाबेस आदि के लिए थोड़े या बिना किसी बदलाव के कर सकते हैं। इसलिए, यह आपका मास्टर डेटा बन जाता है। OOPs में एब्सट्रेक्शन का यह एक फायदा है।

एब्स्ट्रैक्शन और एनकैप्सुलेशन के बीच अंतर

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

सार वर्ग और इंटरफ़ेस के बीच अंतर

सार वर्ग इंटरफेस
एक अमूर्त वर्ग में अमूर्त और गैर-अमूर्त दोनों विधियाँ हो सकती हैं। इंटरफ़ेस में केवल अमूर्त विधियाँ हो सकती हैं।
यह एकाधिक उत्तराधिकार का समर्थन नहीं करता है। यह कई विरासतों का समर्थन करता है।
यह इंटरफ़ेस का कार्यान्वयन प्रदान कर सकता है। यह अमूर्त वर्ग का कार्यान्वयन प्रदान नहीं कर सकता है।
एक अमूर्त वर्ग में संरक्षित और अमूर्त सार्वजनिक विधियां हो सकती हैं। एक इंटरफ़ेस में केवल सार्वजनिक अमूर्त विधियाँ ही हो सकती हैं।
एक अमूर्त वर्ग में किसी भी एक्सेस विनिर्देशक के साथ अंतिम, स्थिर या स्थिर अंतिम चर हो सकता है। इंटरफ़ेस में केवल एक public static final variable हो सकता है।

सार वर्ग क्या है?

सार वर्ग एक प्रकार का वर्ग है Java, जो एक या अधिक अमूर्त विधियाँ घोषित करते हैं। इन कक्षाओं में अमूर्त विधियाँ और ठोस विधियाँ दोनों हो सकती हैं। एक सामान्य वर्ग में अमूर्त विधियाँ नहीं हो सकतीं। एक अमूर्त वर्ग वह वर्ग होता है जिसमें कम से कम एक अमूर्त विधि होती है। हम इस अवधारणा को इस प्रकार समझ सकते हैं जावा में आकार उदाहरण.

निम्नलिखित वर्ग पदानुक्रम पर विचार करें जिसमें एक Shape वर्ग शामिल है जिसे तीन वर्गों Rectangle, Circle, और Triangle द्वारा विरासत में प्राप्त किया गया है। Shape वर्ग को तीन वर्गों Rectangle, Circle, और Triangle द्वारा साझा की गई सामान्य विशेषताओं और विधियों को बचाने के लिए बनाया गया है। calculateArea() एक ऐसी विधि है जिसे सभी तीन चाइल्ड क्लास द्वारा साझा किया जाता है और Shape वर्ग में मौजूद है।

सार कक्षा में Java

आकार अमूर्तन उदाहरण

अब, मान लीजिए कि आप ऊपर दर्शाए गए क्लास के लिए ऑब्जेक्ट बनाने के लिए कोड लिखते हैं। आइए देखें कि ये कैसे काम करते हैं वस्तुएं एक व्यावहारिक दुनिया में दिखेंगी। आयत वर्ग की एक वस्तु एक आयत देगी, एक ऐसा आकार जिसे हम रोजमर्रा की जिंदगी में आमतौर पर देखते हैं।

सार वर्ग

त्रिभुज वर्ग की एक वस्तु त्रिभुज देगी, जो पुनः एक सामान्य दैनिक आकार है।

सार वर्ग

लेकिन व्यावहारिक दुनिया में क्लास शेप की वस्तु कैसी दिखेगी ??

सार वर्ग

यदि आप देखते हैं कि Shape वर्ग में कार्य करता है हमारा लक्ष्य प्राप्त करना विरासत और बहुरूपता. लेकिन इसे इंस्टेंटिएटेड होने के लिए नहीं बनाया गया था। ऐसी कक्षाओं को लेबल किया जा सकता है सारएक अमूर्त जावा क्लास को तत्काल नहीं बनाया जा सकता है।

सिंटेक्स:

abstract class Shape{
	// code
}

यह संभव है कि आप Shape क्लास को Abstract के रूप में लेबल न करें और फिर उसे इंस्टैंसिएट न करें। लेकिन ऐसे ऑब्जेक्ट का आपके कोड में कोई उपयोग नहीं होगा और संभावित त्रुटियों के लिए जगह खोल देगा। इसलिए यह वांछनीय नहीं है।

अमूर्त विधियाँ क्या हैं? Java?

सार विधि in Java, एक ऐसी विधि है जिसमें केवल विधि परिभाषा होती है लेकिन कार्यान्वयन नहीं होता है। बिना निकाय वाली विधि को सार विधि के रूप में जाना जाता है। इसे एक सार वर्ग में घोषित किया जाना चाहिए। सार विधि कभी भी अंतिम नहीं होगी क्योंकि सार वर्ग को सभी सार विधियों को लागू करना होगा।

जैसा कि हम सभी जानते हैं, आयत, वृत्त और त्रिभुज के क्षेत्रफल की गणना करने का सूत्र अलग है। इनहेरिटिंग क्लास द्वारा calculateArea() विधि को ओवरराइड करना होगा। इसे Shape क्लास में परिभाषित करने का कोई मतलब नहीं है, लेकिन हमें यह सुनिश्चित करने की आवश्यकता है कि सभी इनहेरिटिंग क्लासों में विधि मौजूद हो।

ऐसी विधियों को लेबल किया जा सकता है सार।

सिंटेक्स:

abstract public void calculateArea();

एक के लिए अमूर्त विधि, किसी कार्यान्वयन की आवश्यकता नहीं है। केवल विधि का हस्ताक्षर परिभाषित किया गया है।

अमूर्तन कोड उदाहरण

abstract class Shape{  
  abstract void calculateArea();  
}  
 class guru99 extends Shape{  
void calculateArea(){System.out.println("Area of Shape");}  
public static void main(String args[]){  
 Shape obj = new guru99();  
 obj.calculateArea();
}  
}

अमूर्तता के लाभ

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

अंतिम कीवर्ड Java

फ़ाइनल मॉडिफ़ायर क्लास, मेथड और वेरिएबल पर लागू होता है। फ़ाइनल का अर्थ हर संदर्भ में अलग-अलग होता है, लेकिन मूल विचार एक ही है।

  • अंतिम वर्ग को विरासत में नहीं लिया जा सकता
  • अंतिम चर स्थिरांक बन जाता है और उसका मान परिवर्तित नहीं किया जा सकता।
  • अंतिम विधि को ओवरराइड नहीं किया जा सकता। ऐसा सुरक्षा कारणों से किया जाता है, और इन विधियों का उपयोग अनुकूलन के लिए किया जाता है।

उदाहरण :- सार और अंतिम कीवर्ड सीखने के लिए

चरण 1) निम्नलिखित कोड को संपादक में कॉपी करें।

abstract class Shape{
   final int b = 20;
   public void display(){
     System.out.println("This is display method");
   }
   abstract public void calculateArea();
}

public class Rectangle extends Shape{
   public static void main(String args[]){
      Rectangle obj = new Rectangle();
      obj.display();
     //obj.b=200;
  }
  //public void calculateArea(){}
}

चरण 2) कोड को सहेजें, संकलित करें और चलाएं।

चरण 3) त्रुटि =? सार विधि Rectangle वर्ग में लागू नहीं है। समस्या को ठीक करने के लिए पंक्ति #15 की टिप्पणी हटाएँ।

चरण 4) पंक्ति # 13 को अनकमेंट करें। कोड को सहेजें और संकलित करें।

चरण 5) त्रुटि = ? चर b अंतिम है

अमूर्त विधियों और अमूर्त वर्ग का उपयोग कब करें?

अमूर्त विधियाँ अधिकतर तब घोषित की जाती हैं जब दो या दो से अधिक उपवर्ग भी अलग-अलग कार्यान्वयनों के माध्यम से अलग-अलग तरीकों से एक ही काम कर रहे हों। यह एक ही सार वर्ग का विस्तार भी करता है और अमूर्त विधियों के विभिन्न कार्यान्वयन प्रदान करता है।

अमूर्त वर्ग व्यवहार के सामान्य प्रकारों और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग वर्ग पदानुक्रम का वर्णन करने में मदद करते हैं। यह अमूर्त वर्ग के कार्यान्वयन विवरण प्रदान करने के लिए उपवर्गों का भी वर्णन करता है।

सारांश:

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