Java/C3/Custom-Exceptions/Kannada

From Script | Spoken-Tutorial
Revision as of 16:59, 22 May 2020 by Sandhya.np14 (Talk | contribs)

Jump to: navigation, search

(This script is translated by Melvin & corrected & uploaded by Sandhya on 22nd May 2020) (corrected & uploaded scripts are marked as Final)

Outline: - ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ಎಂದರೇನು? - ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ನ ವಿವರಣೆ - ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ನ ಉದಾಹರಣೆ - "InvalidMarkException" - "throw" ಕೀವರ್ಡ್‌ ನ ಬಳಕೆ - ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ಗಳಲ್ಲಿ ಎರರ್‌ ಗಳನ್ನು ಸರಿಪಡಿಸುವುದು - "Add throws declaration" ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ ಎರರ್‌ ಅನ್ನು ಸರಿಪಡಿಸುವುದು - "throws" ಕೀವರ್ಡ್‌ ನ ಬಳಕೆ - "FileNotFoundException" ನ ಉದಾಹರಣೆ - ಅನೇಕ ಎಕ್ಸೆಪ್ಶನ್ ಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು - "surround with try/catch" ಆಯ್ಕೆಯನ್ನು ಬಳಸುವುದು


Time Narration


00:01 Custom exception ಗಳ ಕುರಿತ ಸ್ಪೋಕನ್‌ ಟ್ಯುಟೋರಿಯಲ್‌ ಗೆ ಸ್ವಾಗತ.
00:05 ಈ ಟ್ಯುಟೋರಿಯಲ್‌ ನಲ್ಲಿ ನಾವು, ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ಗಳು, throw ಮತ್ತು throws ಕೀವರ್ಡ್ಗಳ ಬಳಕೆಯ ಕುರಿತು ಕಲಿಯಲಿದ್ದೇವೆ.
00:14 ಈ ಟ್ಯುಟೋರಿಯಲ್‌ ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ನಾನು:

ಉಬಂಟು ಲಿನಕ್ಸ್ 16.04 OS, JDK 1 .7 ಮತ್ತು Eclipse 4.3.1 ಇವುಗಳನ್ನು ಬಳಸುತ್ತೇನೆ.

