ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-1 | ऑब्जेक्ट ओरिएंडेड प्रोग्रामिंग क्या है | Object Oriented Programming In Hindi
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग परिचय (Introduction) – वी०वी० डॉट नेट के बारे में यह कहा जाता है कि यह सम्पूर्ण ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा है। ऐसा दावा शत प्रतिशत प्रदत्त प्रोग्रामिंग के सभी कसौटी पर वी. बी. डॉट नेट खड़ा उतरता है। इस अध्याय में हम आपको इसके ऑब्जेक्ट ओरिएंटेड सही है। वी. बी. डॉट नेट में वह सारी चीजें हैं, जो एक ऑब्जेक्ट ओरिएंटेड भाषा में होनी चाहिए। बल्कि मैं यह कहूँ कि ऑब्जेक्ट प्रोग्रामिंग भाषा होने से संबंधित बातें बताने जा रहा हूँ।
इस पार्ट-1 में हम जानेगे :- ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (Object Oriented Programming), प्रॉसीजर प्रदत्त प्रोग्रामिंग बनाम ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (Procedure Oriented Programming VS Object Oriented Programming), ऑब्जेक्ट (Object), क्लास (Class), ऐब्स्ट्रैक्शन (Abstraction), एनकैप्सुलेशन (Encapsulation), इनहेरिटेन्स (Inheritance), पॉलिमॉरफिजम (Polymorphism)
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (Object Oriented Programming)
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग को समझाने से पहले मैं चाहता हूँ कि आपको प्रोसीजर प्रदत्त प्रोग्रामिंग के बारे में बताऊँ। हाँ वही प्रोसीजर प्रदत्त प्रोग्रामिंग जिस पर C भाषा आधारित है या Cभाषा जिस पैराडाइम (Paradigm) का अनुसरण करती है। इसकी बहुत सारी अच्छाइयाँ हैं परन्तु उसकी कई खराबियाँ भी हैं। सबसे पहले कि इस पैराडाइम में बना प्रोग्राम बड़ा होने पर जटिल हो जाता है। और दूसरा, यह वास्तविक दुनिया के ऑब्जेक्ट को प्रतिरूपित नहीं करता है। मैं समझता हूँ कि इसकी पहली कमी के ही कारण ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का जन्म हुआ।
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की परिभाषा मैं बिल्कुल दो पंक्ति में दूंगा जिससे आपको यह पूरी तरह से स्पष्ट हो जाएगा। आप कभी किसी नर्सरी (nursery) में गये हैं जहाँ फूलों एवं फलों के पौधे एवं बीज बिकते हैं। जरूर गये होंगे। वहाँ पौधों की व्यवस्था देखी होगी। ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग ठीक उसी प्रकार डाटा को व्यवस्थित करता है। ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में आप डाटा को उसी तरह व्यवस्थित करते हैं जिस प्रकार किसी नर्सरी में उस का प्रबंधक विभिन्न प्रकार के पौधों को सजाकर रखता है।
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में डाटा ऑब्जेक्ट की भांति होते हैं तथा इसका प्राथमिक फोकस प्रोसीजर के बजाय डाटा पर होता है। डाटा को सिस्टम में स्वतंत्रता के साथ विचरित नहीं किया जा सकता है किन्तु यह बहुत निकटता से फंक्शन के साथ जुड़ा होता है। फंक्शन डाटा के बगैर अस्तित्व में नहीं आता है। डाटा को एक रूप देने के लिए फंक्शन की आवश्यकता होती है।
इस पैराडाइम (Paradigm) में प्रोग्राम निकायों (entities) में विभाजित होते हैं जिन्हें ऑब्जेक्ट कहते हैं। बाद में, डाटा और फंक्शन इन ऑब्जेक्ट को कैरेक्टराइज (characterise) करने के लिए डिजाइन किये जाते हैं। डाटा छिपे होते हैं तथा बाहरी फंक्शन के द्वारा शेयर नहीं किये जा सकते हैं। बनाये गये ऑब्जेक्ट फंक्शनों के माध्यम से इंटरएक्ट (Interact) कर सकते हैं। चूँकि ऊप्स (OOPS) में ऑब्जेक्ट पहले बनाये जाते हैं तथा उनके चारों तरफ डाटा और फंक्शन बाद में विकसित होते हैं इसलिए ऊप्स बॉटम-अप डिजाइन का अनुसरण करता है।
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा क्या है इसकी विभिन्न विशेषताएं बताइए | Object Oriented Programming In Hindi

