मैं OOP में 'अमूर्तता' की परिभाषा को समझने की कोशिश कर रहा हूं।
मैं कुछ मुख्य परिभाषाओं में आया हूं। क्या वे सभी वैध हैं? क्या उनमें से एक गलत है? मैं उलझन में हूं। (मैंने अपने शब्दों के साथ परिभाषा को फिर से लिखा)।
परिभाषा 1:
अमूर्तन वास्तविक दुनिया से कुछ वस्तु लेने और इसे प्रोग्रामिंग शब्दों में परिवर्तित करने की अवधारणा है। इस तरह के एक बनाने के रूप में Human
वर्ग और यह दे रही है int health
, int age
, String name
, आदि गुण, और eat()
आदि तरीकों।
परिभाषा 2:
एक अधिक सामान्य परिभाषा। अमूर्तता एक अवधारणा है जो एक सॉफ्टवेयर सिस्टम में कहीं भी होती है जहां 'चीजों को अधिक सामान्य / सरल / अमूर्त' बनाना शामिल है। कुछ उदाहरण:
एक वंशानुक्रम पदानुक्रम, जहां उच्च वर्ग सरल या अधिक सामान्य होते हैं, और अधिक सामान्य और अमूर्त कार्यान्वयन को परिभाषित करते हैं। जबकि पदानुक्रम में निम्न वर्ग अधिक ठोस होते हैं और अधिक विस्तृत कार्यान्वयन को परिभाषित करते हैं।
अन्य वर्गों से एक वर्ग के कार्यान्वयन के विवरण को छिपाने के लिए इनकैप्सुलेशन का उपयोग करना, इस प्रकार कक्षा को बाहरी सॉफ़्टवेयर दुनिया के लिए और अधिक 'सार' (सरल) बनाना।
परिभाषा ३
एक अन्य सामान्य परिभाषा: अमूर्तता, चीजों के प्रकारों (अर्थात कक्षाओं) के विवरणों और ठोस कार्यान्वयन से ध्यान हटाने की अवधारणा है, जो उपलब्ध संचालन (अर्थात विधियाँ), आदि, इस प्रकार प्रोग्रामिंग को सरल, अधिक सामान्य, आदि बनाते हैं। और अधिक सार। (यह सॉफ्टवेयर सिस्टम में कहीं भी और किसी भी संदर्भ में हो सकता है)। यह एन्कैप्सुलेट करते समय उदाहरण के लिए होता है, क्योंकि एनकैप्सुलेशन का मतलब कार्यान्वयन के विवरणों को छिपाना है और केवल चीजों के प्रकार और उनकी अधिक सामान्य और अमूर्त परिभाषाओं को दिखाना है। Anotehr उदाहरण List
जावा में किसी ऑब्जेक्ट का उपयोग कर रहा होगा । यह ऑब्जेक्ट वास्तव में ArrayList
a या a के कार्यान्वयन विवरण का उपयोग करता है LinkedList
, लेकिन यह जानकारी अधिक सामान्य नाम का उपयोग करके अमूर्त है List
।
क्या इनमें से कोई भी परिभाषा सही है? (मैं सबसे पारंपरिक और स्वीकृत परिभाषा की बात कर रहा हूं )।