Java/C3/Polymorphism/Bengali

From Script | Spoken-Tutorial
Jump to: navigation, search
Time Narration
00:01 Java তে Polymorphism এর টিউটোরিয়ালে আপনাদের স্বাগত।
00:06 এখানে আমরা শিখব:

Java তে Polymorphism

Run-time polymorphism

Virtual Method Invocation এবং

Compile-time polymorphism.

00:19 এখানে ব্যবহার করছি: উবুন্টু লিনাক্স সংস্করণ 12.04 JDK সংস্করণ 1.7 এবং Eclipse 4.3.1
00:31 টিউটোরিয়ালটি অনুসরণ করতে Java এবং Eclipse IDE এর মৌলিক জ্ঞান থাকতে হবে।
00:37 Subclassing, Method overriding এবং overloading সম্পর্কে জ্ঞান থাকতে হবে।
00:43 না হলে, প্রাসঙ্গিক Java টিউটোরিয়ালগুলির জন্য, আমাদের ওয়েবসাইটে যান।
00:48 Polymorphism একটি অবজেক্টের বিভিন্ন রূপ নেওয়ার ক্ষমতা রাখে।
00:54 Polymorphism এর প্রধান সুবিধা হল: Reduction of complexity এবং Code re-usability.
01:03 জাভাতে দুটি ধরনের 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 Using final keyword টিউটোরিয়ালের কোড ফাইল নেই।
01:49 Employee ক্লাস হল parent ক্লাস।
01:52 Manager ক্লাস হল subclass.
01:55 Manager ক্লাসে একটি অতিরিক্ত ভ্যারিয়েবল department রয়েছে।
02:01 Manager ক্লাস মেথড getDetails(), Employee ক্লাস মেথড getDetails() কে override করে।
02:08 আমরা Manager ক্লাস অবজেক্ট দ্বারা getDetails () মেথড কল করছি অর্থাৎ Manager.
02:16 বিবরণ প্রিন্ট করতে লিখুন: system.out.println Details of Manager Class.
02:28 প্রোগ্রাম সংরক্ষণ করে রান করুন। আমরা আউটপুটে department ভ্যারিয়েবল ভ্যালু দেখি।
02:37 তাই subclass মেথডকে runtime এ প্রয়োগ করা হয়।
02:42 মেথড invocation JVM দ্বারা নির্ধারণ করা হয়, কম্পাইলার দ্বারা নয়।
02:48 তাই এটি Runtime polymorphism বা method overriding হিসাবে পরিচিত।
02:55 আমরা Run time polymorphism শিখেছি।
02:58 এখন Virtual Method Invocation শিখি।
03:03 Eclipse IDE তে Employee ক্লাসে আসুন।
03:07 ভ্যারিয়েবল name এর জন্য static এবং final কীওয়ার্ড সরান।
03:13 মেথড setName আনকমেন্ট করুন।
03:16 static ব্লক সরান। ফাইলটি সংরক্ষণ করুন।
03:21 TestEmployee ক্লাসে আসুন। ভ্যালু manager.setName(“Nikkita Dinesh”); আনকমেন্ট করুন।
03:31 এই উদাহরণ আনকমেন্ট করি কারণ Employee ক্লাসে setName () মেথড আনকমেন্ট করেছি।
03:38 এখন, Employee ক্লাসের জন্য Employee অবজেক্ট emp1 দেখাই।
03:46 লিখুন: Employee emp1 = new Employee ওপেন এবং ক্লোস প্রথম বন্ধনী সেমিকোলন
03:57 এখন Employee ক্লাসে জন্য setEmail এবং setName এর জন্য ভ্যালু ইনিসিয়েলাইজ করুন।
04:03 লিখুন: emp1.setName("Jayesh"); emp1.setEmail("pqr@gmail.com");
04:16 employee বিবরণ প্রিন্ট করতে লিখুন: System.out.println("Details of Employee class:" emp1.getDetails()) সেমিকোলন।
04:37 Employee ক্লাসের জন্য Manager অবজেক্ট emp2 দেখাই।

লিখুন: Employee emp2 = new Manager ওপেন এবং ক্লোস প্রথম বন্ধনী সেমিকোলন।

04:54 আমরা এটি করতে সক্ষম কারণ যে কোনো Java object যা একাধিক IS-A টেস্ট পাস করে হল polymorphic.
05:04 জাভাতে সকল অবজেক্ট হল polymorphic, কারণ যে কোনো অবজেক্ট IS-A টেস্ট তাদের নিজস্ব ধরন এবং ক্লাস অবজেক্টের জন্য পাস করবে।
05:16 A Manager IS-A Employee

A Manager IS-A Manager

A Manager IS-A Object.

05:23 reference variable দ্বারা কোনো অবজেক্ট পর্যন্ত পৌঁছনোর শুধুমাত্র একটি সম্ভাব্য উপায় রয়েছে।
05:29 Reference variables যেমন emp1, emp2 এবং manager.
05:36 এখানে দুটি Manager অবজেক্টের দেখাই:

প্রথমটি যা Employee ক্লাস উল্লেখ করে এবং দ্বিতীয়টি যা Manager ক্লাস উল্লেখ করে।

