Java/C3/Polymorphism/Punjabi

From Script | Spoken-Tutorial
Revision as of 11:21, 21 December 2017 by Harmeet (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
“Time” “Narration”
00:01 ਸਤਿ ਸ਼੍ਰੀ ਅਕਾਲ ਦੋਸਤੋ, Polymorphism in Java ‘ਤੇ ਸਪੋਕਨ ਟਿਊਟੋਰਿਅਲ ‘ਤੇ ਤੁਹਾਡਾ ਸਾਰਿਆ ਦਾ ਸਵਾਗਤ ਹੈ ।
00:06 ਇਸ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ ਅਸੀਂ ਹੇਠ ਲਿਖੇ ਦੇ ਬਾਰੇ ਵਿੱਚ ਸਿੱਖਾਂਗੇ:

ਜਾਵਾ ਵਿੱਚ “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 ਤੁਹਾਨੂੰ “Sub classing”, “Method overriding” ਅਤੇ “overloading” ਦਾ ਗਿਆਨ ਵੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ।
00:43 ਜੇ ਨਹੀਂ ਹੈ ਤਾਂ, ਸੰਬੰਧਿਤ ਜਾਵਾ ਟਿਊਟੋਰਿਅਲ ਦੇਖਣ ਲਈ ਸਾਡੀ ਵੈੱਬਸਾਈਟ ‘ਤੇ ਜਾਓ ।
00:48 “Polymorphism” ਕਈ ਰੂਪਾਂ ਨੂੰ ਲੈਣ ਲਈ “object” ਦੀ ਇੱਕ ਸਮਰੱਥਾ ਹੈ ।
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 ‘ਤੇ ਜਾਂਦੇ ਹਾਂ । ਮੈਂ ਪਿਛਲੇ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ ਪਹਿਲਾਂ ਤੋਂ ਹੀ My Project ਨਾਂ ਵਾਲਾ ਪ੍ਰੋਜੈਕਟ ਬਣਾਇਆ ਹੈ ।
01:44 Using final keyword ਟਿਊਟੋਰਿਅਲ ਦੀ ਕੋਡ ਫਾਇਲ ਲੈਂਦੇ ਹਾਂ ।
01:49 Employee ਕਲਾਸ parent ਕਲਾਸ ਹੈ ।
01:52 Manager ਕਲਾਸ subclass ਹੈ ।
01:55 Manager ਕਲਾਸ ਵਿੱਚ ਇੱਕ ਵਾਧੂ ਵੈਰੀਏਬਲ department ਸ਼ਾਮਿਲ ਹੈ ।
02:01 Manager ਕਲਾਸ ਮੈਥਡ get Details () Employee ਕਲਾਸ ਮੈਥਡ get Details () ਨੂੰ ਓਵਰਰਾਇਡ ਕਰਦਾ ਹੈ ।
02:08 ਅਸੀਂ Manager ਕਲਾਸ ਆਬਜੈਕਟਸ ਦੁਆਰਾ get Details () ਮੈਥਡ ਕਾਲ ਕਰ ਰਹੇ ਹਾਂ ਭਾਵ ਕਿ 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 ਮੈਥਡ set Name ਨੂੰ ਅਨਕਮੈਂਟ ਕਰੋ ।
03:16 static ਬਲਾਕ ਹਟਾਓ । ਫਾਇਲ ਸੇਵ ਕਰੋ ।
03:21 Test Employee ਕਲਾਸ ‘ਤੇ ਆਓ । ਵੈਲਿਊ “manager.setName(“Nikkita Dinesh”);” ਅਨਕਮੈਂਟ ਕਰੋ ।
03:31 ਅਸੀਂ ਇਸ ਉਦਾਹਰਣ ਨੂੰ ਅਨਕਮੈਂਟ ਕਰਦੇ ਹਾਂ, ਕਿਉਂਕਿ ਅਸੀਂ Empolyee ਕਲਾਸ ਵਿੱਚ setName () ਮੈਥਡ ਅਨਕਮੈਂਟ ਕੀਤਾ ਹੈ ।
03:38 ਹੁਣ, Employee ਕਲਾਸ ਲਈ “Employee” ਆਬਜੈਕਟਸ “emp1” ਦਰਸਾਉਂਦੇ ਹਾਂ ।
03:46 ਟਾਈਪ ਕਰੋ: “Employee emp1 = new Employee open and close parenthesis semicolon”
03:57 ਹੁਣ Employee ਕਲਾਸ ਲਈ “set Email” ਅਤੇ “set Name” ਲਈ ਵੈਲਿਊ ਇਨੀਸ਼ਿਲਾਇਜ ਕਰੋ ।
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 open and close parenthesis semicolon”

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 ਆਬਜੈਕਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ “set Email, set Name” ਅਤੇ “set Department” ਲਈ ਵੈਲਿਊਜ ਨੂੰ ਇਨੀਸ਼ਿਲਾਇਜ ਕਰਦੇ ਹਾਂ ।
05:55 ਟਾਈਪ ਕਰੋ

“emp2.setName (“Ankita”);”

“emp2.setEmail (“ xyz@gmail.com ” );”

“emp2.setDepartment (“IT”);”

06:14 ਅਸੀ ਵੇਖਦੇ ਹਾਂ ਕਿ ਇੱਥੇ ਇੱਕ ਐਰਰ ਹੈ । “The method set Department (String) is undefined for the type Employee”
06:23 ਇਹ ਇਸ ਲਈ ਕਿਉਂਕਿ, set Department ਮੈਥਡ 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” object referring “Employee” class
07:34 Manager ਆਬਜੈਕਟ Employee ਕਲਾਸ ਦਾ ਹਵਾਲਾ ਦੇ ਰਿਹਾ ਹੈ ਅਤੇ Manager ਆਬਜੈਕਟ Manager ਕਲਾਸ ਦਾ ਹਵਾਲਾ ਦੇ ਰਿਹਾ ਹੈ ।
07:42 ਇੱਥੇ, ਅਸੀਂ ਵੇਖਦੇ ਹਾਂ ਕਿ Manager ਕਲਾਸ ਦਾ get Details () ਮੈਥਡ emp2 ਦੁਆਰਾ ਕਾਲ ਹੁੰਦਾ ਹੈ ।
07:49 ਪਰ ਜਦੋਂ emp2 set Department ਨੂੰ ਕਾਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ, ਤਾਂ ਸਾਨੂੰ ਇੱਕ ਐਰਰ ਪ੍ਰਾਪਤ ਹੁੰਦੀ ਹੈ ।
07:54 ਇਸ ਦਾ ਕਾਰਨ ਹੇਠ ਲਿਖੇ ਅਨੁਸਾਰ ਹੈ:

ਕੰਪਾਇਲਰ emp2.get Details () ਦੇ ਸਮੇਂ Employee ਕਲਾਸ ਵਿੱਚ get Details () ਮੈਥਡ ਨੂੰ ਵੇਖਦਾ ਹੈ ।

08:05 ਇਸ ਲਈ: ਇਹ ਕੋਈ ਐਰਰ ਨਹੀਂ ਰੱਖਦਾ ਹੈ ਅਤੇ ਕੋਡ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਦਾ ਹੈ ।
08:10 run time ‘ਤੇ, ਹਾਲਾਂਕਿ, JVM Manager ਕਲਾਸ ਵਿੱਚ “get Details ()” ਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ Manager ਕਲਾਸ ਦਾ “get Details ()” Employee ਕਲਾਸ ਦੇ “get Details ()” ਨੂੰ ਓਵਰਰਾਇਡ ਕਰਦਾ ਹੈ ।
08:24 ਇਸ ਲਈ: ਸਾਨੂੰ Manager ਕਲਾਸ ਦੇ get Details () ਦੇ ਆਧਾਰ ‘ਤੇ ਆਉਟਪੁਟ ਪ੍ਰਾਪਤ ਹੁੰਦਾ ਹੈ । ਪਰ ਕੰਪਾਇਲਰ Employee ਕਲਾਸ ਵਿੱਚ set Department ਮੈਥਡ ਨੂੰ ਨਹੀਂ ਵੇਖਦਾ ਹੈ ।
08:36 ਇਸ ਲਈ, emp2 ਕਾਲ ਕਰਨ ‘ਤੇ set Department ਇੱਕ ਐਰਰ ਦਿੰਦਾ ਹੈ ।
08:43 ਇੱਥੇ, Employee ਮੈਥਡ get Details () Employee ਕਲਾਸ ਲਈ ਲਾਗੂ ਕਰਦਾ ਹੈ ।
08:49 ਕੰਪਾਇਲਰ emp1.getDetails () ਦੇ ਸਮੇਂ get Details () ਲਈ Employee ਕਲਾਸ ਦਾ ਹਵਾਲਾ ਕਰਦਾ ਹੈ ।
08:57 ਰਨ ਟਾਇਮ ‘ਤੇ, JVM Employee ਕਲਾਸ ਵਿੱਚ get Details () ਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ । ਇਸ ਲਈ: ਸਾਨੂੰ 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 ਇਸ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ ਅਸੀਂ ਸਿੱਖਿਆ

ਜਾਵਾ ਵਿੱਚ Polymorphism ਕੀ ਹੈ “Run - time polymorphism” “Virtual Method Invocation” ਅਤੇ “Compile - time polymorphism”

10:23 ਨਿਰਧਾਰਤ ਕੰਮ ਦੇ ਰੂਪ ਵਿੱਚ, “Vehicle” ਅਤੇ “Bike class” ਦੇ ਲਈ ਮੈਥਡਸ ਓਵਰਰਾਇਡ ਕਰੋ ਜੋ ਅਸੀਂ ਪਿਛਲੇ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ ਵਰਤਿਆ ਸੀ ।
10:32 ਹੇਠ ਲਿਖੇ ਲਿੰਕ ‘ਤੇ ਉਪਲੱਬਧ ਵੀਡੀਓ ਇਹ ਸਪੋਕਨ ਟਿਊਟੋਰਿਅਲ ਪ੍ਰੋਜੇਕਟ ਦਾ ਸਾਰ ਕਰਦਾ ਹੈ । ਕ੍ਰਿਪਾ ਕਰਕੇ ਇਸਨੂੰ ਵੇਖੋ
10:40 ਸਪੋਕਨ ਟਿਊਟੋਰਿਅਲ ਪ੍ਰੋਜੈਕਟ ਟੀਮ - ਸਪੋਕਨ ਟਿਊਟੋਰਿਅਲਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਰਕਸ਼ਾਪਾਂ ਚਲਾਉਂਦੀ ਹੈ । ਅਤੇ ਆਨਲਾਇਨ ਟੈਸਟ ਪਾਸ ਕਰਨ ਵਾਲਿਆ ਨੂੰ ਪ੍ਰਮਾਣ ਪੱਤਰ ਵੀ ਦਿੰਦੇ ਹਨ । ਜ਼ਿਆਦਾ ਜਾਣਕਾਰੀ ਦੇ ਲਈ, ਕ੍ਰਿਪਾ ਕਰਕੇ contact@spoken-tutorial.org ‘ਤੇ ਲਿਖੋ ।
10:51 ਇਹ ਭਾਰਤ ਸਰਕਾਰ ਦੇ ਐਮਐਚਆਰਡੀ ਦੇ “ਆਈਸੀਟੀ ਵਲੋਂ ਰਾਸ਼ਟਰੀ ਸਾਖਰਤਾ ਮਿਸ਼ਨ” ਦੁਆਰਾ ਪ੍ਰਮਾਣਿਤ ਹੈ ।

ਇਸ ਮਿਸ਼ਨ ‘ਤੇ ਜ਼ਿਆਦਾ ਜਾਣਕਾਰੀ http://spoken-tutorial.org/NMEICT-Intro ‘ਤੇ ਉਪਲੱਬਧ ਹੈ

11:03 ਇਹ ਸਕਰਿਪਟ ਨਵਦੀਪ ਦੁਆਰਾ ਅਨੁਵਾਦਿਤ ਹੈ । IIT Bombay ਤੋਂ ਮੈਂ ਨਵਦੀਪ ਤੁਹਾਡੇ ਤੋਂ ਇਜ਼ਾਜਤ ਲੈਂਦਾ ਹਾਂ, ਧੰਨਵਾਦ । }

Contributors and Content Editors

Harmeet