Java/C3/Polymorphism/Sanskrit

From Script | Spoken-Tutorial
Jump to: navigation, search
Time Narration
00:01 जावा मध्ये Polymorphism इति spoken-tutorial प्रति स्वागतम् ।
00:06 पाठेऽस्मिन् वयं एतेषां ज्ञानं प्राप्नुमः :

जावा मध्ये Polymorphism

Run-time polymorphism

Virtual Method Invocation अपि च

Compile-time polymorphism

00:19 वयमत्र :

Ubuntu Linux Version 12.04

JDK Version 1.7

Eclipse 4.3.1 च उपयुञ्ज्महे ।

00:31 पाठस्यास्य अनुसरणाय भवद्भ्यः Java अपि च Eclipse IDE अनयोः ज्ञानमावश्यकम् ।
00:37 भवद्भिः Subclassing तथा Method overriding तथा च overloading एतेषां ज्ञानं प्राप्तं स्यात् ।
00:43 नास्ति चेत् तत्सम्बद्धपाठार्थं अस्माकं जालपुटे अधस्तन लिङ्क् पश्यन्तु ।
00:48 Polymorphism इतीदं, नाना रूपाणि प्राप्तुं object इत्यस्य सामर्थ्यं वर्तते ।
00:54 Polymorphism इत्यस्य प्रधान लाभाः :

1. क्लिष्टतायाः निवारणम् अपि च 2. कोड् इत्यस्य पुनरुपयोगः

01:03 Javaमध्ये, द्विप्रकारकस्य polymorphism इतीमे स्तः नाम्ना Compile-time अपि च Run-time polymorphism
01:11 Compile-time polymorphism इतीदं निश्चयेन Method overloading इत्युच्यते । अपि चेदं Static Binding इति कथ्यते ।
01:20 Run-time polymorphism इतीदं निश्चयेन Method overridingइत्युच्यते । अपि चेदं Dynamic Binding इति कथ्यते ।
01:29 वयं पूर्वमेव Run-time polymorphism अर्थात् Method overriding इतीदं ज्ञातवन्तः ।
01:35 Eclipse IDE प्रति गच्छामः । पूर्वतनपाठे वयं MyProject इति नाम्नः प्रकल्पं रचितवन्तः ।
01:44 final keyword पाठमुपयुज्य कोड् फैल्स् इतीमानि स्वीकुर्मः ।
01:49 Employee क्लास् इतीदं पेरेण्ट् क्लास् वर्तते ।
01:52 Manager क्लास् इतीदं सब्-क्लास् वर्तते ।
01:55 Manager क्लास् इतीदं, department नाम्नः एडिशनल् वेरियेबल् प्राप्तवदस्ति ।
02:01 Manager क्लास् मेथड् getDetails()इतीदं, Employee क्लास् मेथड् getDetails() इतीदं override करोति ।
02:08 वयं Manager क्लास् ओब्जेक्ट् अर्थात् Manager द्वारा, getDetails() मेथड् इतीदं काल् कुर्मः ।
02:16 विवरणानां मुद्रापणार्थं system.out.println Details of Manager Class च टङ्कयन्तु ।
02:28 प्रोग्राम् इतीदं सेव् कृत्वा रन् कुर्वन्तु । अतः वयं फलिते department वेरियेबल् इत्यस्य मूल्यं दृष्टुं शक्नुमः ।
02:37 अतः सब्-क्लास् मेथड् इतीदं रन् करणे इन्वोक् जातम् ।
02:42 मेथड् इन्वोकेशन् इतीदं JVM द्वारा निर्धारितं न कम्पैलर् द्वारा ।
02:48 अतः इदं Runtime polymorphism अथवा method overriding इति कथ्यते ।
02:55 Run time polymorphism नाम किमिति वयं ज्ञातवन्तः ।
02:58 अधुना वयं Virtual Method Invocation इत्यस्य विषयं ज्ञास्यामः ।
03:03 अतः एक्लिप्स् ऐ डि ईमध्ये, Employee क्लास् प्रति आगच्छन्तु ।
03:07 वेरियेबल् नाम्ने static अपि च final कीवर्ड्स् निष्कासयन्तु ।
03:13 setNameमेथड् इतीदम् अन्-कमेण्ट् कुर्वन्तु ।
03:16 static ब्लोक् इतीदं निष्कास्य सञ्चिकां सेव् कुर्वन्तु ।
03:21 TestEmployee क्लास् प्रति आगच्छन्तु । manager.setName(“Nikkita Dinesh”); इति वेल्यु-इन्स्टेन्स् इतीदम् अन्-कमेण्ट् कुर्वन्तु ।
03:31 यतः वयं Empolyeeक्लास्-मध्ये, setName() मेथड् इतीदं अन्-कमेण्ट् कृतवन्तः, ततः इदम् इन्स्टेन्स् अपि अन्-कमेण्ट् कृतवन्तः ।
03:38 अधुना एम्प्लोयीक्लास् रेफ़रेन्स् इत्यस्मै, emp1 इति एम्प्लोयी ओब्जेक्ट् इतीदम् इन्स्टेन्शियेट् कुर्मः ।
03:46 एवं टङ्कयन्तु Employee emp1 = new Employee open and close parenthesis semicolon
03:57 अधुना एम्प्लोयी क्लास् इत्यस्मै setEmail अपि च setName इत्यनयोः मूल्यम् इनिशियलैस् कुर्मः ।
04:03 अतः emp1.setName("Jayesh"); emp1.setEmail("pqr@gmail.com"); इति टङ्कयन्तु ।
04:16 एम्प्लोयी डीटेल्स् इतीदं मुद्रापयितुम् एवं टङ्कयन्तु System.out.println("Details of Employee class:" emp1.getDetails()) semicolon
04:37 अधुना Employee क्लास् रेफ़रेन्स् इत्यस्मै, मेनेजर् ओब्जेक्ट् emp2 इतीदम् इन्स्टेन्शियेट् कुर्मः ।