प्रॉसीजर प्रदत्त प्रोग्रामिंग बनाम ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (Procedure Oriented Programming VS Object Oriented Programming)
जैसा कि मैंने बताया कि प्रॉसीजर प्रदत्त प्रोग्रामिंग में डाटा को वरीयता प्राप्त नहीं होती है जबकि ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में डाटा को प्राथमिकता प्राप्त होती है | परिणाम स्वरुप प्रॉसीजर प्रदत्त प्रोग्रामिंग में डाटा ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की अपेक्षाकृत कम सुरक्षित होता है। हम इन दोनों के बीच के अंतरों को सारणी में स्पष्ट करते हैं।
प्रॉसीजर प्रदत्त प्रोग्रामिंग | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग |
डाटा के बजाय प्रॉसीजर पर बल होता है। | प्रॉसीजर के बजाय डाटा पर बल दिया जाता है। |
डाटा सुरक्षित नहीं होता है क्योंकि डाटा एक प्रोसीजर से दूसरे तक स्वतंत्र रूप से विचरता है। | डाटा सुरक्षित होता है। |
टॉप डाउन प्रोग्रामिंग डिजाइन का अनुकरण करता है। | बॉटम अप डिजाइन का अनुकरण करता है। |
वास्तविक दुनिया के ऑब्जेक्ट का प्रतिरूप नहीं होता है। | यह वास्तविक दुनिया के ऑब्जेक्ट का प्रतिरूप होता है। उदाहरणस्वरूप इनहेरिटेन्स को समझने के लिए आप अपनी पीढ़ियों का उदाहरण ले सकते हैं। |
प्रोग्राम फंक्शनों में विभक्त होते हैं। | प्रोग्राम ऑब्जेक्ट में विभाजित होता है। |
ऑब्जेक्ट (Object)
ऑब्जेक्ट वास्तविक दुनिया एन्टिटि (Entity) का ऐबस्ट्रैक्शन (abstraction) होता है। यह किसी व्यक्ति, किसी स्थान, कोई संख्या, कोई आइकन, कोई विण्डो, किसी ब्राउजर, किसी सूची, वेक्टर या ऐसी किसी चीज को जिसे प्रतिरूपित (model) किया जा सकता हो को इंगित करता है।
प्रत्येक डाटा एक ऑब्जेक्ट होता है। यहाँ तक कि प्रयोक्ता परिभाषित डाटा टाइप को भी ऑब्जेक्ट के रूप में व्यक्त किया
जा सकता है। ऑब्जेक्ट के कुछ फीचर इस प्रकार हैं :
- ऑब्जेक्ट ऊप्स में केन्द्रीय निकाय (Entity) होते हैं।
- ऑब्जेक्ट रन टाइम निकाय होते हैं।
- ऑब्जेक्ट मेमोरी में स्थान घेरते हैं तथा उनका एक संबंधित पता होता है।
- सभी ऑब्जेक्ट एक दूसरे को संदेश भेजकर आपस में कम्यूनिकेट कर सकता है। उदाहरण- माउस से किसी आइकन पर क्लिक करना संदेश प्रेषण है तथा परिणामस्परूप आइकन के द्वारा विण्डो को खोलना तथा विकल्प मेन्यू प्रदान करना संदेश है।
- ऑब्जेक्ट में डाय तथा ऑपरेशन दोनों होते हैं, जो इन डाटा को मनिप्यूलेट करता है।
ऑब्जेक्ट को अलग-अलग तरीके से निरूपित किया जा सकता है। लेकिन ऑब्जेक्ट को व्यक्त करने के लिए खास नोटेशन उपलब्ध हैं।
क्लास (Class)
क्लास समान फीचर वाले ऑब्जेकट का एक संकलन होता है। हम कह सकते हैं कि क्लास एक तरह के ऑब्जेक्ट का विवरण होता है, जो इतने समान होते हैं कि वे बिल्कुल समान तरीके से व्यवहार करते हैं। क्लास भाषा कंस्ट्रक्ट (construct) होता है जिसका सामान्य प्रयोग ऊप भाषाओं में ऐबस्ट्रक्ट डाटा टाइप्स (Abstract Data Types) को परिभाषित करने में होता है। ऐबस्ट्रैक्ट डाटा टाइप्स डाटा टाइप के साथ संबद्ध (associated) यूजर परिभाषित ऑपरेशन्स के इम्पलीमेन्टेशन (implementation) को छिपा कर प्रिमिटिव डाटा टाइप के नोटेशन को एक्स्टेंड करता है।
प्रोग्राम दृष्टिकोण से क्लास वह ब्लू प्रिंट होता है, जो ऑब्जेक्ट के बनावट (Construction of objects) का मार्गदर्शन करता है। उदाहरणस्वरूप नैनो कार का डिजाइन एक क्लास है। नैनो कार के डिजाइन में वे सभी विवरण मौजूद है जिसके अनुसार नैनो कार का निर्माण कारखाने में होगा।
क्लास यूजर परिभाषित डाटा टाइप होता है, जो डाटा को मनिप्यूलेट करने वाले डाटा सदस्यों तथा फंक्शनों को रखता है। क्लास के एक बार परिभाषित होने के बाद यह संभव होता है कि उस क्लास के लिए जितना ऑब्जेक्ट चाहे बना लें। प्रत्येक
ऑब्जेक्ट को उस क्लास का इंस्टैन्स (instance) कहा जाता है। क्लास का प्रयोग निर्धारित (specified) इंटरफेसेज तथा इम्पलिमेंटेशन के साथ ऑब्जेक्ट निर्माण हेतु टेम्पलेट्स की तरह प्रयोग किया जा सकता है।
उदाहरण :
(i) डायलॉग बॉक्स तथा टेक्स्ट विण्डो, विण्डोज क्लास के सदस्य होते हैं। (ii) लिलि, लोटस, तथा रोज फ्लावर क्लास के सदस्य हैं।
(iii) पर्सन तथा एलिफैंट मैमेलस क्लास के सदस्य हैं।
क्लास को परिभाषित करने का यह प्रारूप है-
Class ClassName
statements
End class
आओ सीखें-1 एक विण्डोज प्रोग्राम बनाऐं। इसमें Student क्लास का उपयोग कर विद्यार्थी के परीक्षा का ग्रेड की गणना करें तथा उसे डिस्प्ले करें। इस प्रोग्राम का इंटरफेस की भाँति होगा। इंटरफेस में जोड़े जाने वाले ऑब्जेक्ट, उनके प्रॉपर्टी तथा मान इस प्रकार होंगे।
ऑब्जेक्ट | प्रॉपर्टी | सेटिंग |
फॉर्म | Name | Form1 |
Text | My Project | |
लेबल | Name | Label1 |
Text | SID | |
टेक्स्टबॉक्स | Name | txtSID |
Text | रिक्त | |
लेबल | Name | Label2 |
Text | Name | |
टेक्स्टबॉक्स | Name | txtName |
Text | रिक्त | |
लेबल | Name | Label3 |
Text | Fundamentals | |
टेक्स्टबॉक्स | Name | txtFundamentals |
Text | रिक्त | |
लेबल | Name | Label4 |
Text | Office | |
टेक्स्टबॉक्स | Name | txtOffice |
Text | रिक्त | |
लेबल | Name | Label5 |
Text | Programming In C | |
टेक्स्टबॉक्स | Name | txtC |
Text | रिक्त | |
लेबल | Name | Label6 |
Text | Systems Analysis & Design | |
UseMnemonic | False | |
टेक्स्टॉक्स | Name | txtSAD |
Text | रिक्त | |
बटन | Name | btnData |
Text | Enter Data | |
बटन | Name | btnDisplay |
Text | Display Grade | |
बटन | Name | btnQuit |
Text | Quit | |
लिस्टबॉक्स | Name | 1stData |
समाधान :
- File मेन्यू को क्लिक करें तथा New Project का चयन करें ।
- New Project डायलॉग बॉक्स खुलने के पश्चात Templates पेन में Windows Application को क्लिक करें।
- Name टेक्स्टबॉक्स में My Project टाइप करें तथा OK को क्लिक करें । उसके बाद एक नया विण्डोज फॉर्मस प्रोजेक्ट खुलेगा ।
- फॉर्म पर प्रश्न में दिए गए विवरण के अनुसार टूलबॉक्स से कंट्रोल को जोड़ें। तथा प्रश्नानुसार उनके प्रॉपर्टी को सेट करें तथा उनहें सजाएँ ।
- फॉर्म पर कहीं भी दायाँ क्लिक करे तथा पॉप पप मेन्यू से View Code का चयन करें और निम्नलिखित कोड टाइप करें-
Public Class Form1
Dim pupil As student
Private Sub btnData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnData.Click
pupil New student()
pupil.StudentIdentity Device = txtSID.Text
pupil.Name = txtName.Text
pupil.Fundamentals = CInt(txtFundamentals.Text)
pupil.Office = CInt(txtOffice.Text)
pupil.C= CInt(txtC.Text)
pupil.SAD= CInt(txtSAD.Text)
txtSID.Clear()
txtName.Clear()
txtFundamentals.Clear()
txtOffice.Clear()
txtC.Clear()
txtSAD.Clear()
IstData.Items.Clear()
1stData.Items.Add(” Students Recorded”)
End Sub
Private Sub btnDisplay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnDisplay. Click
Dim fmtStr As String = “{0,-20} {1,-15} {2, -4}”
1stData.Items.Clear()
1stData.Items.Clear()
1stData.Items.Add(String.Format(fmtStr, pupil.Name, pupil.StudentIdentity Device,
pupil.grade))
End Sub
Private Sub btnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnQuit.Click
End
End Sub
Class Student
Private m_name As String
Private m_sid As Integer
Private m_fundamentals As Integer
Private m_office As Integer
Private m C As Integer
Private m SAD As Integer
Public Property Name() As String
Get
Return m_name
End Get
Set(ByVal value As String)
m_name = value
End Set
End Property
Public Property StudentIdentity Device() As String
Get
Return m_sid
End Get
Set(ByVal value As String)
m_sid = value
End Set
End Property
Public WriteOnly Property Fundamentals() As Integer
Set(ByVal value As Integer)
m_fundamentals = value
End Set
End Property
Public WriteOnly Property Office() As Integer
Set(ByVal value As Integer)
m_office = value
End Set
End Property
Public WriteOnly Property CO) As Integer
Set(ByVal value As Integer)
m_C= value
End Set
End Property
Public WriteOnly Property SAD() As Integer
Set(ByVal value As Integer)
m_SAD = value
End Set
End Property
Function grade() As String
Dim marks As Double
marks = (m_fundamentals+m_office + m_C +m_SAD)
marks = Math.Round (marks)
Select Case marks
Case Is >= 180
Return “A”
Case Is >= 160
Return “B”
Case Is >= 140
Return “C”
Case Is >= 120
Return “D”
Case Is >= 100
Return “F”
End Select
End Function
End Class
End Class
F5 दबाकर रन प्रोग्राम को रन करायें तथा डाटा को प्रविष्ट करें और Enter Data बटन को क्लिक करें। इसके पश्चात् लिस्टबॉक्स में Students Recorded प्रकट होगा। अब उसके बाद Display Information बटन को क्लिक करें। तत्पश्चात् आपको परिणाम दिखेगा। याद रखिये विषय यथा फण्डामेण्टल्स इत्यादि टेक्स्टबॉक्स में 50 या उससे कम मान प्रविष्ट करें यह मानते हुए कि उस विषय का अधिकतम मान 50 है।
ऐब्सक्ट्रैक्शन (Abstraction)
ऐब्सन्ट्रेक्शन ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का एक आवश्यक अवयव है। इसे इस प्रकार परिभाषित किया जा सकता हूँ यह सिस्टम आवश्यकताओं (या विनिर्देशनों) से विवरण (details) या ब्योरे (explanations) को अलग करने का नाम है ताकि आवश्यकताओं को समझने की जटिलता कम हो सके। अर्थात् बैकग्राउण्ड ब्योरे को शामिल किये बगैर आवश्यक फीचरों को व्यक्त किया जा सके। डाय ऐन्ट्रैक्शन वस्तुतः डाटा एनकैप्सुलेशन का दूसरा मेनिफेस्टेशन (manifestation) है। एनकैप्सुलेटेड डाटा सामान्य से छिपे होते हैं, परन्तु एक ही क्लास के फंक्शनों को दृश्य (visible) होते हैं।
एनकैप्सुलेशन (Encapsulation)
एनकैप्सुलेशन वह विधि है, जो डाटा तथा फंक्शनों को एक साथ कैप्सूल या पैक में रखता है। इसका उद्देश्य उपयोगकर से ऑब्जेक्ट के कार्यान्वयन ब्योरे (implementation details) को छिपाना होता है। एनकैप्सुलेशन सूचना (डाटा) से फंक्शनलिटि के कुछ हिस्से को अनाधिकृत एक्सेस से रोकता है। ऑब्जेक्ट अपने डाटा को अन्य ऑब्जेक्ट से छिपाता है. डाटा को केवल उन्हीं फंक्शन के द्वारा एक्सेस करने देता है, जो उस ऑब्जेक्ट के क्लास के पैकेज होते हैं।
एनकैप्सुलेशन का सबसे बढ़िया उदाहरण वह कैप्सूल है जो आपने कभी बीमारी के समय लिया होगा या देखा होगा। कैप्सूल के अंदर क्या है वह बाहर से नहीं दिखता। कैप्सूल के अंदर की औषधि को हम डाटा तथा फंक्शन समझ सकते हैं।
इनहेरिटेन्स (Inheritance)
इनहेरिटेन्स ऑब्जेक्ट के दो क्लासों के बीच का संबंध होता है। यह संबंध इस प्रकार होता है कि चाइल्ड क्लास पेरेन्ट क्लास के सभी प्रासंगिक फीचरों को प्राप्त कर ले। चाइल्ड को सब क्लास तथा पेरेण्ट क्लास को सुपर क्लास कहा जाता है। इनहेरिटेन्स एक ऐसी प्रक्रिया है जिसमें एक क्लास (चाइल्ड अथव व्युत्पन्न क्लास) किसी दूसरे क्लास (पेरेण्ट अथवा आधार क्लास) के प्रॉपर्टी, मेथड तथा इवेण्ट को इनहेरिट करता है।
चाइल्ड क्लास अपने प्रॉपर्टी, मेथड तथा इवेण्ट को एक्सेस करने के अतिरिक्त पेरेण्ट क्लास के भी प्रॉपर्टी, मेथड तथा इवेण्ट को एक्सेस कर सकता है। यदि चाइल्ड क्लास का पेरेण्ट क्लास भी एक व्युत्पन्न (derived) क्लास है, तो उसके आधार (base) क्लास के भी सभी प्रॉपर्टी, मेथड तथा इवेण्ट को चाइल्ड क्लास एक्सेस कर सकता है। पेरेण्ट क्लास तथा इसके व्युत्पन्न क्लास के पूरे संकलन को हायरैरकि (hierarchy) कहते हैं।
इनहेरिटेन्स के उपयोग करने के दो लाभ हैं। पहला, बावजूद कुछ समान फीचरों को शेयर कर पाता है। दूसरा यह कि इससे एक ही कोड को पुनः उपयोग में लाया जा सकता तो यह है कि इससे दो या अधिक क्लास एक दूसरे से भिन्न होने के है। जिसे हम कोड रियूजेबिलिटी (Code Reusability) कहते हैं। फलस्वरूप क्लासों में डुप्लीकेट कोड को मेनटेन करने के झंझट से मुक्ति होती है।
इन्हीं कारणों से इनहेरिटेन्स ऑब्जेक्ट ओरिएण्टेड प्रोग्रामिंग के कई शक्तिशाली उपकरणों से एक है। इनहेरिटेन्स में जो भी प्रमुख कार्य होता है वह पेरेण्ट क्लास के सदस्य वेरियेबल तथा मेथड की योजना तथा परिभाष होती है। ऐसा करने से आप चाइल्ड क्लास को अधिक लाभ देते हैं।
वी. बी. डॉट नेट में क्लास के पेरेण्ट को Inherits की-वर्ड से पहचानते हैं। इनहेरिटेन्स को समझने के लिए इस कोडिंग को देखें :
Class Simple Cale
Private Num1, Num2 As Double
Public Property FirstNumber ()
Get
Return Num1
End Get
Set (ByVal Value As Double)
Num1 = Value
End Set
End Property
Public Property SecondNumber() As Double
Get
Return Num2
End Get
Set (ByVal value As Double)
Num 2 = value
End Set
End Property
Function Add () As Double
Return FirstNumber + SecondNumber
End Function
Function Subtract () As Double
Return FirstNumber – SecondNumber
End Function
Function Multiply () As Double
Return FirstNumber * SecondNumber
End Function
Function Divide () As Double
Return FirstNumber / SecondNumber
End Function
End Class
उपरोक्त क्लास SimpleCalc की कोडिंग है जिसमें वेरियेबल डिक्लेअरेशन, प्रॉपर्टी तथा फंक्शन बनाये गये हैं। अब मान
लें कि आप इसी प्रोग्राम में उपरोक्त सभी वेरियेबल प्रॉपर्टी तथा फंक्शन का उपयोग दूसरे क्लास ScientificCalc में करना चाहते हैं, तो आपको क्या करना होगा? आपको उपरोक्त सभी कोड को दूसरे क्लास में उपयोग करने के लिए कोड लिखने की आवश्यकता नहीं। इसके लिए एक ही लाइन काफी है-
Class Scientific Calc // दूसरा क्लास
Inherits SimpleCalc यह लाइन SimpleCalc क्लास के पूरे कोड को अदृश्य रूप में कॉपी कर देगा।
अब आगे चाहें तो इसमें आप कुछ भी डाल सकते हैं। उदाहरण के लिए,
Function Expo() As Double
Return FirstNumber ^ SecondNumber
End Function
End Class // क्लास पूरा हुआ
अब आप SimpleCale क्लास के माध्यम से Add, Sub, Multiply. Divide और Expo फंक्शन का कार्य कर सकते हैं जबकि आपने केवल Expo फक्शन हो इस क्लास में बनाया है।
इनहेरिटेन्स के लाभ
- वास्तविक दुनिया की मॉडलिंग (real world modelling).
- सॉफ्टवेयर रियूजेबिलिटि (code reusability)
- सॉफ्टवेयर विस्तारण (software extensibility)
पॉलिमॉरफिजम (Polymorphism)
पॉलिमॉरफिजम का शाब्दिक अर्थ बहुरूपी अर्थात कई रूपों वाला होता है। कहने का तात्पर्य यह है कि ऊपस में एक ही एनटिटि के कई रूप हो सकते हैं।
उदाहरण के लिए, हम एक फंक्शन लेते हैं, जो दो संख्याओं को जोड़ता है। अब यदि जोड़ दो इंटिजर का है, तो फंक्शन परिणाम के रूप में इंटिजर योग लौटाता है। यदि ये इंटीजर के स्थान फ्लोटिंग प्वाइंट संख्याएँ हैं, तो योग फ्लोटिंग प्वाइंट होगा। और यदि इनपुट दो स्ट्रिंग है, तो फंक्शन दोनों स्ट्रिंग को परिणाम के रूप में मिला देता है। तीनों ही अवस्था में फंक्शन का नाम एक ही रहता है। फंक्शन के इस योग्यता को ही पॉलिमॉर्फिजम कहते हैं। ऊपस भाषाओं में पॉलिमॉर्फिजम ऑपरेटर ओवरलोडिंग (operator overloading) तथा फंक्शन ओवरलोडिंग के माध्यम से लागू होता है।
नोट : एन्ट्रैक्शन सिस्टम के जटिल विवरणों को छिपा कर केवल अवश्यक फीचर को ही उजागर करने की प्रक्रिया है।
आओ सीखें- एक कंसोल प्रोग्राम बनायें जिसमें पॉलिपॉफिज्म के कार्यान्वयन को दर्शायें।
समाधान :
- File मेन्यू को क्लिक करें तथा New Project का चयन करें ।
- New Project डायलॉग बॉक्स खुलने के पश्चात Templates पेन में Console Application को क्लिक करें।
- Name टेक्स्टबॉक्स में My Project टाइप करें तथा OK को क्लिक करें। उसके बाद कोड डिजायनर खुलेगा।
- तथा कोड डिजायनर में निम्नलिखित कोड टाइप करें-
Module Module 1
Sub Main ()
Dim two As New One()
Console. WriteLine (two.add (10))
‘calls the function with one argument
Console.WriteLine(two.add(10, 20))
‘calls the function with two arguments
Console. WriteLine (two.add (10, 20, 30))
‘calls the function with three arguments
Console. Read ()
End Sub
End Module
Public Class One
Public i, j, k As Integer
Public Function add(ByVal i As Integer) As Integer
‘function with one argument
Return i
End Function
Public Function add(ByVal i As Integer, ByVal j As Integer) As Integer
‘function with two arguments
Return i + j
End Function
Public Function add(ByVal i As Integer, ByVal j As Integer, ByVal k As Integer) As Integer
‘function with three arguments
Return i + j + k
End Function
End Class
- F5 को दबायें। इसका परिणाम दिखेगा।
उपरोक्त कोड में तीन Add फंक्शन को एक ही मॉडयूल के अंदर प्रस्तुत किया गया है। परन्तु सबके पैरामीटर अलग अलग है। पहला फंक्शन
Public Function add(ByVal i As Integer) As Integer में केवल 1 वेरियेबल का मान पास किया गया है जो परिणाम में 10 प्रकट करता है।
दूसरा फंक्शन Public Function add (By Vali As Integer, By Val j As Integer) दो वेरियेबल i तथा j पास करता है। परिणामस्वरूप दोनों के योग को परिणामस्वरूप 30 प्रदर्शित करता है।
तथा तीसरा फंक्शन Public Function add(ByVal i As Integer, ByVal j As Integer, ByVal k As Integer) As Integer
तीन वेरियेबल i, j, k को पास करता तथा परिणाम के रूप में 60 प्रकट करता है।