Difference between Polymorphism and Overloading in C++: जैसाकि
हमने पहले भी बताया कि एक Class “C” के Structure का ही Modified रूप है।
यानी हम Structure प्रकार के Variable तो Declare कर सकते हैं, लेकिन जिस
प्रकार से Built – In प्रकार के Data Type
के दो Variables को हम आपस में जोड सकते हैं, ठीक उसी प्रकार से किसी
Structure के दो Variables को हम नहीं जोड सकते। इसे समझने के लिये हम एक
उदाहरण देखते हैं। माना एक Structure निम्नानुसार है-
1
2
3
4
5
6
7
| struct Add { int num1; int num2; }; struct Add A, B, C ; |
यदि हम C = A + B ; करें, तो ये एक गलत Statement
होगा। किसी Class के Objects को भी हम ठीक इसी प्रकार से नहीं जोड सकते
हैं, क्योंकि Class, Structure का ही Modified रूप है। इसका कारण ये है कि Compiler ये नहीं जानता है कि User द्वारा Define किए गए Variables के साथ किस प्रकार से जोड किया जाए।
जबकि
Built-in Data Types में जोड करने के इस तरीके को Compiler में पहले से ही
निश्चित कर दिया गया है और + Operator ये जानता है कि इन Variables को
कैसे जोडा जाए। इसलिये User Defined Data Type के Variables या Object को
जोडने का तरीका Operators को बताना पडता है।
यानी
+ Operators को ये बताना पडता है कि किस प्रकार से User Defined Data Type
के Variables या Objects को ये Operator जोडेगा। इसके लिये हमें नए प्रकार
के Operations Define करने होते हैं।
इस प्रकार से Operators व Functions को
अलग-अलग तरीके से इस बात पर निर्भर करते हुए कि वे किस प्रकार के Data पर
Operation कर रहे हैं, Use किया जाता है और इस प्रक्रिया को Polymorphism कहा जाता है।
किसी
Existing Operator जैसे कि +, = आदि को इस लायक बनाया जाता है कि वे User
Defined Data Type के विभिन्न प्रकार के Variables या Objects पर क्रिया कर
सकें। विभिन्न Operators को इस लायक बनाने की क्रिया को Operators की Overloading करना कहा जाता है।
जब कई Functions
के नाम समान होते हैं, लेकिन उनके Arguments या Parameters की संख्या या
फिर Formal Arguments के Data Type में आपस में अन्तर होता है, तो इसे
Functions की Overloading होना कहा जाता है। Overloading से एक Programmer के लिए Program लिखना व समझना आसान हो जाता है। यह भी Polymorphism का एक तरीका है।
Dynamic Binding
किसी Object के Reference में कौनसा Function Call होना चाहिए, जब ये बात Program के Compile Time में तय होती है, तो इसे Early Binding कहते
हैं। जबकि किसी Object के Reference में किसी काम के लिए कौनसा Procedure
Execute होगा, ये बात जब Program के Runtime में तय होती है, तब इसे Late Binding या Dynamic Binding कहते हैं। Polymorphism के अन्तर्गत Dynamic Binding का काम होता है। इसे समझने के लिए निम्न चित्र देखिए-
इस चित्र में हम देख सकते हैं कि Shape
Class एक Base Class है, जिसे Inherit करके तीन नई Classes Circle, Box व
Triangle को Create किया गया है। चूंकि ये तीनों ही Classes Shape Class से
Inherited हैं, इसलिए Base Class Shape का Draw() Method तीनों ही Classes में Inherited है।
अब
मानलो कि हमने तीनों Derived Classes का एक-एक Object Create किया और उस
Object को Draw करने के लिए Draw() Method को Call किया। ऐसे में जब हम
Circle Class के Object के लिए Draw Method Call करते हैं, तब Compiler
Circle Class के Draw Method को Call करके Circle Draw करता है।
जब
हम Box Object Draw करने के लिए Box Class के Object के Reference में
Draw() Method को Call करते हैं, तब Compiler Box Class के Draw Method को
Execute करता है।
इसी तरह से जब हम
Triangle Class का Object Create करना चाहते हैं, तब Compiler Triangle
Class के Draw Method को Execute करके Triangle Draw कर देता है। यानी एक
ही नाम का Draw Method Create हो रहे Object की Class के आधार पर उसी Class
के Draw Method को Execute करता है, जिस Class का Object Create किया जा
रहा है। इस प्रक्रिया को Object के साथ Method की Binding होना कहते हैं।
Great Blog I Have Read Your Blog It Is Very Interesting And useful For Computer Science Thank You For Posting And Sharing With Us useful Post. Azure Training in Chennai | Certification | Azure Online Training Course | Azure Training in Bangalore | Certification | Azure Online Training Course | Azure Training in Hyderabad | Certification | Azure Online Training Course | Azure Training in Pune | Certification | Azure Online Training Course | Azure Training | microsoft azure certification | Azure Online Training Course
ReplyDelete