अतः Employee emp2 = new Manager open and close parenthesis semicolon इति टङ्कयन्तु ।

04:54 यत्किमपि जावा ओब्जेक्त्, यत् एकाधिकं IS-A टेस्ट् पास् करोति तत् polymorphic (पोलिमोर्पिक्) वर्तते, इत्यतः वयमिदं कर्तुं शक्नुमः ।
05:04 जावा मध्ये सर्वाणि ओब्जेक्ट्स् पोलिमोर्पिक् वर्तन्ते, यतः यत्किमपि ओब्जेक्ट् तस्य प्रकारकाय, क्लास् ओब्जेक्ट् इत्यस्मै च, IS-A टेस्ट् पास् करिष्यति ।
05:16 A Manager IS-A Employee

A Manager IS-A Manager

A Manager IS-A Object.

05:23 एकस्य ओब्जेक्ट् इत्यस्य एक्सेस् करणाय विद्यमानः एकैकः मार्गः रेफ़रेन्स् वेरियेबल् द्वारा वर्तते ।
05:29 रेफ़रेन्स् वेरियेबल्स् नाम emp1, emp2 अपि च manager इतीमानि ।
05:36 वयमत्र द्वे Manager ओब्जेक्ट्स् इन्स्टेन्शियेट् कृतवन्तः ।

एकम् Employee क्लास् इत्यस्य रेफ़रेन्स् करोति । अन्यं Manager क्लास् इत्यस्य रेफ़रेन्स् करोति ।

05:47 setEmail, setName अपि च setDepartment इत्येतेभ्यः मूल्यं emp2ओब्जेक्ट् उपयुज्य इनिशियलैस् कुर्मः ।
05:55 अतः,

emp2.setName("Ankita"); emp2.setEmail(“xyz@gmail.com”); emp2.setDepartment(“IT”); इति टङ्कयन्तु ।

06:14 वयं, "The method setDepartment(String) is undefined for the type Employee" इति दोषं पश्यामः ।
06:23 किमर्थमुच्यते, setDepartment मेथड् इतीदं, Employee क्लास् इत्यस्मै न वर्तते ।
06:30 अतः emp2.setDepartment("IT"); इमां पङ्क्तिं निष्कासयन्तु ।
06:37 विवरणानि मुद्रापयितुं : System.out.println("Details of Manager class:" emp2.getDetails()) semicolon इति टङ्कयन्तु ।
06:55 सेव् कृत्वा रन् कुर्वन्तु ।
06:58 अत्र फलिते वयं Manager of: इतीदं रिक्तं प्राप्नुमः ।
07:04 किमर्थमुच्यते, वयं Manager क्लास् मध्ये emp2 इतीदमुपयुज्य, department इतीदम् इनिशियलैस् न कृतवन्तः ।
07:12 प्रदर्शनार्थम् उत्सर्गतया डिपार्ट्मेण्ट् इतीदं IT इति स्यात् ।
07:17 अतः Manager क्लास् गत्वा department इत्यस्य मूल्यं इनिशियलैस् कुर्वन्तु ।
07:25 सेव् कृत्वा रन् कुर्वन्तु ।
07:28 वयं Employee क्लास् इत्यस्य रेफ़र् क्रियमाणं Employee ओब्जेक्ट् इतीदं फलितरूपेण प्राप्नुमः ।
07:34 Employee क्लास् इत्यस्य रेफ़र् क्रियमाणं Manager ओब्जेक्ट् इतीदं तथा Manager क्लास् इत्यस्य रेफ़र् क्रियमाणं Manager ओब्जेक्ट् इतीदं च ।
07:42 वयं पश्यामः यत्, Managerक्लास् इत्यस्य getDetails() मेथड् इतीदं, emp2 द्वारा काल् जातम् ।
07:49 परन्तु यदा, emp2 इतीदं setDepartment काल् कर्तुं प्रयत्नं करोति, तदा दोषः प्राप्यते ।
07:54 अस्य कारणम् एवमस्ति :

