Abstract Class in C++: जैसाकि हमने पहले भी कहा है कि Abstract Class एक ऐसी Class होती है जिसके Instance या Objects Create नहीं किए जा सकते हैं, बल्कि ये Classes एक Template के रूप में अन्य Derived Classes Create करने के लिए Use की जाती हैं। C++ में Abstract Classes को Use करने के लिए Pure Virtual Functions को Use करना जरूरी होता है। यानी Abstract Classes को C++ Pure Virtual Functions को Use करने के लिए बाध्य करता है।
हमने shape Class के उदाहरण में देखा था कि हमने shape Class को केवल Derived Classes Create करने के लिए Use किया था। हमने shape Class के Objects Create नहीं किए थे। इसलिए shape Class को हम Abstract Class कह सकते हैं।
जबकि person Class में हमने सामान्य persons जैसे कि Administrators, Trusty आदि General लोगों के लिए अलग Class का निर्माण नहीं किया है, इसलिए हम इस person Class को Generic Class कहते हैं।
Abstract Classes का प्रयोग कई स्थितियों में किया जाता है। जैसे एक Company Sports Car या कोई Truck या Ambulance बना सकती है, लेकिन वह कोई Generic Vehicle नहीं बना सकती है। Company कोई Vehicle बनाए, इससे पहले Company को उस Vehicle की Details को जानना जरूरी होता है, कि उसे किस प्रकार का Vehicle बनाना है। इसी तरह से sparrows, wrens व robins आकाश में उडते हैं, लेकिन हम किसी Generic Bird को आकाश में उडते हुए नहीं देखते।
कई स्थितियों में हमें एक Generic Base Class की जरूरत होती है, जबकि कई स्थितियों में नहीं होती। अक्सर Abstract Classes को Use करना एक अच्छा विचार होता है। Abstract Classes को Treat करना ज्यादा आसान होता है, क्योंकि तब हमें पता होता है कि उस Abstract Class का कोई Object Create नहीं किया जा सकता है। person Class के उदाहरण में person Class को Abstract करके हम इससे एक Miscellaneous Class Derive कर सकते हैं और इस Class से उन Objects को Create कर सकते हैं जो कि student या teacher Class के नहीं हैं।
वास्तविकता में shape Class केवल इन्सानों के नजरि, से Abstract Class है। जब हम इस Class को Abstract Class में Convert करते हैं तब Compiler हमारे Decision को Ignore कर देता है और किसी प्रकार की Complain भी नहीं करता है। जैसे यदि हम निम्न Statement लिखें:
shape shape1(3, 4, 5);
तो Compiler हमें कोई Complain नहीं करता है लेकिन इस Statement का कोई मतलब नहीं निकल रहा है। हमने draw() Function में shape Class के Objects Create ना किए जा सकें, इसके लिए एक Error Message Display करने की व्यवस्था की है। यानी
class Base // base class { public: virtual void show() // virtual function { cout << “\nError: base version of show()"; } };
हालांकि shape Class के Object Create करने पर ये Message Display होता है, लेकिन फिर भी ये एक निश्चित समाधान नहीं है। हम अभी भी इस Class का Object Create कर सकते हैं, हालांकि हम इसे Draw नहीं कर सकते और यदि हम shape Draw करने की कोशिश करते हैं तो हमें ये तब तक पता नहीं चलेगा कि हम एक Abstract Class का Object Create कर रहे हैं, जब तक कि Run Time में Error Message Display नहीं होगा। (Abstract Class in C++ – TutorialsPoint )
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C++ Programming Language in Hindi | Page: 666 | Format: PDF