00:26 ಈ ಟ್ಯುಟೋರಿಯಲ್‌ ಅನುಸರಿಸಲು, ಜಾವಾದಲ್ಲಿ Exceptions Handling ನ ಬಗ್ಗೆ ನೀವು ತಿಳಿದಿರಬೇಕು. ಇಲ್ಲದಿದ್ದಲ್ಲಿ ಸಂಬಂಧಿತ ಜಾವಾ ಟ್ಯುಟೋರಿಯಲ್‌ಗಳಿಗಾಗಿ ದಯವಿಟ್ಟು ಇಲ್ಲಿ ತೋರಿಸಿರುವ ಲಿಂಕ್‌ಗೆ ಭೇಟಿ ನೀಡಿ.
00:38 ಮೊದಲಿಗೆ ನಾವು ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ಗಳ ಕುರಿತು ಕಲಿಯೋಣ.
00:42 ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ಎನ್ನುವುದು user defined exception ಕ್ಲಾಸ್‌ ಆಗಿದೆ. ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ 'ಚೆಕ್ಡ್ ಎಕ್ಸೆಪ್ಶನ್' ಗಳಾಗಿ ರಚಿಸಲಾಗುತ್ತದೆ.
00:51 ಬಳಕೆದಾರರ ಅಗತ್ಯತೆಗೆ ತಕ್ಕಂತೆ ಎಕ್ಸೆಪ್ಶನ್ ಅನ್ನು ಕಸ್ಟಮೈಸ್‌ ಮಾಡಲು ಇದನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
00:57 ನಾವೀಗ eclipse ಅನ್ನು ತೆರೆದು, CustomExceptionDemo ಎನ್ನುವ ಹೊಸ ಪ್ರಾಜೆಕ್ಟ್‌ ರಚಿಸಲಿದ್ದೇವೆ.
01:04 ಈ ಪ್ರಾಜೆಕ್ಟ್‌ ಒಳಗೆ ನಾವು, ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ಗಳ ವಿವರಣೆಗಾಗಿ ಅಗತ್ಯವಿರುವ ಕ್ಲಾಸುಗಳನ್ನು ರಚಿಸಲಿದ್ದೇವೆ.
01:11 ನಾವು InvalidMarkException ಎನ್ನುವ ಹೊಸ ಕ್ಲಾಸನ್ನು ರಚಿಸಲಿದ್ದೇವೆ.
01:15 ಇದನ್ನು ಎಕ್ಸೆಪ್ಶನ್ ಕ್ಲಾಸ್‌ ನ ವಿಧವಾಗಿ ಮಾಡಲು, ಇದು ಜಾವಾ ಎಕ್ಸೆಪ್ಶನ್ ಕ್ಲಾಸ್‌ ನ ಸಬ್‌ ಕ್ಲಾಸ್‌ ಆಗಿರಬೇಕು.
01:22 ಹೀಗೆ ಮಾಡಲು extends Exception ಎಂದು ಟೈಪ್‌ ಮಾಡಿ.
01:27 Source ಮೆನುವಿನ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು Generate constructors from Superclass ಆರಿಸಿ.
01:34 ಈಗ ಬಲಗಡೆಯಲ್ಲಿ Deselect All ಬಟನ್ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ.
01:38 ನಂತರ single string ಆರ್ಗ್ಯುಮೆಂಟ್‌ ಜೊತೆಗಿನ constructor ಆರಿಸಿ ಮತ್ತು ಕೆಳಗಡೆ ಇರುವ OK ಬಟನ್‌ ಮೇಲೆ ಕ್ಲಿಕ್‌ ಮಾಡಿ.
01:45 ಈ ಎಕ್ಸೆಪ್ಶನ್ ಉಂಟಾದಾಗ ತೋರಿಸುವ ಮೆಸೇಜ್‌ ಅನ್ನು ಕಸ್ಟಮೈಸ್‌ ಮಾಡಲು, ಈ ಸ್ಟ್ರಿಂಗ್ ಆರ್ಗ್ಯುಮೆಂಟ್‌ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. <<PAUSE>>
01:52 ನಾವೀಗ StudentMarks ಹೆಸರಿನ ಇನ್ನೊಂದು ಕ್ಲಾಸ್ ಅನ್ನು ಸೇರಿಸೋಣ.
01:57 ನಂತರ ಈ ಕೋಡ್‌ ಅನ್ನು ಟೈಪ್‌ ಮಾಡಿ.
02:00 ಈ ಕ್ಲಾಸು marks ಹೆಸರಿನ ಒಂದೇ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಹೊಂದಿದೆ.
02:04 constructor, marks ನ ಮೌಲ್ಯವನ್ನು ಇನಿಶಿಯಲೈಸ್ ಮಾಡುತ್ತದೆ.
02:09 ಈಗ ಮಾರ್ಕ್‌ ಗಳನ್ನು ವ್ಯಾಲಿಡೇಟ್ ಮಾಡಲು ಮೆಥಡ್‌ ಒಂದನ್ನು ಸೇರಿಸೋಣ.
02:13 ಮಾರ್ಕ್ ಗಳ ಸಾಮಾನ್ಯ ಶ್ರೇಣಿಯು 0 ಯಿಂದ 100.
02:18 ಒಂದುವೇಳೆ marks less than 0 or greater than 100 ಅನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದರೆ, InvalidMarkException ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ.
02:25 ಇದಕ್ಕಾಗಿ ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ಅನ್ನು ತೋರಿಸಲು ನಾವು throw ಕೀವರ್ಡ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಬಳಸಬೇಕು.
02:33 ಒಂದುವೇಳೆ ಮಾರ್ಕ್ ಸರಿಯಾಗಿದ್ದರೆ, “Entry OK” ಎಂಬ ಸಂದೇಶವು ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ.
02:39 ಈಗ InvalidMarkException ಎರರ್ ಕಾಣುತ್ತಿದೆ.
02:43 ಇದನ್ನು ಪರೀಕ್ಷಿಸಿ ಸರಿಪಡಿಸೋಣ.
02:46 ಇದಕ್ಕಾಗಿ ಎರರ್ ನ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು “Add throws declaration” ಮೇಲೆ ಡಬಲ್ ಕ್ಲಿಕ್ ಮಾಡಿ.
02:51 'ಮೆಥಡ್ ಸಿಗ್ನೇಚರ್' ಗೆ “throws InvalidMarkException” ಅನ್ನು ಸೇರಿಸಿದ ತಕ್ಷಣ ಎರರ್ ಕಾಣೆಯಾಗುವುದು.
03:00 ಇಲ್ಲಿ ಮೆಥಡ್ ಗಳ ಜೊತೆ throws ಕೀವರ್ಡ್ ಅನ್ನು ಬಳಸಲಾಗಿದೆ.
03:06 ಮೆಥಡ್, ಇಲ್ಲಿ specified exception ಅನ್ನು ತೋರಿಸುವುದನ್ನು ಇದು ಸೂಚಿಸುತ್ತದೆ.
03:11 ಇಂತಹ ಮೆಥಡ್ ಅನ್ನು ಕಾಲ್ ಮಾಡಿದಾಗ, ನಾವು exception handling ಕೋಡ್ ಅನ್ನು ಒದಗಿಸಬೇಕು.