05:47 emp2 অবজেক্ট দ্বারা setEmail, setName এবং setDepartment এর জন্য ভ্যালু ইনিসিয়েলাইজ করি।
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()) সেমিকোলন।
06:55 প্রোগ্রামটি সংরক্ষণ করে রান করুন।
06:58 এখানে আউটপুটে, আমরা Manager of: ফাঁকা পাই।
07:04 কারণ, আমরা emp2 দ্বারা Manager ক্লাসে department ইনিসিয়েলাইজ করিনি।
07:12 ডেমোর উদ্দেশ্যে, ডিফল্ট department হল IT.
07:17 Manager ক্লাসে যান এবং department এর জন্য ভ্যালু ইনিসিয়েলাইজ করুন।
07:25 প্রোগ্রামটি সংরক্ষণ করে রান করুন।
07:28 আউটপুট হল Employee অবজেক্ট Employee ক্লাস উল্লেখ করে।
07:34 Manager অবজেক্ট Employee ক্লাস এবং Manager অবজেক্ট Manager ক্লাস
07:42 এখানে দেখি যে Manager ক্লাসের getDetails() মেথড emp2 দ্বারা কল হয়।
07:49 কিন্তু emp2, setDepartment কল করার চেষ্টা করলে একটি এরর পাই।
07:54 এর কারণ নিম্নরূপ:

কম্পাইলার emp2.getDetails() এর সময় Employee ক্লাসে getDetails () মেথড দেখে।

08:05 এটি কোনো এরর দেয় না এবং কোডটি যাচাই করে।
08:10 run time এ যদিও Manager ক্লাসে JVM, getDetails () লাগু করে কারণ Manager ক্লাসের getDetails (), Employee ক্লাসের getDetails () override করে।
08:24 আমরা Manager ক্লাসের getDetails() অনুযায়ী আউটপুট পাই। কিন্তু কম্পাইলার Employee ক্লাসে setDepartment মেথড দেখে না।
08:36 তাই, emp2 কল করলে setDepartment একটি এরর দেয়।
08:43 Employee মেথড getDetails(), Employee ক্লাসের জন্য লাগু হয়।
08:49 কম্পাইলার emp1.getDetails() এর সময় getDetails () এর জন্য Employee ক্লাস উল্লেখ করে।
08:57 রান টাইমে JVM, Employee ক্লাসে getDetails () লাগু করে। আমরা Employee ক্লাসের getDetails () অনুযায়ী আউটপুট পাই।
09:08 তাই JVM, object এর জন্য উপযুক্ত মেথড কল করে যা প্রতিটি ভ্যারিয়েবলে নির্দিষ্ট করা হয়।
09:16 এই ব্যবহার Virtual Method Invocation রূপে উল্লেখ করা হয়।
09:21 মেথড Virtual Methods হিসাবে উল্লিখিত।
09:26 জাভাতে সকল মেথড এই উপায়ে আচরণ করে।
09:31 আমরা সফলভাবে শিখেছি যে Virtual Method Invocation কি।
09:36 আমরা ইতিমধ্যে Compile-time polymorphism অর্থাৎ method overloading সম্পর্কে শিখেছি।
09:42 সংক্ষেপে দেখি যে Compile time polymorphism কি।
09:47 Compile time polymorphism এ, ক্লাসে একাধিক মেথড থাকতে পারে।
09:53 মেথডের একই নাম হয় কিন্তু বিভিন্ন আর্গুমেন্ট সহ।
09:59 কম্পাইলার কম্পাইল-টাইমে মেথড কল করতে সক্ষম। এটি কারণ যে এটি compile time polymorphism নামে পরিচিত।
10:09 সংক্ষেপে,
10:11 এখানে আমরা শিখেছি:

Java তে Polymorphism কি? Run-time polymorphism Virtual Method Invocation এবং Compile-time polymorphism.

10:23 অনুশীলনী হিসাবে, Vehicle এবং Bike ক্লাসের জন্য আগের টিউটোরিয়ালে ব্যবহার করা মেথড override করুন।
10:32 নিম্ন লিঙ্কে উপলব্ধ ভিডিওটি প্রকল্পকে সারসংক্ষেপে বোঝায়। এটি দেখুন।
10:40 স্পোকেন টিউটোরিয়াল প্রকল্প দল কর্মশালার আয়োজন করে এবং অনলাইন পরীক্ষা পাস করলে প্রশংসাপত্র দেওয়া হয়। অধিক জানতে আমাদের লিখুন।
10:51 স্পোকেন টিউটোরিয়াল প্রকল্প Talk to a Teacher প্রকল্পের অংশবিশেষ। এটি ভারত সরকারের NMEICT, MHRD দ্বারা সমর্থিত। এই বিষয়ে বিস্তারিত তথ্য এই লিঙ্কে প্রাপ্তিসাধ্য।
11:03 আই আই টী বোম্বে থেকে আমি বিদায় নিচ্ছি। অংশগ্রহনের জন্যে ধন্যবাদ।

Contributors and Content Editors

Kaushik Datta, Satarupadutta