Ruby/C3/Object-Oriented-Programming-Methods/Oriya

From Script | Spoken-Tutorial
Revision as of 13:00, 10 June 2017 by Pradeep (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Time Narration
00:01 ବନ୍ଧୁଗଣ, Rubyରେ Object Oriented Programming – Methods ଉପରେ ସ୍ପୋକନ୍ ଟ୍ୟୁଟୋରିଆଲ୍ କୁ ସ୍ୱାଗତ
00:07 ଏହି ଟ୍ୟୁଟୋରିଆଲ୍ ରେ ଆମେ ବ୍ୟବହାର କରି ଶିଖିବା
00:09 ଇନଷ୍ଟାନ୍ସ ମେଥଡ୍
00:11 କ୍ଲାସ୍ ମେଥଡ୍, ଆକ୍ସେସର୍ ମେଥଡ୍
00:15 ଏଠାରେ, ଆମେ ବ୍ୟବହାର କରୁଛୁ: Ubuntu Linux ଭର୍ସନ୍ 12.04
00:19 Ruby 1.9.3
00:22 ଏହି ଟ୍ୟୁଟୋରିଆଲର ଅନୁସରଣ ପାଇଁ, ଆପଣଙ୍କର କାର୍ଯ୍ୟକାରୀ Internet ସଂଯୋଗ ଥିବା ଆବଶ୍ୟକ
00:27 ଆପଣଙ୍କର ଲିନକ୍ସ କମାଣ୍ଡ୍, ଟର୍ମିନଲ୍ ଓ ଟେକ୍ସଟ ଏଡିଟର ଉପରେ ମଧ୍ୟ ଜ୍ଞାନ ଥିବା ଆବଶ୍ୟକ
00:31 ଯଦି ନୁହେଁ, ତେବେ ସମ୍ପର୍କିତ ଟ୍ୟୁଟୋରିଆଲ୍ ପାଇଁ, ଦୟାକରି ଆମ ୱେବସାଇଟ୍ ଦେଖନ୍ତୁ
00:36 ଆରମ୍ଭ କରିବା ପୂର୍ବରୁ, ମନେ ପକାନ୍ତୁ, ଆଗରୁ ଆମେ ttt ଡାଇରେକ୍ଟୋରୀ ତିଆରି କରିସାରିଛେ
00:41 ଚାଲନ୍ତୁ ସେହି ଡାଇରେକ୍ଟୋରୀକୁ ଯିବା
00:44 ତା’ପରେ, ରୁବୀ ହାଇଫେନ୍ ଟ୍ୟୁଟୋରିଆଲକୁ ଯିବା
00:47 oop-methods ନାମକ ଗୋଟିଏ ଡାଇରେକ୍ଟୋରୀ ସୃଷ୍ଟିକରନ୍ତୁ ଏବଂ ଏହା ମଧ୍ୟରେ cd
00:54 ଇନଷ୍ଟାନ୍ସ ମେଥଡ୍ କ’ଣ?
00:56 ଇନଷ୍ଟାନ୍ସ ମେଥଡଗୁଡିକ ହେଲେ ସେହି ମେଥଡ୍ ଯାହା classର ସମସ୍ତ ଇନଷ୍ଟାନ୍ସ ପାଇଁ ଉପଲବ୍ଧ ଥାଏ
01:03 ପୂର୍ବରୁ ଆମେ, କିପରି ଗୋଟିଏ classର objects କିମ୍ବା instances ସୃଷ୍ଟି କରାଯାଏ ଶିଖିଛେ
01:09 ମୌଳିକ ସ୍ତରର Ruby ଟ୍ୟୁଟୋରିଆଲସରେ ଦର୍ଶାଯାଇଥିବା ଭଳି, gedit ରେ ଗୋଟିଏ ନୂଆ ଫାଇଲ୍ ସୃଷ୍ଟି କରନ୍ତୁ
01:14 ଏହାକୁ instance_methods.rb ନାମ ଦିଅନ୍ତୁ
01:19 ମୋ ପାଖରେ instance methodsର ପ୍ରୟୋଗ ଉପରେ ଗୋଟିଏ କାର୍ଯ୍ୟକାରୀ ଉଦାହରଣ ଅଛି
01:24 ଆପଣ ଟ୍ୟୁଟୋରିଆଲକୁ ପଜ୍ କରିପାରିବେ ଏବଂ ଏହାକୁ ବୁଝିବା ସମୟରେ, କୋଡ୍ ଟାଇପ୍ କରନ୍ତୁ
01:29 ଏହି ଉଦାହରଣରେ Product ନାମକ ଗୋଟିଏ କ୍ଲାସକୁ ପରିଭାଷିତ କରାଯାଇଅଛି
01:33 ଇନଷ୍ଟାନ୍ସ ଭେରିଏବଲ୍, name ଓ priceକୁ ଇନିଶିଆଲାଇଜ୍ କରିବା ପାଇଁ, ଗୋଟିଏ initialize ନାମକ ମେଥଡକୁ କଲ୍ କରନ୍ତୁ
01:41 Name ଓ price ନାମକ ଇନଷ୍ଟାନ୍ସ ମେଥଡଗୁଡିକୁ ମଧ୍ୟ ପରିଭାଷିତ କରନ୍ତୁ
01:47 ସେମନଙ୍କ ମଧ୍ୟରୁ ପ୍ରତ୍ୟେକେ, ଯଥାନୁକ୍ରମେ ଇନଷ୍ଟାନ୍ସ ଭେରିଏବଲର name ଓ price ରିଟର୍ନ କରିବେ
01:54 ଇନଷ୍ଟାନ୍ସ ମେଥଡଗୁଡିକୁ, ସାଧାରଣ ମେଥଡ୍ ଭାବେ ପରିଭାଷିତ କରାଯାଏ
01:58 ପୂର୍ବରୁ, Ruby ରେ କିପରି ମେଥଡ୍ ସୃଷ୍ଟି କାରାଯାଏ, ଆମେ ଜାଣିଛେ
02:02 କିଛି ସମୟରେ, ଆମେ ଏହି ମେଥଡଗୁଡିକ କିପରି ସମଗ୍ର instances ପାଇଁ ଉପଲବ୍ଧ ହୁଅନ୍ତି ଦେଖିବା
02:07 ବର୍ତ୍ତମାନ ଆମେ, ଆମ ପାଖରେ ଥିବା logic ପ୍ରୟୋଗ କରିବା
02:11 ଏଠାରେ ଗୋଟିଏ Product ଅବଜେକ୍ଟକୁ ଇନିଶିଆଲାଇଜ୍ କରନ୍ତୁ ଏବଂ ଏହାକୁ product_object_1 ଭାବେ ନାମିତ କରନ୍ତୁ
02:18 ଏହାକୁ ଗୋଟିଏ name ଭାଲ୍ୟୁ ଏବଂ price ଭାଲ୍ୟୁ ସହିତ ଇନିଶିଆଲାଇଜ୍ କରନ୍ତୁ
02:24 initializer ବ୍ଲକ୍, @name ଓ @priceକୁ ଭାଲ୍ୟୁ ଭାବେ instance variablesକୁ ପାସ୍ କରିଦେବ
02:31 ବର୍ତ୍ତମାନ ଏହି product instance କିମ୍ବା object, name ଓ priceନାମକ ଇନଷ୍ଟାନ୍ସ ମେଥଡକୁ ବ୍ୟବହାର କରିପାରିବ
02:37 ଏହି ମେଥଡଗୁଡିକର ସାହାଯ୍ୟ ଦ୍ଵାରା, instance variablesରେ ଷ୍ଟୋର୍ ହୋଇଥିବା ଭାଲ୍ୟୂଗୁଡିକୁ ପ୍ରାପ୍ତ କରନ୍ତୁ
02:43 ବର୍ତ୍ତମାନ କୋଡକୁ ନିଷ୍ପାଦନ କରନ୍ତୁ
02:46 ଟର୍ମିନଲକୁ ଫେରିଆସନ୍ତୁ ଏବଂ ଟାଇପ୍ କରନ୍ତୁ: ruby ସ୍ପେସ୍ instance_methods.rb ଏବଂ ଆଉଟପୁଟ୍ ଦେଖିବା ପାଇଁ Enter ଦାବନ୍ତୁ
02:56 ଆପଣ ଦେଖିପାରିବେ ଯେ, ଅବଜେକ୍ଟ ସହିତ ଇନିଶିଆଲାଇଜ୍ ହୋଇଥିବା ଭଲ୍ୟୁଗୁଡିକୁ ଏହା ପ୍ରିଣ୍ଟ୍ କରିବ
03:02 ମନେକରନ୍ତୁ, laptop ଓ 35,000
03:07 ତା’ପରେ, ଅନ୍ୟ ଏକ instance ବା objectକୁ ଇନିଶିଆଲାଇଜ୍ କରନ୍ତୁ
03:12 ଏହି ଅବଜେକ୍ଟକୁ, product_object_2 ନାମ ଦିଅନ୍ତୁ
03:18 ଏଥର ଚାଲନ୍ତୁ, name ଓ price ପାଇଁ ଗୋଟିଏ ଭିନ୍ନ ସେଟର ଭାଲ୍ୟୁ ପ୍ରଦାନ କରିବା
03:23 ବର୍ତ୍ତମାନ, ଏହି ଅବଜେକ୍ଟ୍ ପାଇଁ, ଇନଷ୍ଟାନ୍ସ ମେଥଡ୍-name ଓ price କୁ କଲ୍ କରନ୍ତୁ
03:35 ତା’ପରେ ଟର୍ମିନଲକୁ ଫେରିଆସନ୍ତୁ, ଏବଂ ପୂର୍ବଭଳି କୋଡକୁ ନିଷ୍ପାଦନ କରନ୍ତୁ
03:41 ଆପଣ ଦେଖିପାରିବେ ଯେ, ଏହା ସଫଳତାର ସହ ନିଷ୍ପାଦନ ହେବ ଏବଂ ନୂତନ ଭାଲ୍ୟୁଗୁଡିକୁ ପ୍ରିଣ୍ଟ୍ କରିବ
03:48 ଏଥିରୁ ପ୍ରମାଣିତ ହୁଏ ଯେ, କ୍ଲାସ୍ ପ୍ରଡକ୍ଟର ସମସ୍ତ ଅବଜେକ୍ଟ୍ ପାଇଁ instance methods ଉପଲବ୍ଧ ଥାଏ
03:55 ବର୍ତ୍ତମାନ ଆପଣ, ନିଜର instance methods ଲେଖିବା ପାଇଁ ସମର୍ଥ ହେବେ
03:59 ବର୍ତ୍ତମାନ ଚାଲନ୍ତୁ, class methods କ’ଣ, ଦେଖିବା
04:04 Class methods ହେଉଛି methods ଯାହା କେବଳ class ପାଇଁ ଉପଲବ୍ଧ
04:09 ଏହି ମେଥଡଗୁଡିକ କ୍ଲାସର instances ପାଇଁ ଉପଲବ୍ଧ ହେବ ନାହିଁ
04:14 ଆପଣ class methodsକୁ ବିଭିନ୍ନ ଉପାୟରେ ପରିଭାଷିତ କରିପାରିବେ
04:16 ଚାଲନ୍ତୁ ଗୋଟିଏ ଉଦାହରଣ ଦେଖିବା
04:18 ମୌଳିକ ସ୍ତରର Ruby ଟ୍ୟୁଟୋରିଆଲସରେ ଦର୍ଶାଯାଇଥିବା ଭଳି, gedit ରେ ଗୋଟିଏ ନୂଆ ଫାଇଲ୍ ସୃଷ୍ଟି କରନ୍ତୁ
04:24 ଏହାକୁ, class_methods.rb ନାମ ଦିଅନ୍ତୁ
04:28 ମୋ ପାଖରେ class methods ଉପରେ ଗୋଟିଏ କାର୍ଯ୍ୟକାରୀ ଉଦାହରଣ ଅଛି
04:32 ଆପଣ ଟ୍ୟୁଟୋରିଆଲକୁ ପଜ୍ କରିପାରିବେ ଏବଂ ଏହାକୁ ବୁଝିବା ସମୟରେ, କୋଡ୍ ଟାଇପ୍ କରନ୍ତୁ
04:36 ମୁଁ ପୂର୍ବରୁ ଏହିଭଳି ଗୋଟିଏ Product class ପରିଭାଷିତ କରିଛି
04:40 ମୁଁ ପୂର୍ବରୁ ଏହିଭଳି ଗୋଟିଏ initializer କୁ ମଧ୍ୟ କଲ୍ କରିଛି
04:44 ହେଲେ ଏଥର, ମୁଁ description ନାମକ ଗୋଟିଏ ଅତିରିକ୍ତ ଆର୍ଗୁମେଣ୍ଟକୁ ଯୋଗ କରିଛି
04:48 ଭାଲ୍ୟୁଗୁଡିକୁ ଧରି ରଖିବା ପାଇଁ class variables ମଧ୍ୟ ବ୍ୟବହାର କରନ୍ତୁ, ପୂର୍ବ instance variables ଭଳି ନୁହେଁ
04:55 ଏହି କ୍ଲାସ୍, ଆପଣଙ୍କୁ class methodsକୁ ପରିଭାଷିତ କରିବା ପାଇଁ, ତିନୋଟି ମାର୍ଗ ପ୍ରଦର୍ଶନ କରିବ
05:01 Name ପାଇଁ ଘୋଷିତ ହୋଇଥିବା class methodକୁ ଯାଞ୍ଚ୍ କରନ୍ତୁ
05:06 ଏଠାରେ ଏହା କ୍ଲାସ୍ ନାମ Product ବ୍ୟବହାର କରି ପରିଭାଷିତ ହୋଇଛି
05:10 ତା’ପରେ, ଦ୍ଵିତୀୟ class methodsର ଘୋଷଣାକୁ ଯାଞ୍ଚ୍ କରନ୍ତୁ
05:14 ଏଠାରେ, କୀ ୱର୍ଡ୍ self ବ୍ୟବହୃତ ହୋଇଛି
05:18 ତା’ପରେ, class methodsକୁ ପରିଭାଷିତ କରିବାର ତୃତୀୟ ମାର୍ଗକୁ ଯାଞ୍ଚ୍ କରନ୍ତୁ
05:23 ବର୍ତ୍ତମାନ ଚାଲନ୍ତୁ, ଏହି class ମେଥଡଗୁଡିକୁ ପ୍ରୟୋଗ କରିବା
05:27 ଚାଲନ୍ତୁ, ପୂର୍ବଭଳି ଗୋଟିଏ ପ୍ରଡକ୍ଟର objectକୁ ଇନିଶିଆଲାଇଜ୍ କରିବା
05:32 ଏଥର description ପାଇଁ, ଗୋଟିଏ ଭାଲ୍ୟୁ ମଧ୍ୟ ପ୍ରଦାନ କରନ୍ତୁ
05:37 ବର୍ତ୍ତମାନ, ପ୍ରଦର୍ଶନ ହେଲାଭଳି class methodsର ସାହାଯ୍ୟ ନିଅନ୍ତୁ
05:42 ବର୍ତ୍ତମାନ, କୋଡକୁ ନିଷ୍ପାଦନ କରନ୍ତୁ ଏବଂ ଆଉଟପୁଟ୍ ଯାଞ୍ଚ୍ କରନ୍ତୁ
05:47 ଟର୍ମିନଲକୁ ଫେରିଆସନ୍ତୁ ଏବଂ ପୂର୍ବଭଳି କୋଡକୁ ନିଷ୍ପାଦନ କରନ୍ତୁ
05:54 ଆପଣ ଦେଖିପାରିବେ ଯେ, ଏହା name, price ଓ description ପାଇଁ ଭାଲ୍ୟୁଗୁଡିକୁ ପ୍ରିଣ୍ଟ୍ କରିବ
05:59 ବର୍ତ୍ତମାନ ଆପଣ, ନିଜର class methods ଲେଖିବା ପାଇଁ ସମର୍ଥ ହେବେ
06:03 ତ’ପରେ, ଆମେ accessor methods କ’ଣ, ଦେଖିବା
06:07 Ruby, classes ମଧ୍ୟରେ ପରିଭାଷିତ ହୋଇଥିବା ଡେଟାଗୁଡିକୁ ଆକ୍ସେସ୍ କରିବା ପାଇଁ accessor methodsକୁ ବ୍ୟବହାର କରିଥାଏ
06:13 Accessor ମେଥଡ୍, setter ମେଥଡ୍ ଓ getter ମେଥଡର ସମାହାର ଅଟେ
06:18 Setter ମେଥଡ୍ ଭାଲ୍ୟୁଗୁଡିକୁ ସେଟ୍ କରିଥାଏ
06:22 Getter ମେଥଡ୍ ସେହି ଭାଲ୍ୟୁଗୁଡିକୁ ପ୍ରାପ୍ତ କରିଥାଏ
06:24 Ruby, ଏହି ମେଥଡଗୁଡିକୁ ଘୋଷଣା କରିବା ପାଇଁ, attr_accessor ଶବ୍ଦର ବ୍ୟବହାର କରିଥାଏ
06:31 ଚାଲନ୍ତୁ, accessor ମେଥଡର ଗୋଟିଏ ଉଦାହରଣକୁ ଦେଖିବା
06:35 ମୌଳିକ ସ୍ତରର Ruby ଟ୍ୟୁଟୋରିଆଲସରେ ଦର୍ଶାଯାଇଥିବା ଭଳି, gedit ରେ ଗୋଟିଏ ନୂଆ ଫାଇଲ୍ ସୃଷ୍ଟି କରନ୍ତୁ
06:39 ଏହାକୁ, accessor_methods.rb ନାମ ଦିଅନ୍ତୁ
06:43 ମୋ ପାଖରେ accessor methodsର ପ୍ରୟୋଗ ଉପରେ ଗୋଟିଏ କାର୍ଯ୍ୟକାରୀ ଉଦାହରଣ ଅଛି
06:47 ଆପଣ ଟ୍ୟୁଟୋରିଆଲକୁ ପଜ୍ କରିପାରିବେ ଏବଂ ଏହାକୁ ବୁଝିବା ସମୟରେ, କୋଡ୍ ଟାଇପ୍ କରନ୍ତୁ
06:52 ଏହି ଉଦାହରଣରେ Product ନାମକ ଗୋଟିଏ କ୍ଲାସ୍ ପରିଭାଷିତ ହୋଇଛି
06:56 Name ଓ price ପାଇଁ attr_accessor ଘୋଷିତ ହୋଇଛି
07:01 ଏହି ପ୍ରକାର ମେଥଡଗୁଡିକର ବ୍ୟବହାର ପାଇଁ, ସେଗୁଡିକ ସମସ୍ତ ଆବଶ୍ୟକ ଅଟେ
07:05 ବର୍ତ୍ତମାନ, ଏହାକୁ କାର୍ଯ୍ୟରେ ପରିଣତ କରିବା
07:07 ଗୋଟିଏ Product ଅବଜେକ୍ଟକୁ ଇନିଶିଆଲାଇଜ୍ କରନ୍ତୁ
07:10 ତା’ପରେ, Product ଅବଜେକ୍ଟର name ଓ priceକୁ ସେଟ୍ କରନ୍ତୁ
07:14 ଏହା ସମ୍ଭବ ହୁଏ କାରଣ attr_declaration, ଡିଫଲ୍ଟ ଭାବେ ଭାଲ୍ୟୁଗୁଡିକୁ ସେଟ୍ କରିବା ପାଇଁ methods ସୃଷ୍ଟି କରିଥାଏ
07:22 ତା’ପରେ, getter ମେଥଡ୍ ବ୍ୟବହାର କରି name ଓ priceର ଭାଲ୍ୟୁଗୁଡିକୁ ପ୍ରିଣ୍ଟ୍ କରିବା ପାଇଁ ଚେଷ୍ଟା କରନ୍ତୁ
07:28 ଏହି Getter ମେଥଡଗୁଡିକ, attr_accessorର ଘୋଷଣା ଦ୍ଵାରା ମଧ୍ୟ ଜେନେରେଟ୍ ହୋଇଥିଲା
07:35 ବର୍ତ୍ତମାନ ପୂର୍ବଭଳି କୋଡକୁ ନିଷ୍ପାଦନ କରନ୍ତୁ
07:40 ଆପଣ ଦେଖିପାରିବେ ଯେ, ଏହା ଆମେ ସେଟ୍ କରିଥିବା ଭାଲ୍ୟୁଗୁଡିକୁ ପ୍ରିଣ୍ଟ୍ କରିବ
07:44 ବର୍ତ୍ତମାନ ଆପଣ, ନିଜର accessor methods ଲେଖିବା ପାଇଁ ସମର୍ଥ ହେବେ
07:50 ଗୋଟିଏ କଥା ଧ୍ୟାନ ଦିଅନ୍ତୁ ଯେ, accessor ମେଥଡଗୁଡିକ, ଡିଫଲ୍ଟ ଭାବେ instance ମେଥଡ୍ ଅଟନ୍ତି
07:55 ତେଣୁ ସେଗୁଡିକୁ class Productର ବିଭିନ୍ନ ଇନଷ୍ଟାନ୍ସ ଦ୍ଵାରା ଆକ୍ସେସ୍ କରିପାରିବେ
08:00 ଏହି ଟ୍ୟୁଟୋରିଆଲରେ ଆମେ ଶିଖିଲେ: instance methods, class methods ଓ accessor methods
08:06 ଏକ ଆସାଇନମେଣ୍ଟ ଭାବେ: Temperature ନାମକ ଗୋଟିଏ କ୍ଲାସକୁ ପରିଭାଷିତ କରନ୍ତୁ
08:10 Rubyର accessor method ସିଣ୍ଟାକ୍ସ ବ୍ୟବହାର କରି, ଗୋଟିଏ instance method ଲେଖନ୍ତୁ
08:15 ଏହି ମେଥଡ୍, ପ୍ରଦତ୍ତ Fahrenheitକୁ Celsiusରେ ଗଣନା କରିବା ଆବଶ୍ୟକ
08:20 ନିମ୍ନ ଲିଙ୍କରେ ଥିବା ଭିଡିଓକୁ ଦେଖନ୍ତୁ, http://spoken-tutorial.org/What_is_a_Spoken_Tutorial
08:23 ଏହା ସ୍ପୋକନ୍ ଟ୍ୟୁଟୋରିଆଲ୍ ପ୍ରୋଜେକ୍ଟକୁ ସାରାଂଶିତ କରେ
08:26 ଯଦି ଆପଣଙ୍କର ଭଲ ବ୍ୟାଣ୍ଡୱିଡଥ୍ ନାହିଁ, ଏହାକୁ ଡାଉନଲୋଡ୍ କରିଦେଖିପାରିବେ
08:30 ସ୍ପୋକନ୍ ଟ୍ୟୁଟୋରିଆଲ୍ ପ୍ରୋଜେକ୍ଟ ଟିମ୍: ସ୍ପୋକନ୍ ଟ୍ୟୁଟୋରିଆଲ୍ସ ବ୍ୟବହାର କରି କର୍ମଶାଳାମାନ ଚଲାନ୍ତି
08:34 ଅନଲାଇନ୍ ଟେଷ୍ଟ ପାସ୍ କରୁଥିବା ବ୍ୟକ୍ତିମାନଙ୍କୁ ପ୍ରମାଣପତ୍ର ଦିଅନ୍ତି.
08:38 ଅଧିକ ବିବରଣୀ ପାଇଁ ଦୟାକରି contact@spoken-tutorial.orgକୁ ଲେଖନ୍ତୁ
08:44 ସ୍ପୋକନ୍ ଟ୍ୟୁଟୋରିଆଲ ପ୍ରୋଜେକ୍ଟ, ଟକ୍ ଟୁ ଏ ଟିଚର୍ ପ୍ରୋଜେକ୍ଟର ଏକ ଅଂଶ.
08:48 ଏହା ଭାରତ ସରକାରଙ୍କ MHRDର ICT ମାଧ୍ୟମରେ ରାଷ୍ଟ୍ରୀୟ ସାକ୍ଷରତା ମିଶନ୍ ଦ୍ୱାରା ସମର୍ଥିତ.
08:55 ଏହି ମିଶନ୍ ଉପରେ ଅଧିକ ବିବରଣୀ ନିମ୍ନ ଲିଙ୍କ (spoken-tutorial.org/NMEICT-Intro)ରେ ଉପଲବ୍ଧ
09:03 ଆଇଆଇଟି ବମ୍ୱେ ତରଫରୁ, ପ୍ରଦୀପ ମହାପାତ୍ରଙ୍କ ସହ ମୁଁ ପ୍ରଭାସ ତ୍ରିପାଠୀ ଆପଣଙ୍କଠାରୁ ବିଦାୟ ନେଉଛି. ଆମ ସହିତ ଜଡ଼ିତ ହୋଇଥିବାରୁ ଧନ୍ୟବାଦ

Contributors and Content Editors

Pradeep