03:16 ನಂತರ, ನಾವು 'ಫೈಲ್ ಆಕ್ಸೆಸ್ ಆಪರೇಶನ್' (file access operation) ಅನ್ನು ಮಾಡೋಣ. ಇದು FileNotFoundException ಅನ್ನು ತೋರಿಸುತ್ತದೆ.
03:23 ಇದಕ್ಕಾಗಿ, FileReader ಕ್ಲಾಸ್ ನ ಒಂದು ಇನ್ಸ್ಟನ್ಸ್ ಅನ್ನು (instance) ರಚಿಸಲು ಈ ಕೋಡ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಿ.
03:29 Eclipse ಕೆಲವೊಂದು ಎರರ್ಗಳನ್ನು ತೋರಿಸುತ್ತದೆ. ಏಕೆಂದರೆ ನಾವು ಸಂಬಂಧಿತ ಜಾವಾ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಇಂಪೋರ್ಟ್ ಮಾಡಿಲ್ಲ.
03:36 ಇದನ್ನು ಸರಿಪಡಿಸಲು ಎರರ್ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು import 'FileReader' (java.io) ಮೇಲೆ ಡಬಲ್ ಕ್ಲಿಕ್ ಮಾಡಿ.
03:44 ಮುಂದಿನ ಟ್ಯುಟೋರಿಯಲ್ ನಲ್ಲಿ ನಾವು package ಮತ್ತು ಇದರ ಬಳಕೆಯ ಕುರಿತು ವಿವರವಾಗಿ ಕಲಿಯಲಿದ್ದೇವೆ.
03:50 Home ಫೋಲ್ಡರ್ನಲ್ಲಿರುವ Marks ಫೈಲ್ ಅನ್ನು fr ಗೆ ಆಕ್ಸೆಸ್ ಮಾಡಲು ಅನುಮತಿಸಲು ಈ ಕೋಡ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಿ.
03:59 ಇಲ್ಲಿ ತೋರಿಸಿರುವ ಪಾಥ್ ಅನ್ನು ಸಿಸ್ಟಂನ Home ಫೋಲ್ಡರ್ನಲ್ಲಿರುವ ಪಾಥ್ ನಿಂದ ಬದಲಾಯಿಸಬೇಕು.
04:05 ಕೋಡ್ ನ ಈ ಸಾಲು, FileNotFoundException ಅನ್ನು ತೋರಿಸಬಹುದು ಎಂದು ಒಂದು ಎರರ್ ತೋರಿಸುತ್ತದೆ.
04:10 ಈ ಎಕ್ಸೆಪ್ಶನ್ ಅನ್ನು throws ಕ್ಲಾಜ್ ನಲ್ಲಿ ಸೇರಿಸುವ ಮೂಲಕ ನಾವಿದನ್ನು ಬಗೆಹರಿಸಬಹುದು.
04:16 FileNotFoundException ಅನ್ನು ಸಹ throws ಕ್ಲಾಜ್ ಗೆ ಸೇರಿಸಿರುವುದನ್ನು ನಾವು ನೋಡಬಹುದು.
04:22 ಇಲ್ಲಿ ತೋರಿಸಿರುವಂತೆ throws ಅನ್ನು ಬಳಸಿ ಅನೇಕ ಎಕ್ಸೆಪ್ಶನ್ ಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು.
04:28 ನಾವೀಗ StudentMarks ಕ್ಲಾಸ್ ಒಳಗೆ, main() ಮೆಥಡ್ ಅನ್ನು ರಚಿಸುವೆವು. ಮತ್ತು ಫಲಿತಾಂಶಗಳನ್ನು ನೋಡುವೆವು.
04:34 ಇಲ್ಲಿ m1 ಅಬ್ಜೆಕ್ಟ್ ಅನ್ನು ರಚಿಸಿ ಮಾರ್ಕ್ ಗಳ ಮೌಲ್ಯವನ್ನು 40 ಆಗಿ ಇನಿಶಿಯಲೈಸ್ ಮಾಡಲಿದ್ದೇವೆ.
04:41 ಮುಂದಿನ ಸಾಲಿನಲ್ಲಿ ಅಬ್ಜೆಕ್ಟ್ m1 ಅನ್ನು ಬಳಸಿ, validate ಮೆಥಡ್ ಅನ್ನು ನಾವು ಇನ್ವೋಕ್ ಮಾಡುವೆವು.
04:47 validate ಮೆಥಡ್ ಅನ್ನು ಇನ್ವೋಕ್ ಮಾಡಿದಾಗ ಎರರ್ ಉಂಟಾಗಿರುವುದನ್ನು ನಾವು ನೋಡಬಹುದು.
04:52 ಈ ಮೆಥಡ್, InvalidMarkException ಮತ್ತು FileNotFoundException ಅನ್ನು ತೋರಿಸುತ್ತದೆ ಎಂದು ಇದು ಹೇಳುತ್ತದೆ.
04:59 ಈ ಎರರ್ ಸರಿಪಡಿಸಲು, ನಾವು ಹಿಂದೆ ಮಾಡಿದಂತೆ main ಮೆಥಡ್ಗೆ throws ಕ್ಲಾಜ್ ಅನ್ನು ಸೇರಿಸಬಹುದು.
05:05 ಆದರೆ try ಮತ್ತು catch ಬ್ಲಾಕ್ ಬಳಸಲು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ.
05:10 ಹೀಗಾಗಿ Surround with try/catch ಮೇಲೆ ಡಬಲ್ ಕ್ಲಿಕ್ ಮಾಡಿ.
05:14 ಈಗ ಅಗತ್ಯವಿರುವ try-catch ಬ್ಲಾಕ್ಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ ಮತ್ತು ಎಕ್ಸೆಪ್ಶನ್ ಅನ್ನು ನಿರ್ವಹಿಸಲಾಗಿದೆ.
05:20 ಈಗ ಈ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ರನ್ ಮಾಡೋಣ.
05:23 ಇದು “Entry OK” ಮತ್ತು “rest of the code” ತೋರಿಸುತ್ತದೆ.
05:27 ಮಾರ್ಕ್ಸ್ ನ ಮೌಲ್ಯವು 40 ಇದ್ದು, ಇದು ಸರಿಯಾಗಿರುವುದರಿಂದ ಹೀಗೆ ತೋರಿಸಲಾಗಿದೆ.
05:32 ನಾವೀಗ ಮೌಲ್ಯವನ್ನು ತಪ್ಪು ನಮೂದು -10 ಕ್ಕೆ (ಮೈನಸ್ ೧೦) ಬದಲಾಯಿಸೋಣ.
05:37 ನಾವೀಗ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಇನ್ನೊಮ್ಮೆ ರನ್ ಮಾಡೋಣ.
05:40 ಈಗ InvalidMarkException ಕಾಣಿಸಿಕೊಂಡಿದೆ, ಏಕೆಂದರೆ -10 ತಪ್ಪು ಎಂಟ್ರಿಯಾಗಿದೆ.
05:47 ನಾವು ಎಕ್ಸೆಪ್ಶನ್ ನಿರ್ವಹಿಸಿರುವುದರಿಂದ, “rest of the code” ಸಂದೇಶವನ್ನು ನೋಡಬಹುದು.
05:53 ಇದರ ಬದಲಾಗಿ ನಾವು “throws” ಕ್ಲಾಜ್ ಬಳಸಿದರೆ, “rest of the code” ಸಂದೇಶವು ಪ್ರಿಂಟ್ ಆಗುವುದಿಲ್ಲ.
06:00 ಅಲ್ಲದೆ ಈ ಪ್ರೋಗ್ರಾಂ ಸ್ಥಗಿತಗೊಳ್ಳುತ್ತದೆ.
06:03 ಹೀಗಾಗಿ, main ಮೆಥಡ್ ಒಳಗೆ, ಮೆಥಡ್ ಒಂದನ್ನು ಕಾಲ್ ಮಾಡಿದಾಗ try catch ಬ್ಲಾಕ್ ಬಳಸುವುದು ಒಳ್ಳೆಯದು.
06:10 ನಾವೀಗ ಈ ಟ್ಯುಟೋರಿಯಲ್ನ ಕೊನೆಯಲ್ಲಿದ್ದೇವೆ.
06:13 ಸಂಕ್ಷಿಪ್ತವಾಗಿ,
06:15 ಈ ಟ್ಯುಟೋರಿಯಲ್ ನಲ್ಲಿ ನಾವು:

ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ಎಂದರೇನು ಮತ್ತು throw ಮತ್ತು throws ಕೀವರ್ಡ್ಗಳ ಬಳಕೆ, ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ಗಳ ರಚನೆ ಮತ್ತು ಬಳಕೆಯ ಕುರಿತು ಕಲಿತೆವು.