कम्पैलर् Employeeक्लास् मध्ये, emp2.getDetails() काले, getDetails()मेथड् इतीदं पश्यति ।

08:05 अतः इदं दोषं न दर्शयति तथा च कोड् वेलिडेशन् च करोति ।
08:10 रन् करणकाले जे वि एम् इतीदं Manager क्लास् मध्येgetDetails() इतीदम् इन्वोक् करोति । यतःManager क्लास् इत्यस्य getDetails() इतीदं, Manager क्लास् इत्यस्य getDetails() इतीदम् ओवर् रैड् करोति ।
08:24 वयमतः Manager क्लास् इत्यस्य getDetails() इत्यस्यानुसारेण फलितं प्राप्नुमः । परन्तु कम्पैलर् इतीदं Employee क्लास् मध्ये setDepartment इति मेथड् न पश्यति ।
08:36 अतः emp2 द्वारा setDepartment काल् क्रियते चेत् इदं दोषं दर्शयति ।
08:43 अत्र Employee मेथड् getDetails() इतीदं Employee क्लास् इत्यस्मै इन्वोक् कृतम् ।
08:49 कम्पैलर् इतीदं Employee क्लास् इतीदं getDetails() इत्यस्मै emp1.getDetails() काले रेफ़रेन्स् करोति ।
08:57 रन् काले जे वि एम् इतीदं, Employee क्लास् मध्ये getDetails() इतीदं इन्वोक् करोति । अतः वयं Employee क्लास् इत्यस्य getDetails() अनुसारेण फलितं प्राप्नुमः ।
09:08 एवं जे वि एम् इतीदं, प्रत्येकस्मै वेरियेबल् इत्यस्मै रेफ़र् जाताय ओब्जेक्ट् इत्यस्मै, सूक्तं मेथड् काल् करोति ।
09:16 इदं गुणं वर्चुअल् मेथड् इन्वोकेशन् इति कथ्यते ।
09:21 मेथड्स् इतीमानि वर्चुअल् मेथड्स् इति कथ्यन्ते ।
09:26 जावा मध्ये सर्वाणि मेथड्स् एवं कार्यं कुर्वन्ति ।
09:31 वयं वर्चुअल् मेथड् इन्वोकेशन् नाम किमिति ज्ञातवन्तः ।
09:36 वयं Compile-time polymorphism अर्थात् मेथड् ओवर् लोडिङ्ग् नाम किमिति ज्ञातवन्तः ।
09:42 सङ्क्षेपेण Compile time polymorphism इत्यस्य विषयं जानाम ।
09:47 Compile time polymorphism मध्ये, class इतीदम् एकाधिकं method प्राप्तुमर्हति ।
09:53 समान नाम्नां मेथड्स् अन्यसङ्ख्याकानाम् आर्ग्युमेण्ट्स् युतानि ।
09:59 कम्पैल् करणकाले कम्पैलर् इतीदं मेथड् काल् इतीदं ज्ञातुं शक्नोति । अतः एवेदं compile time polymorphism इति कथ्यते ।
10:09 सारं पश्यामः ।
10:11 पाठेस्मिन् वयं जावा मध्ये Polymorphism नाम किम्?

Run-time polymorphism नाम किम्? Virtual Method Invocation नाम किम् अपि च Compile-time polymorphism नाम किमिति ज्ञातवन्तः ।

10:23 पाठनियोजनार्थं,

पूर्वतनपाठे उपयुक्तं Vehicle तथा Bike class ओवर् रैड् कुर्वन्तु ।

10:32 स्पोकन् ट्युटोरियल् विषये अधिकविवरणं प्राप्तुं लिङ्क् मध्यस्थं चलच्चित्रं पश्यन्तु । अवचित्यापि दृष्टुं शक्यते तत् ।
10:40 स्पोकन् ट्युटोरियल् प्रकल्पगणः कार्यशालां चालयति अपि च , अन्तर्जालीयपरीक्षायाम् उत्तीर्णेभ्यः प्रमाणपत्रं च यच्छति । अधिकविवरणं प्राप्तुं अधस्तन पर्चन्यै लिखन्तु ।
10:51 स्पोकन् ट्युटोरियल् प्रकल्पः, राष्ट्रिय साक्षरता मिशन्, ICT, MHRD द्वारा भारतसर्वकारस्य अनुदानं प्राप्तवानस्ति । अधिकविवरणमत्रास्ति ।
11:03 वयं पाठस्यान्तमागतवन्तः । अनुवादकः प्रवाचकश्च श्री नवीनभट्टः उप्पिनपट्टणम् । धन्यवादाः ।

Contributors and Content Editors

NaveenBhat, Sandhya.np14