Advanced-Cpp/C2/More-On-Inheritance/Punjabi
From Script | Spoken-Tutorial
“Time” | “Narration” | |
00:01 | ਸਤਿ ਸ਼੍ਰੀ ਅਕਾਲ ਦੋਸਤੋ, C++ ਵਿੱਚ ‘Multiple’ ਅਤੇ ‘Hierarchical Inheritance’ ਦੇ ਸਪੋਕਨ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ ਤੁਹਾਡਾ ਸਾਰਿਆ ਦਾ ਸਵਾਗਤ ਹੈ । | |
00:07 | ਇਸ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ ਅਸੀਂ ਹੇਠ ਲਿਖੇ ਨੂੰ ਕਰਨਾ ਸਿੱਖਾਂਗੇ, | |
00:09 | ‘Multiple Inheritance’ | |
00:11 | ‘Hierarchical Inheritance’ | |
00:13 | ਅਸੀਂ ਇਹ ਉਦਾਹਰਣਾਂ ਦੀ ਮੱਦਦ ਨਾਲ ਕਰਾਂਗੇ । | |
00:17 | ਇਸ ਟਿਊਟੋਰਿਅਲ ਨੂੰ ਰਿਕਾਰਡ ਕਰਨ ਦੇ ਲਈ, ਮੈਂ ਵਰਤੋਂ ਕਰ ਰਿਹਾ ਹਾਂ | |
00:20 | ਉਬੰਟੁ OS ਵਰਜ਼ਨ 11.10 | |
00:24 | g++ ਕੰਪਾਇਲਰ ਵਰਜ਼ਨ 4.6.1 | |
00:29 | ‘multiple inheritance’ ਵਿੱਚ, ਡਿਰਾਇਵਡ ਕਲਾਸ ਇੱਕ ਤੋਂ ਜ਼ਿਆਦਾ ਬੇਸ ਕਲਾਸ ਤੋਂ ਇੰਹੇਰਿਟ ਹੁੰਦੀ ਹੈ । | |
00:36 | ਹੁਣ, ਅਸੀਂ ‘multiple inheritance’ ‘ਤੇ ਇੱਕ ਉਦਾਹਰਣ ਵੇਖਦੇ ਹਾਂ । | |
00:40 | ਮੈਂ ਐਡੀਟਰ ‘ਤੇ ਕੋਡ ਪਹਿਲਾਂ ਹੀ ਟਾਈਪ ਕਰ ਲਿਆ ਹੈ । | |
00:42 | ਮੈਂ ਇਸ ਨੂੰ ਖੋਲ੍ਹਾਂਗਾ । | |
00:45 | ਨੋਟ ਕਰੋ ਕਿ ਸਾਡੀ ਫਾਇਲ ਦਾ ਨੇਮ ‘multiple.cpp’ ਹੈ । | |
00:49 | ਇਸ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਅਸੀਂ ਸਟੂਡੈਂਟ ਦਾ ਨੇਮ, ਰੋਲ ਨੰਬਰ, ਮਾਰਕਸ ਅਤੇ ਐਵਰੇਜ ਦਿਖਾਵਾਂਗੇ । | |
00:56 | ਮੈਂ ਕੋਡ ਸਮਝਾਉਂਦਾ ਹਾਂ । | |
00:59 | ਇਹ ‘iostream’ ਸਾਡੀ ਹੈਡਰ ਫਾਇਲ ਹੈ । | |
01:01 | ਇੱਥੇ ਅਸੀਂ ‘std namespace’ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹਾਂ । | |
01:05 | ਫਿਰ ਸਾਡੇ ਕੋਲ ‘ਕਲਾਸ’ ਸਟੂਡੈਂਟ ਹੈ । | |
01:07 | ਇਹ ‘base class’ ਹੈ । | |
01:09 | ਇਸ ਵਿੱਚ ਸਾਡੇ ਕੋਲ ‘ਇੰਟੀਜਰ ਵੈਰੀਏਬਲ’ ‘roll_no’ ਅਤੇ ‘ਕੇਰੈਕਟਰ ਵੈਰੀਏਬਲ’ ‘name’ ਹੈ । | |
01:16 | ਇਹ ‘protected’ ਐਲਾਨ ਕੀਤੇ ਗਏ ਹਨ । | |
01:19 | ਫਿਰ ਸਾਡੇ ਕੋਲ ਇੱਕ ਹੋਰ ‘ਕਲਾਸ “exam_inherit”’ ਹੈ । | |
01:24 | ਇਹ ਵੀ ‘base class’ ਹੈ । | |
01:26 | ਇੱਥੇ ਸਾਡੇ ਕੋਲ ਦੋ ‘ਬੇਸ ਕਲਾਸਾਂ’ – ‘student’ ਅਤੇ ‘exam_inherit’ ਹਨ । | |
01:32 | ਇਸ ਵਿੱਚ ਸਾਡੇ ਕੋਲ ਤਿੰਨ ਵੈਰੀਏਬਲਸ – ‘sub1, sub2, sub3’ ‘protected’ ਦੀ ਤਰ੍ਹਾਂ ਹਨ | |
01:38 | ਅਜਿਹਾ ਇਸ ਲਈ ਹੈ ਕਿਉਂਕਿ ‘protected variables derived class’ ਦੇ ਦੁਆਰਾ ਐਕਸੈੱਸ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ । | |
01:44 | ਹੁਣ ਇੱਥੇ ਸਾਡੇ ਕੋਲ ‘ਕਲਾਸ’ ‘grade’ ਹੈ ਜੋ ‘derived class’ ਹੈ । | |
01:50 | ਇਹ ‘base classes’ – ‘class student’ ਅਤੇ ‘class exam_inherit’ ਨੂੰ ਇੰਹੇਰਿਟ ਕਰਦਾ ਹੈ । | |
01:56 | ਇਸ ਵਿੱਚ ਅਸੀਂ ‘integer variable’ ‘avg’ ‘private’ ਦੀ ਤਰ੍ਹਾਂ ਐਲਾਨ ਕੀਤਾ ਹੈ । | |
02:02 | ਫਿਰ ਸਾਡੇ ਕੋਲ ‘public functions’ ਵਿੱਚ ‘ਫੰਕਸ਼ਨ’ ਹਨ : | |
02:04 | ‘input ()’ | |
02:05 | ‘display ()’ | |
02:06 | ‘average ()’ | |
02:07 | ‘input_exam ()’ | |
02:08 | ਅਤੇ ‘display_exam ()’ | |
02:11 | ਇਸ ਵਿੱਚ ਅਸੀਂ ‘integer variable’ ‘total’ ‘public’ ਦੀ ਤਰ੍ਹਾਂ ਐਲਾਨ ਕੀਤਾ ਹੈ । | |
02:17 | ਫਿਰ ਅਸੀਂ ਸਟੂਡੈਂਟ ਦਾ ‘ਨੇਮ’ ਅਤੇ ‘ਰੋਲ – ਨੰਬਰ’ ਸਵੀਕਾਰ ਕਰਨ ਦੇ ਲਈ ‘input function’ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ । | |
02:24 | ‘display function’ ਵਿੱਚ ਅਸੀਂ ਸਟੂਡੈਂਟ ਦਾ ‘ਨੇਮ’ ਅਤੇ ‘ਰੋਲ – ਨੰਬਰ’ ਦਿਖਾਉਂਦੇ ਹਾਂ । | |
02:28 | ਇੱਥੇ ਸਾਡੇ ਕੋਲ ‘function input_exam’ ਹੈ । | |
02:31 | ਇਸ ਵਿੱਚ ਅਸੀਂ ਤਿੰਨ ਸਬਜੈਕਟਸ ਦੇ ਮਾਰਕਸ ‘sub1, sub2’ ਅਤੇ ‘sub3’ ਲਈ ਹਨ । | |
02:37 | ਫਿਰ ‘display_exam function’ ਵਿੱਚ, ਅਸੀਂ ਤਿੰਨੇ ਸਬਜੈਕਟਸ ਦੇ ਟੋਟਲ ਦੀ ਗਿਣਤੀ ਕਰਦੇ ਹਾਂ ਅਤੇ ਟੋਟਲ ਪ੍ਰਿੰਟ ਕਰਦੇ ਹਾਂ । | |
02:44 | ਅਤੇ ‘function average’ ਵਿੱਚ ਅਸੀਂ ਐਵਰੇਜ ਦੀ ਗਿਣਤੀ ਕਰਦੇ ਹਾਂ । | |
02:48 | ਇਹ ਸਾਡਾ ‘ਮੇਨ ਫੰਕਸ਼ਨ’ ਹੈ । | |
02:51 | ਇਸ ਵਿੱਚ ਅਸੀਂ ‘class grade’ ਦਾ ‘object’ ਬਣਾਉਂਦੇ ਹਾਂ ਜੋ ‘derived class’ ‘gd’ ਹੈ । | |
02:57 | ਫਿਰ ਅਸੀਂ ਉਪਰੋਕਤ ਸਾਰੇ ਫੰਕਸ਼ਨਸ ਨੂੰ ਕਾਲ ਕਰਦੇ ਹਾਂ । | |
03:01 | ਇਹ ‘return statement’ ਹੈ । | |
03:03 | ਹੁਣ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਚਲਾਉਂਦੇ ਹਾਂ । | |
03:05 | ਆਪਣੇ ਕੀਬੋਰਡ ‘ਤੇ ਇੱਕੋ-ਸਮੇਂ ‘Ctrl, Alt ਅਤੇ T’ ਕੀਜ ਦਬਾਕੇ ਟਰਮੀਨਲ ਵਿੰਡੋ ਖੋਲੋ । | |
03:14 | ਕੰਪਾਇਲ ਕਰਨ ਦੇ ਲਈ, ਟਾਈਪ ਕਰੋ ‘g++ ਸਪੇਸ multiple ਡਾਟ cpp ਸਪੇਸ hyphen o ਸਪੇਸ mult’ ਐਂਟਰ ਦਬਾਓ। | |
03:24 | ਟਾਈਪ ਕਰੋ, ‘dot slash mult’ ਐਂਟਰ ਦਬਾਓ। | |
03:29 | ਇੱਥੇ ਅਸੀਂ ਵੇਖਦੇ ਹਾਂ: ‘Enter Roll no. :’ | |
03:32 | ਮੈਂ 3 ਐਂਟਰ ਕਰਾਂਗਾ । | |
03:34 | ‘Enter Name:’ | |
03:36 | ਮੈਂ ‘Pratham’ ਐਂਟਰ ਕਰਾਂਗਾ । | |
03:39 | ‘Enter marks of subject1’ | |
03:41 | ਮੈਂ 67 ਐਂਟਰ ਕਰਾਂਗਾ । | |
03:43 | ‘subject’2 ਵਿੱਚ 78 ਅਤੇ | |
03:46 | ‘subject3’ ਵਿੱਚ 84 | |
03:48 | ਆਉਟਪੁਟ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ: | |
03:51 | ‘Roll no is: 3’ | |
03:52 | ‘Name is: Pratham’ | |
03:53 | ‘Total is: 229’ | |
03:55 | ‘Average is: 76’ | |
03:58 | ਇਹ ‘multiple inheritance’ ਸੀ । | |
04:00 | ਹੁਣ ਅਸੀਂ ‘hierarchical inheritance’ ਵੇਖਾਂਗੇ । | |
04:03 | ਆਪਣੇ ਪ੍ਰੋਗਰਾਮ ‘ਤੇ ਵਾਪਸ ਆਉਂਦੇ ਹਾਂ । | |
04:05 | ‘hierarchical inheritance’ ਵਿੱਚ ‘multiple derived classes’ ਇੱਕ ਬੇਸ ਕਲਾਸ ਨੂੰ ਇੰਹੇਰਿਟ ਕਰਦੀਆਂ ਹਨ । | |
04:12 | ਨੋਟ ਕਰੋ ਕਿ ਸਾਡੀ ਫਾਇਲ ਦਾ ਨੇਮ ‘hierarchical dot cpp’ ਹੈ । | |
04:16 | ਹੁਣ ਮੈਂ ਕੋਡ ਸਮਝਾਉਂਦਾ ਹਾਂ । | |
04:19 | ਇਹ ‘iostream’ ਸਾਡੀ ਹੈਡਰ ਫਾਇਲ ਹੈ । | |
04:22 | ਇੱਥੇ ਅਸੀਂ ‘std namespace’ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਹੈ । | |
04:25 | ਫਿਰ ਸਾਡੇ ਕੋਲ ‘ਕਲਾਸ ਸਟੂਡੈਂਟ’ ਹੈ ਜੋ ਸਾਡੀ ‘ਬੇਸ ਕਲਾਸ’ ਹੈ । | |
04:29 | ਇਸ ਵਿੱਚ, ਸਾਡੇ ਕੋਲ ‘ਰੋਲ – ਨੰਬਰ’ ‘integer variable’ ਦੀ ਤਰ੍ਹਾਂ ਹੈ । | |
04:34 | ‘Sub1, sub2, sub3’ ਅਤੇ ‘total’ ‘integer variables’ ਦੀ ਤਰ੍ਹਾਂ ਹੈ । | |
04:40 | ਫਿਰ ‘name’ ‘character variable’ ਦੀ ਤਰ੍ਹਾਂ | |
04:43 | ਇਹ ‘protected’ ਐਲਾਨੇ ਗਏ ਹਨ । | |
04:46 | ਇੱਥੇ ਸਾਡੇ ਕੋਲ ਇੱਕ ਹੋਰ ‘class’ ‘show’ ਹੈ । | |
04:49 | ਇਹ ‘derived class’ ਹੈ । | |
04:51 | ਇਹ ‘class student’ ਦੀ ਪ੍ਰਾਪਰਟੀਜ ਨੂੰ ਇੰਹੇਰਿਟ ਕਰਦੀ ਹੈ । | |
04:54 | ਇਸ ਵਿੱਚ ਸਾਡੇ ਕੋਲ ਦੋ ਫੰਕਸ਼ਨਸ: ‘input’ ਅਤੇ ‘display’ ਹਨ । | |
04:59 | ਇਹ ‘public functions’ ਦੀ ਤਰ੍ਹਾਂ ਐਲਾਨ ਹੋਏ ਹਨ । | |
05:02 | ‘function input’ ਵਿੱਚ ਅਸੀਂ ਸਟੂਡੈਂਟ ਦਾ ‘ਨੇਮ’ ਅਤੇ ‘ਰੋਲ – ਨੰਬਰ’ ਲੈਂਦੇ ਹਾਂ । | |
05:07 | ‘function display’ ਵਿੱਚ ਅਸੀਂ ਸਟੂਡੈਂਟ ਦਾ ‘ਨੇਮ’ ਅਤੇ ‘ਰੋਲ – ਨੰਬਰ’ ਦਿਖਾਉਂਦੇ ਹਾਂ । | |
05:11 | ਫਿਰ ਸਾਡੇ ਕੋਲ ਇੱਕ ਹੋਰ ‘derived class’ ਕਲਾਸ ‘exam’ ਹੈ । | |
05:15 | ਇਹ ਵੀ ‘class student’ ਨੂੰ ਇੰਹੇਰਿਟ ਕਰਦੀ ਹੈ । | |
05:19 | ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਇੱਥੇ ਦੋ ‘derived class’ – ‘class exam’ ਅਤੇ ‘class show’ ਹਨ । | |
05:26 | ਦੋਵੇਂ ਕਲਾਸਾਂ ‘class student’ ਨੂੰ ਇੰਹੇਰਿਟ ਕਰਦੀਆਂ ਹਨ । | |
05:30 | ‘class exam’ ਵਿੱਚ ਸਾਡੇ ਕੋਲ ਦੋ ਫੰਕਸ਼ਨਸ ‘input_exam’ ਅਤੇ ‘total marks’ ਹਨ ਜੋ ‘public’ ਦੀ ਤਰ੍ਹਾਂ ਐਲਾਨੇ ਹਨ । | |
05:38 | ਇੱਥੇ ਅਸੀਂ ‘ਫੰਕਸ਼ਨ “input_exam”’ ਨੂੰ ਐਕਸੈੱਸ ਕਰਦੇ ਹਾਂ । | |
05:41 | ਇਹ ਤਿੰਨ ਵਿਸ਼ਿਆਂ – ‘sub1, sub2 ਅਤੇ sub3’ ਦੇ ਮਾਰਕਸ ਲੈਂਦਾ ਹੈ । | |
05:46 | ਫਿਰ ਸਾਡੇ ਕੋਲ ‘total_marks’ ਫੰਕਸ਼ਨ ਹੈ । | |
05:49 | ਇਹ ਤਿੰਨਾਂ ਵਿਸ਼ਿਆਂ ਦੇ ਟੋਟਲ ਦੀ ਗਿਣਤੀ ਕਰਦਾ ਹੈ ਅਤੇ ਟੋਟਲ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ । | |
05:53 | ਇਹ ਸਾਡਾ ‘ਮੇਨ ਫੰਕਸ਼ਨ’ ਹੈ । | |
05:56 | ਇਸ ਵਿੱਚ ਅਸੀਂ ਤਿੰਨ ਕਲਾਸਾਂ ਦੇ ਆਬਜੈਕਟਸ ‘st, sw ਅਤੇ em’ ਬਣਾਉਂਦੇ ਹਾਂ । | |
06:03 | ਫਿਰ ਅਸੀਂ ਹੇਠ ਲਿਖੇ ਆਬਜੈਕਟਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉਪਰੋਕਤ ਸਾਰੇ ਫੰਕਸ਼ਨਸ ਨੂੰ ਕਾਲ ਕਰਦੇ ਹਾਂ
‘sw.input ();’ ‘em.input_exam ();’ ‘sw.display ();’ ‘em.total_marks ();’ | |
06:15 | ਅਤੇ ਇਹ ਸਾਡੀ ਰਿਟਰਨ ਸਟੇਟਮੈਂਟ ਹੈ । | |
06:17 | ਹੁਣ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਚਲਾਉਂਦੇ ਹਾਂ । | |
06:19 | ‘ਟਰਮੀਨਲ’ ‘ਤੇ ਵਾਪਸ ਆਉਂਦੇ ਹਾਂ । | |
06:21 | ਮੈਂ ‘prompt’ ਕਲੀਅਰ ਕਰਦਾ ਹਾਂ । | |
06:24 | ਹੁਣ ਕੰਪਾਇਲ ਕਰਦੇ ਹਾਂ, ਟਾਈਪ ਕਰੋ ‘g++ ਸਪੇਸ hierarchical ਡਾਟ cpp ਸਪੇਸ hyphen o hier’ | |
06:36 | ਐਂਟਰ ਦਬਾਓ । ਟਾਈਪ ਕਰੋ ‘./hier’ | |
06:41 | ਐਂਟਰ ਦਬਾਓ । | |
06:43 | ‘Enter Roll no .:’ ਮੈਂ 4 ਦੇਵਾਂਗਾ । | |
06:46 | ‘Enter Name:’ ਮੈਂ ‘Ashwini’ ਦੇਵਾਂਗਾ । | |
06:50 | “Enter marks of subject1” | |
06:52 | ਮੈਂ 87 ਦੇਵਾਂਗਾ । | |
06:54 | ‘subject2’ ਵਿੱਚ ‘67’ ਅਤੇ ‘subject3’ ਵਿੱਚ ‘97’ | |
07:00 | ਆਉਟਪੁਟ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ | |
07:02 | ‘Roll no is: 4’ | |
07:04 | ‘Name is: Ashwini’ ਅਤੇ | |
07:06 | ‘Total is: 251’ ਇਹ ਸਾਨੂੰ ਇਸ ਟਿਊਟੋਰਿਅਲ ਦੇ ਅਖੀਰ ਵਿੱਚ ਲੈ ਕੇ ਜਾਂਦਾ ਹੈ । | |
07:10 | ਆਪਣੀ ਸਲਾਇਡਸ ‘ਤੇ ਵਾਪਸ ਆਉਂਦੇ ਹਾਂ । | |
07:13 | ਇਸ ਦਾ ਸਾਰ ਕਰਦੇ ਹਾਂ । ਇਸ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ ਅਸੀਂ ਸਿੱਖਿਆ, | |
07:16 | “Multiple Inheritance” | |
07:18 | “Hierarchical Inheritance” | |
07:20 | ਇੱਕ ਨਿਰਧਾਰਤ ਕੰਮ ਵਿੱਚ “area” ਅਤੇ “perimeter” ਦੀ ਕਲਾਸ ਬਣਾਓ । | |
07:25 | ਰੇਕਟੇਂਗਲ ਦਾ ਏਰੀਆ ਅਤੇ ਪੈਰੀਮੀਟਰ ਜਾਣੋ । | |
07:29 | ਹੇਠ ਲਿਖੇ ਲਿੰਕ ‘ਤੇ ਉਪਲੱਬਧ ਵੀਡੀਓ ਨੂੰ ਵੇਖੋ । | |
07:32 | ਇਹ ਸਪੋਕਨ ਟਿਊਟੋਰਿਅਲ ਪ੍ਰੋਜੈਕਟ ਦਾ ਸਾਰ ਕਰਦਾ ਹੈ । | |
07:35 | ਚੰਗੀ ਬੈਂਡਵਿਡਥ ਨਾ ਮਿਲਣ ‘ਤੇ ਤੁਸੀਂ ਇਸਨੂੰ ਡਾਊਂਨਲੋਡ ਕਰਕੇ ਵੀ ਵੇਖ ਸਕਦੇ ਹੋ । | |
07:40 | ਸਪੋਕਨ ਟਿਊਟੋਰਿਅਲ ਪ੍ਰੋਜੇਕਟ ਟੀਮ : | |
07:42 | ਸਪੋਕਨ ਟਿਊਟੋਰਿਅਲਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਰਕਸ਼ਾਪਾਂ ਚਲਾਉਂਦੀ ਹੈ । | |
07:45 | ਆਨਲਾਇਨ ਟੈਸਟ ਪਾਸ ਕਰਨ ਵਾਲਿਆ ਨੂੰ ਪ੍ਰਮਾਣ ਪੱਤਰ ਵੀ ਦਿੰਦੇ ਹਨ । | |
07:49 | ਜ਼ਿਆਦਾ ਜਾਣਕਾਰੀ ਦੇ ਲਈ, ਕ੍ਰਿਪਾ ਕਰਕੇ | |
07:51 | contact@spoken-tutorial.org ਨੂੰ ਲਿਖੋ । | |
07:56 | ਸਪੋਕਨ ਟਿਊਟੋਰਿਅਲ ਪ੍ਰੋਜੇਕਟ ਟਾਕ-ਟੂ-ਅ ਟੀਚਰ ਪ੍ਰੋਜੈਕਟ ਦਾ ਹਿੱਸਾ ਹੈ ।। | |
08:01 | ਇਹ ਭਾਰਤ ਸਰਕਾਰ ਦੇ ਐਮਐਚਆਰਡੀ ਦੇ “ਆਈਸੀਟੀ ਵਲੋਂ ਰਾਸ਼ਟਰੀ ਸਾਖਰਤਾ ਮਿਸ਼ਨ” ਦੁਆਰਾ ਪ੍ਰਮਾਣਿਤ ਹੈ । | |
08:07 | ਇਸ ‘ਤੇ ਜ਼ਿਆਦਾ ਜਾਣਕਾਰੀ ਹੇਠਾਂ ਦਿੱਤੇ ਲਿੰਕ ‘ਤੇ ਉਪਲੱਬਧ ਹੈ । http://spoken-tutorial.org/NMEICT-Intro | |
08:11 | ਆਈ.ਆਈ.ਟੀ ਬੰਬੇ ਤੋਂ ਮੈਂ ਨਵਦੀਪ ਤੁਹਾਡੇ ਤੋਂ ਇਜਾਜ਼ਤ ਲੈਂਦਾ ਹਾਂ । ਸਾਡੇ ਨਾਲ ਜੁੜਨ ਲਈ ਧੰਨਵਾਦ । | } |