06:26 ಅಸೈನ್ಮೆಂಟ್ ಆಗಿ InvalidAgeException ಎನ್ನುವ Custom exception ಕ್ಲಾಸ್ ಅನ್ನು ರಚಿಸಿ.
06:33 ಇನ್ನೊಂದು Age ಕ್ಲಾಸ್ ಅನ್ನು ರಚಿಸಿ ಮತ್ತು Age ನ ವ್ಯಾಲ್ಯೂವನ್ನು ಇನಿಶಿಯಲೈಸ್ ಮಾಡಲು 'ಕನ್ಸ್ಟ್ರಕ್ಟರ್' (constructor) ಒಂದನ್ನು ರಚಿಸಿ.
06:39 ಹಾಗೂ, ಪ್ರಾಯವು 18ಕ್ಕಿಂತ ಕಡಿಮೆ ಇದ್ದಲ್ಲಿ, ಎಕ್ಸೆಪ್ಶನ್ ತೋರಿಸಲು ಮೆಥಡ್ validate ಅನ್ನು ರಚಿಸಿ.
06:45 main ಮೆಥಡ್ ಒಳಗೆ ಅಬ್ಜೆಕ್ಟ್ ಗಳನ್ನು ರಚಿಸಿ ಮತ್ತು validate() ಮೆಥಡ್ ಅನ್ನು ಇನ್ವೋಕ್ ಮಾಡಿ.
06:51 ಅಗತ್ಯವಿರುವಲ್ಲಿ try-catch ಬ್ಲಾಕ್ಗಳನ್ನು ಬಳಸಿ exception handling ಒದಗಿಸಿ.
06:56 ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಶನ್ ಕ್ಲಾಸ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ.
07:00 ಈ ಕೆಳಗಿನ ಲಿಂಕ್ ನಲ್ಲಿ ಇರುವ ವೀಡಿಯೊ, ಸ್ಪೋಕನ್ ಟ್ಯುಟೋರಿಯಲ್ ಪ್ರಾಜೆಕ್ಟ್ ನ ಸಾರಾಂಶವಾಗಿದೆ. ದಯವಿಟ್ಟು ಇದನ್ನು ಡೌನ್ ಲೋಡ್ ಮಾಡಿ ವೀಕ್ಷಿಸಿ.
07:06 ಸ್ಪೋಕನ್ ಟ್ಯುಟೋರಿಯಲ್ ಪ್ರಾಜೆಕ್ಟ್ ತಂಡವು ಸ್ಪೋಕನ್ ಟ್ಯುಟೋರಿಯಲ್ ಗಳನ್ನು ಬಳಸಿ ಕಾರ್ಯಶಾಲೆಗಳನ್ನು ನಡೆಸುತ್ತದೆ ಮತ್ತು ಆನ್ ಲೈನ್ ಪರೀಕ್ಷೆಗಳಲ್ಲಿ ತೇರ್ಗಡೆ ಹೊಂದಿದವರಿಗೆ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಕೊಡುತ್ತದೆ. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ದಯವಿಟ್ಟು ನಮಗೆ ಬರೆಯಿರಿ.
07:18 ‘ಸ್ಪೋಕನ್ ಟ್ಯುಟೋರಿಯಲ್’ ಪ್ರೊಜೆಕ್ಟ್, NMEICT, MHRD, ಭಾರತ ಸರ್ಕಾರದ ನೆರವು ಪಡೆದಿದೆ. ಕೆಳಗಿನ ಲಿಂಕ್ ನಲ್ಲಿ ಈ ಮಿಷನ್ ಕುರಿತು ಹೆಚ್ಚಿನ ಮಾಹಿತಿ ಲಭ್ಯವಿದೆ.
07:29 ಈ ಸ್ಕ್ರಿಪ್ಟ್, ಅಮಲ್ ಜ್ಯೋತಿ ಕಾಲೇಜ್ ಆಫ್ ಎಂಜಿನಿಯರಿಂಗ್ ನ ಮಾಹಿತಿ ತಂತ್ರಜ್ಞಾನ ವಿಭಾಗದ ಕೊಡುಗೆಯಾಗಿದೆ.
07:36 ಈ ಸ್ಕ್ರಿಪ್ಟ್ ನ ಅನುವಾದಕರು ಮಂಗಳೂರಿನಿಂದ ಮೆಲ್ವಿನ್ ಮತ್ತು ಧ್ವನಿ ಡಾ. ನವೀನ್ ಭಟ್, ಉಪ್ಪಿನಪಟ್ಟಣ.

ಧನ್ಯವಾದಗಳು.

Contributors and Content Editors

Sandhya.np14