Showing posts with label OOP. Show all posts
Showing posts with label OOP. Show all posts

C# Beginner Book ဖတ္ၿပီး ဘာဆက္လုပ္ရမလဲ...။



ေမး။ ။ ကၽြန္ေတာ္ အသက္(၁၆)နွစ္ရွိပါၿပီ..။ အနာဂတ္မွာ Programming Field ထဲမွာ အလုပ္လုပ္မယ္လို႔ စဥ္းစားထားပါတယ္..။ နိုင္ငံၿခားတကၠသိုလ္ကိုေက်ာင္းေလွ်ာက္လိုက္ၿပီးကတည္းက Programming ကို အေတြ႔အၾကံဳရဖို႔ စေလ႔လာထားခ်င္ပါတယ္..။ ပညာေရးအတြက္ေရာ..၊ ေနာင္အလုပ္အတြက္ေရာ အဆင္ေၿပခ်င္လို႔ပါ..။ မနွစ္ကေတာ႔ Java သင္ခဲ႔ပါတယ္..။ ဒါေပမယ္႔ စာအုပ္တစ္အုပ္ၿပီးတာနဲ႔ စိတ္ပ်က္လာၿပီး သူ႔ကိုမစြန္႔လႊတ္ခင္ေတာ႔ Project တစ္ခု ၿပီးခဲ႔ပါေသးတယ္..။


ဒီနွစ္ေတာ႔ C# သင္ဖို႔ ဆံုးၿဖတ္လုိက္ပါၿပီ..။ Java အေၿခခံနည္းနည္းရွိထားေတာ႔ တစ္ခ်ိဳ႕အခ်က္ေတြ ၿပန္အမွတ္ရပါတယ္..။ အရင္အေတြ႔အၾကံဳရွိမထားေတာ႔ ၿပန္ေတာ႔ဖတ္ရပါတယ္..။ ကၽြန္ေတာ္႔အထင္ အဲဒီနွစ္ခုက တူသင္႔သေလာက္တူၿပီး မတူသင္႔သေလာက္လည္း ကြဲတယ္လို႔ ထင္ပါတယ္..။


ကၽြန္ေတာ္C# စေလ႔လာတာကေတာ႔ Herb Schildt's ရဲ႔ "C# 3.0 A Beginner's Guide" ဆိုတဲ႔ စာအုပ္ပါ..။ ၿပီးေအာင္ေလ႔လာပါတယ္..။ ဒါေပမယ္႔ စာအုပ္ၿပီးေတာ႔ အခုဘာဆက္လုပ္ရမလဲ မသိပါဘူး..။ ေတြ႔ရာပေရာဂ်က္တစ္ခု ေကာက္ေရးေနပါတယ္..။ (တကယ္လုပ္နိုင္တာထက္ အမ်ားၾကီးပိုေနတယ္ဆိုတာ ေတြ႔ပါတယ္..။) ပိုအဆင္႔ၿမင္႔တဲ႔ ေခါင္းစဥ္ေတြကို ဖတ္ရမလား..။(လက္ေတြ႔အေတြ႔အၾကံဳက မရွိပါဘူး..။)ဒီစာအုပ္ဖတ္ၿပီးေပမယ္႔ တကယ္စြမ္းေဆာင္နိုင္တဲ႔ Programmer ၿဖစ္ေအာင္ ဘယ္လိုလုပ္ရမလဲ မသိေသးပါဘူး..။


အေၿဖ ၁။ ။ ေသးေသးေလးက စလုပ္ပါ..။ တကယ္႔ေသးေသးေလးကို ေရးပါ..။ ရိုးရွင္းလြယ္ကူၿပီး ၿပီးေအာင္ ၿပည္႔စံုသြားေအာင္ ေရးပါ..။


ပထမProgram ၿပီးတာနဲ႔ နည္းနည္းပိုရွဳပ္ေထြးတဲ႔ ဒုတိယတစ္ပုဒ္ေရးပါ..။ ဒါေပမယ္႔ ေသးေသးေလးက စေရးပါ..။ ဥပမာ။ ။ unit ေၿပာင္းတဲ႔ Text Based Application လိုမ်ိဴးကို စေရးပါ..။


အဲဒါကိုပဲ လအနည္းငယ္ၾကာေအာင္ေရးပါ..။ ဘယ္ Program တစ္ခုထဲေပၚမွာပဲ အာရံုမစိုက္ပါနဲ႔..။ ၿပီးခဲ႔တဲ႔အေဟာင္းတစ္ခုကိုပဲ နည္းနည္းစီ ထပ္ထည္႔ၿပီး ၿပီးသြားေအာင္ ၿပည္႔စံုသြားေအာင္ ၾကိဳးစားပါ..။ အမွားလုပ္မိမွာနဲ႔ Code ေတြ မေကာင္းတာ ညံ႕တာဆိုတာ မပူပါနဲ႔..။


ဘာလဲဆိုေတာ႔ အၾကိမ္တိုင္း တကယ္ၿပီးေအာင္လုပ္ဖို႔က လုိရင္းပါပဲ..။ ဒါမွ တြန္းအားၿဖစ္လာမယ္..။ ဒါေပမယ္႔ စိတ္၀င္စားေစမယ္႔ element အသစ္ေတြရွိပါတယ္..။ အတင္းစိတ္အားထက္သန္လြန္းလို႔လည္း မရပါဘူး..။ အေစာပိုင္းပေရာဂ်က္ေတြမွာ ဆံုးၿဖတ္ခ်က္အမွားေတြလုပ္တာက ေနာက္တစ္ခါ မလုပ္မိေစေတာ႔ဘူးေပါ႔..။ Problems ကို မတူညီတဲ႔ခ်ဥ္းကပ္မွဳနဲ႔ ခ်ဥ္းကပ္နုိင္မယ္..။ အမွားေတြလုပ္မိေနေပမယ္႔ အခ်ိန္ၾကာလာတာနဲ႔အမွ် Problem ေတြက ဓားေသြးေက်ာက္ေတြ ၿဖစ္လာတာပါပဲ..။ Problem ကို ေသးငယ္ေအာင္လုပ္လိုက္တာနဲ႔အမွ် ၿပႆနာအသစ္ေတြကို ေအာင္ၿမင္နုိင္လုပ္နုိင္ၿပီး Design Decision နဲ႔ပတ္သက္လို႔ စိတ္ပ်က္ၿပီး လက္ေလွ်ာ႔ခ်င္တာမ်ိဴး ၿဖစ္မွာမဟုတ္ေတာ႔ပါဘူး..။ အၾကိမ္တိုင္းၿပန္လည္တက္ၾကြလာၿပီး ေပၚလာတဲ႔အၾကံဥာဏ္ေတြကလည္း ဂုဏ္ယူစရာCode ေတြ ၿဖစ္လာေစမွာပါပဲ..။

အေၿဖ ၂။ ။ CRUD operation တစ္ခုနဲ႔ Database နဲ႔ Database ခ်ိတ္တဲ႔ Web Application တစ္ခု ေရးပါ..။(CRUD operation ဆိုတာ Create,Read,Update,Read ပါ..။ Insert,Update,Delete နဲ႔ သေဘာထားခ်င္းအတူတူပါပဲ..။ အသံုးအနွဳန္းပဲ ကြာတာပါ..။ ။မစံပယ္) ဒီအရည္အခ်င္းက ေယဘုယ်အားၿဖင္႔ ရွိသင္႔တဲ႔အရည္အခ်င္းပါ..။ နည္းနည္းပိုေကာင္းခ်င္ရင္ေတာ႔ User Interface မွာ JavaScript ေလးဘာေလး ထည္႔ေရးေပါ႔..။

အေၿဖ ၃။ ။Project အတြက္ Idea လိုတယ္ဆိုပါေတာ႔..။ ကြန္ပ်ဴတာၿပင္ပက မင္း၀ါသနာကိုၾကည္႔လိုက္ပါ..။ မင္း၀ါသနာကို ကြန္ပ်ဴတာနဲ႔ၿပီးနိုင္တဲ႔တစ္ခုကို ေရြးလုိက္ပါ..။ ဥပမာ။ ။ မင္းက ဓာတ္ပံုဆရာဆိုပါေတာ႔..။ Photo Album Program ေလးေရးေပါ႔..။ အဲဒါမင္းအတြက္ အသစ္စက္စက္ၾကီးၿဖစ္မေနဘဲ မင္းစိတ္၀င္စားတာအေပၚမွာပဲ ထပ္ခ်ဲ႔သြားတာေပါ႔..။ Hello World Program ထက္ေတာ႔ ၾကီးမွာပဲေလ..။ မေရးခင္ေတာ႔ မင္း Program က ဘာလုပ္ခ်င္တယ္ဆိုတာ ခ်ေရးထားပါ..။ အစိတ္အပိုင္းေသးေသးေလးေတြခြဲထားၿပီး တစ္ခုခ်င္းစုစည္းေရးသြားပါ..။

အေၿဖ ၄။ ။ ငါကေတာ႔ ငါ႔အရည္အခ်င္းကို အြန္လိုင္းမွာေတြ႔တဲ႔ Code Kata exercises ေတြနဲ႔ၿမွင္႔ခဲ႔တာပဲ..။ 15 Exercises to Know a Programming Language ဆိုတာေတြနဲ႔ေပါ႔..။ ဒါေတြၿပီးရင္ေတာ႔ လက္ေတြ႔က်တဲ႔ Applications ေတြေရးေပါ႔..။ ဘယ္လို Program ေနေန (မင္းကိုေပ်ာ္ေစရံု Program ေလးေနေန) ေရးပါ..။
-Calculator
-ရိုးရိုး Crawler, Website ရွာတဲ႔ Program (amazon.com က တစ္ခ်ိဳ႕Products ေတြကို နာရီးၿခားတိုင္းရွာတဲ႔ Application ေသးေသးေလးၿဖစ္ၿဖစ္)
-Text based game
-Log file parser
-Open source project ရွာၿပီး အဲဒီမွာလည္း ၀င္ေရးတာမ်ိဴး

ဘယ္နည္းနဲ႔ၿဖစ္ၿဖစ္..၊ ေလ႔က်င္႔ခန္းတစ္ခုတည္းကို ထပ္ခါထပ္ခါလုပ္တာလည္း အေထာက္အကူၿပဳပါတယ္..။ Factor ေတြၿပန္ခြဲတာ..၊ Pattern ေတြ သတ္မွတ္လိုက္နာတာ..၊ Unit Testing ေတြ ေလ႔က်င္႔တာၿဖစ္ၿဖစ္ လုပ္ပါ..။

အေၿဖ ၅။ ။ Program ေရးဖို႔ရာ Programming (အစီအစဥ္ဆြဲၿခင္း) ၿဖင္႔ပဲ သင္ရမယ္..။ Computer ကို မင္းလုပ္ေစခ်င္တဲ႔ ရိုရိုး Program ကိုေရြးပါ..။ ေရးပါ..။

အေၿဖ ၆။ ။ Programming ေရးတာကေနပဲ စပါ..။ စာဖတ္ေနရံုနဲ႔ေတာ႔ ဘယ္မွေရာက္မွ မဟုတ္ဘူး..။ ပေရာဂ်က္ေသးေသးေလးကေနစပါ..။ Address book တို႔..၊ Calculator တို႔လို႔ ဘာၿဖစ္ၿဖစ္..။ စစခ်င္းပေရာဂ်က္ေတြကေတာ႔ အသံုး၀င္ခ်င္မွ ၀င္မယ္..။ ဒါေတြကိုပဲ အၾကိမ္ဒါဇင္ေပါင္းမ်ားစြာ ၿပန္ေရးရရင္ ေရးရလိမ္႔မယ္..။ ပထမဆံုးေရးတာကို ေတာ္ေတာ္နဲ႔ေက်နပ္နိုင္မွာမဟုတ္ဘူး..။ ဒါပံုမွန္ပါပဲ..။ မင္းေမးတာနဲ႔နည္းနည္း လြဲခ်င္လြဲမယ္..။ တကယ္လုပ္နိုင္တဲ႔ Programmer ဆိုတာ Language တစ္ခုမွာ Master ၿဖစ္ေအာင္ထူးခၽြန္ေနတာထက္ပိုတယ္ဆိုတာ မင္းစဥ္းစားထားသင္႔ေသးတယ္..။

အေၿဖ ၇။ ။ နည္းပညာပိုင္းဆိုင္ရာမွာ ေနာက္တစ္ဆင္႔လွမ္းမယ္စဥ္းစားထားရင္ေတာ႔ ကၽြမ္းက်င္ေအာင္လုပ္ရမွာပဲ..။ ေလ႔က်င္႔မွဳန႔ဲပဲ ကၽြမ္းက်င္မွဳကိုရနိုင္မယ္..။ ဘာေရးဖို႔စိတ္၀င္စားလဲဆိုတာ ဆံုးၿဖတ္ပါ..။ (Web Application? ၊ Desktop Application? ၊ Mobile Application?) ေယဘုယ်က်တဲ႔ Features တစ္ခ်ိဳ႕ကိုေရြးပါ..။ (Authorization တို႔ RSS Feeding တို႔)..။ Tasks(တာ၀န္) ေတြ သတ္မွတ္ပါ..။ ထည္႔သြင္းအသံုးခ်ပါ..။ နည္းပညာတိုင္းရဲ႕စာအုပ္ေတြဖတ္ပါ..။ အဲဒီထဲက ကုဒ္ေတြေရးပါ..။ တစ္ေယာက္ေယာက္ကို ကုဒ္ေတြ စစ္ေပးခိုင္းပါ..။ ဒီၿဖစ္စဥ္ပဲ ထပ္ခါထပ္ခါလုပ္ပါ..။

အေၿဖ ၈။ ။ လူတိုင္းလူတိုင္း တစ္မ်ိဴးစီလုပ္ေနၾကတာပဲ..။ နည္းပညာအမ်ိဴးမ်ိဴး စမ္းၾကည္႔ေလ..။ ၿပီးမွ ကိုယ္စိတ္၀င္စားတာရွာ..။ အဲဒီမွာမွ အင္းအရည္အခ်င္းေပၚမူတည္ေနမွာပဲ..။ တခါတေလ အခ်ိန္အၾကာၾကီး လုပ္ေနမိေပမယ္႔ အခ်ိန္ကုန္သြားမွန္းေတာင္ မသိတာမ်ိဴး ၿဖစ္လိမ္႔မယ္..။

အေၿဖ ၉။ ။ C# in Depth ဆိုတဲ႔စာအုပ္က C# သင္ဖို႔ ဖတ္သင္႔တဲ႔စာအုပ္ပဲ..။ C# ကို Confident ရွိသြားၿပီးရင္ F# တို႔ ဘာတို႔ သင္ဖို႔ၾကိဳးစားပါ..။

http://programmers.stackexchange.com/questions/98282/what-to-do-after-reading-a-beginners-book-on-c ကို ဆီေလ်ာ္ေအာင္ ၿပန္ဆိုသည္..။

OOP အေၿခခံမ်ား (သို႔) C# အေၿခခံမ်ား..(အဆက္..။)



Comments

Comments ဆိုတာက Program ေရးေနရင္းနဲ႔ Program ထဲမွာပဲ Program နဲ႔ပတ္သက္တဲ႔ ရွင္းၿပခ်က္တို႔၊ Programmer အခ်င္းခ်င္း ေရွ႔လူလုပ္တာကို ေနာက္လူသိေအာင္ ဘာ႔ေၾကာင္႔ဒီလိုေရးပါတယ္ဆိုတာ ခ်ိတ္ဆက္မိေအာင္...၊ ကိုယ္ေရးတာကိုပဲ ေနာက္တစ္ခါၿပန္အၾကည္႔မွာ ဘာေၾကာင္႔ဒီလိုေရးထားတယ္ဆိုတာသိေအာင္ ေရးတဲ႔ေနရာမွာ သံုးပါတယ္..။ Program ကိုထိေရာက္မွဳမရွိေစပါဘူး..။ ဘယ္နွစ္ေၾကာင္းေရးေရး Program ကိုထိေရာက္မွဳမရွိေစခ်င္ရင္..၊ ကိုယ္ေရးတဲ႔ကုဒ္က သိပ္မေသခ်ာရင္ comment ပိတ္ထားခဲ႔ရင္ အဲဒီကုဒ္က Program ကို သက္ေရာက္မွဳမရွိေစေတာ႔ပါဘူး..။

ကိုယ္ေရးတဲ႔စာက တစ္ေၾကာင္းတည္းဆိုရင္၊ ဒါမွမဟုတ္ တစ္ေၾကာင္းၿပီးတစ္ေၾကာင္း line by line ဆိုရင္ (//)မ်ဥ္းနွစ္ေၾကာင္းနဲ႔ တစ္ေၾကာင္းခ်င္းေရွ႕ကေန ပိတ္သြားရပါတယ္..။

ကိုယ္ေရးတဲ႔ Comment က တစ္ေၾကာင္းထက္ပိုတယ္..၊ စာတစ္ပုိဒ္ေလာက္ရွည္တယ္ဆိုရင္လည္း ဘယ္နွစ္ေၾကာင္းပဲၿဖစ္ေနေန အစမွာ (/*) နဲ႔ အဆံုးမွာ (*/)အဲလိုပိတ္ေပးရပါတယ္..။ ၾကားထဲမွာ စာဘယ္နွစ္ေၾကာင္းရွိရွိ အစမွာတစ္ခါနဲ႔ အဆံုးမွာ တစ္ခါပဲ စေပး၊ ပိတ္ေပးလိုက္ရံုပါပဲ..။



ေနာက္တစ္မ်ိဴးက documentation comment ဆိုတာ ရွိေသးတယ္..။ XML file ေတြကို comment ပိတ္တယ္ဆိုရင္ သူတို႔က file အမ်ိဴးအစားေတြမို႔ documentation comment နဲ႔ပိတ္ရတယ္..။ tag အစကေန line by line စာေၾကာင္းဆံုးသေလာက္ တစ္ေၾကာင္းခ်င္းေရွ႔မွာပိတ္သြားရမယ္..။



OOP အေၿခခံမ်ား (သို႔) C# အေၿခခံမ်ား..(အဆက္..။)




ဒီ operatorsေတြက သိစရာေတြ က်ယ္၀န္းပါတယ္..။ operators ေတြမွာ Left to right အလုပ္လုပ္သလား..၊ Right to Left အလုပ္လုပ္သလားဆိုတာ ထည္႔စဥ္းစားရပါတယ္..။ အဲဒီအတြက္ ဦးစားေပး Level အဆင္႔နဲ႔သတ္မွတ္ထားတဲ႔ ဇယားရွိတယ္..။ Level အနည္းအမ်ားေပၚမူတည္ၿပီး အလုပ္လုပ္တာ အရင္လုပ္၊ ေနာက္လုပ္ကြဲသြားပါတယ္..။







x+y-z


ဆိုတဲ႔ expression မွာ x နဲ႔ y အရင္ေပါင္းမလား..။ y ထဲက z နူတ္တာကို အရင္လုပ္မလား..ဆိုတာ စဥ္းစားစရာပါ..။ Level 5 မွာ + နဲ႔ - ေတြ႔နိုင္ပါတယ္...။ Level 2 က အေပါင္းနဲ႔အနူတ္က Unary ေတြအတြက္ပါ..။ integer ေတြအတြက္ မဟုတ္ပါဘူး..။ ဒါေၾကာင္႔မို႔ အေပါင္းအလုပ္ အရင္လုပ္ၿပီးမွ အနူတ္အလုပ္ လုပ္ရမွာပါ..။






ေနာက္တစ္ခု






ေပါင္းနူတ္ေၿမွာက္စား ဥပမာေတြ စေပးပါမယ္..။






3+4=7


3 နဲ႔ 4 ေပါင္းရင္ 7 ရတယ္..။ အေၿဖကိုၾကည္႔လိုက္ရင္ လြယ္လြယ္ေလးပဲလို႔ ၿဖစ္သြားမွာပဲ..။ အဓိကက သူတို႔ေရးတာကို နားလည္ေအာင္ၾကည္႔ရင္းက ဘယ္လိုေရးရမလဲဆိုတဲ႔ စဥ္းစားနည္းကို တတ္ေစခ်င္တာပါ..။ Programming မွာ လိုခ်င္တဲ႔ အေၿဖကိုပဲ သိတာ..။ ဘယ္လိုေရးရင္ ဒီအေၿဖရမလဲ၊ ဒီအေၿဖရဖို႔ ဘယ္လိုေရးမလဲဆိုတာ စဥ္းစားနည္းက အဓိကက်တာ..။


ဂဏန္းနွစ္ခုေပါင္းခ်င္တယ္..။ ဂဏန္းဆိုေတာ႔ Type သတ္မွတ္ရင္ int ေပါ႔..။ ဒႆမကိန္းဟုတ္မဟုတ္ ၾကည္႔ဖို႔လည္းလိုမယ္..။ uint မသတ္မွတ္ေတာ႔ပါဘူး..။ int နဲ႔ပဲ တြက္မယ္..။ 3 အတြက္ int variable တစ္ခု၊ 4 အတြက္ int variable တစ္ခု သူတို႔နွစ္ခု ေပါင္းလဒ္ထည္႔ဖို႕ int variable တစ္ခုလိုမယ္ဆိုတာ စဥ္းစားထားရမယ္..။






အလားတူ ေနာက္တစ္ခု





OOP အေၿခခံမ်ား (သို႔) C# အေၿခခံမ်ား..(အဆက္..။)



Arithmetic Operators

အတြက္အခ်က္အတြက္သံုးမယ္႔ Arithmetic Operators ေတြအေၾကာင္းေရာက္ၿပီ..။ +,-,*,/ေတြ အေၾကာင္းေၿပာေတာ႔မယ္..။ အေၿခခံဆိုေပမယ္႔ ေနရာတိုင္းမွာ အရာက်ယ္တယ္..။ Core Concept ေတြၿဖစ္ၿပီး က်န္တာေတြက သူတို႔ကေန ခ်ဲ႕ခ်ဲ႕သြားတာေတြၿဖစ္တယ္..။ ေပါင္းနဴတ္ေၿမွာက္စားေတြအၿပင္ (%)ကို အၾကြင္းအတြက္နဲ႔ binary operation ေတြအတြက္လည္း ေသခ်ာသတ္မွတ္ထားတဲ႔ operators ေတြ ရွိပါေသးတယ္..။



int x=5;
x now 7--> x+=2;


ဒီ operator ေတြနဲ႔ ပတ္သက္လို႔ကေတာ႔ (C,C++,Java,C#) language ေတြအားလံုး အတူတူပါပဲ..။



တန္ဖိုးတိုးသြားတာနဲ႔ ေလ်ာ႔သြားတာနဲ႔ ပတ္သက္လို႔မွာ (++)နဲ႔(--)လို႔ operation နွစ္ခုရွိတယ္..။ ဒီ operator ေတြကိုသံုးတာက ရွင္းရွင္းေလးပါ..။ ၁ ေပါင္း ၁ နဴတ္ လုပ္သြားတာပါပဲ..။



ဒီလကၡဏာနွစ္ခုက variable ရဲ႕ေရွ႔မွာ ေရွ႔မွာလည္းရွိတယ္..။ ေနာက္မွာလည္း ရွိတယ္..။ ေရွ႕ေနာက္ေနရာကြာတာနဲ႔အမွ် အက်ိဴးသက္ေရာက္မွဳလည္း ကြာသြားတယ္..။ ဒီလကၡဏာက variable ရဲ႕ေရွ႕မွာရွိရင္ variable ကိုမသံုးခင္ သူ႕အက်ိဴးသက္ေရာက္မွဳက အရင္ၿဖစ္သြားတယ္..။



(++)လကၡဏာကို variable ေနာက္မွာထားရင္ variable တန္ဖိုးကို assignအရင္လုပ္တယ္..။ assign လုပ္ၿပီးမွ ၁ တိုးတာ လုပ္တယ္..။



(?:)ဆိုၿပီးထူးၿခားတဲ႔ လကၡဏာေလးေရာရွိတယ္..။ အဓိပၸာယ္က if then else statement ဆိုတဲ႔ အဓိပၸာယ္ပါ..။ ? နဲ႔ : နဲ႔ operand သံုးမ်ိဴးၾကားမွာ ခြဲထားတာပါ..။ ပထမ operand က Boolean Expression ပါ..။ Boolean Expression ကလုပ္လုိက္တဲ႔ အလုပ္ကမွန္သြားရင္ ? ေနာက္္က variable ရဲ႕ result ထြက္မယ္..။ မမွန္ရင္ (:) ေနာက္က result ထြက္မယ္..။



ဆက္ရန္..................>

OOP အေၿခခံမ်ား (သို႔) C# အေၿခခံမ်ား..(အဆက္..။)



Console Input and Output

အခုေၿပာမယ္႔ဟာေတြက output ထုတ္တဲ႔ေနရာမွာသံုးဖို႔ C#အသံုးေလးပါ..။ ပုစၦာေတြတြက္ရင္ လိုမွာမို႔ ထည္႔ေရးလိုက္ပါတယ္..။

စာေၾကာင္းတစ္ေၾကာင္းလံုးကို ဖတ္မယ္ဆိုရင္



user ကစာေၾကာင္းအေနနဲ႔ပဲ ရိုက္ထည္႔လိုက္ေတာ႔..။ string အေနနဲ႔ပဲ ၀င္လာတယ္..။ တကယ္လို႔ ရိုက္ထည္႔လိုက္တဲ႔စာေၾကာင္းမွာ အသက္လို၊ လခလို ကိန္းဂဏန္းေတြပါလာခဲ႔ရင္ စာေၾကာင္းအေနနဲ႔၀င္လာတဲ႔ဂဏန္းေတြကို ဂဏန္းတန္ဖိုးၿဖစ္ေအာင္ ၿပန္ေၿပာင္းေပးရမယ္..။



Console ဆိုတဲ႔ class က output ထုတ္ေပးဖို႔ .Net Library ထဲမွာ ရွိၿပီးသားဟာပါ..။ Console class ထဲမွာ WriteLine method, Write method ေတြရွိတယ္..။ WriteLine ကစာတစ္ေၾကာင္းခ်င္း တစ္လိုင္းခ်င္းေရးသြားတဲ႔နည္း..။ Write ကေတာ႔ တစ္ေၾကာင္းခ်င္း တစ္လိုင္းခ်င္းမခ်ဘူး..။ ကိုယ္ေရးလိုက္သလို Format ေလးအတိုင္း output ကိုထုတ္ေပးတာပါ..။



Value မတူတာေတြကို Output တစ္ခါတည္းထုတ္ဖို႔ရာ WriteLine()method မွာရွိပါတယ္..။ output ထုတ္ခ်င္တဲ႔ format ကို ကိုယ္ထည္႔ခ်င္တဲ႔ တန္ဘိုးနဲ႔ ေနရာေတြသတ္မွတ္ေပးၿပီး ထည္႔ေပးလိုက္တာပါ..။



OOP အေၿခခံမ်ား (သို႔) C# အေၿခခံမ်ား..(အဆက္..။)



လိုအပ္လာတဲ႔ တခါတရံမွာ Type ေတြအခ်င္းခ်င္း အကူးအေၿပာင္း လုပ္ေပးရတာေတြ ရွိပါတယ္..။ int ကေန long ကိုေၿပာင္းတာ..။ double ကေန int ၿပန္ေၿပာင္းတာေတြ ရွိလာပါတယ္..။ ဒီလိုေၿပာင္းရာမွာ နည္းနွစ္နည္းရွိပါတယ္..။

Implicit Conversion
Explicit Conversion


Implicit Conversion ဆိုတာ ေသးတဲ႔ခြက္ထဲကေန ၾကီးထဲခြက္ထဲေၿပာင္းထည္႔တာမို႔ သူ႔ေဒတာေတြ ဆံုးရွံဳးစရာမရွိပါဘူး..။ Explicit Conversion မွာေတာ႔ ၾကီးတဲ႔ခြက္ထဲကေန ေသးတဲ႔ခြက္ထဲေၿပာင္းတာမို႔ ေဒတာတစ္ခ်ိဳ႕ ဆံုးရွံဳးတာ ၿဖစ္ေပၚမွာပါ..။ ၿမင္သာေအာင္ ဥပမာေတြ ၿပလိုက္ပါတယ္..။





OOP အေၿခခံမ်ား (သို႔) C# အေၿခခံမ်ား..(အဆက္..။)



Local Variables





ဆိုေတာ႔ Local Variables မွာ Literal နဲ႔ Expression ဆိုၿပီး Initial Value ေဖာ္ၿပနည္း နွစ္နည္းရွိတယ္..။



Main Method ထဲမွာ Variable ေၾကညာရင္ Initial Value သတ္မွတ္ေပးရတယ္..။ မသတ္မွတ္ေပးရင္ Error တက္ၿပီပဲ...။ Main Method ထဲမွာ ကိုယ္ကသံုးေတာ႔မွာမို႔ Variable ေၾကညာတာ..။ သံုးေတာ႔မယ္ဆို သူ႔တန္ဘိုးကဘာလဲဆိုတာ မသံုးခင္သိထားဖို႔ လိုတယ္..။ ဒါေၾကာင္႔မို႔ တန္ဘိုးသတ္မွတ္ေပးရတာ..။

OOP အေၿခခံမ်ား (သို႔) C# အေၿခခံမ်ား..။



OOP ကို C# Language နဲ႔ ၿပမွာဆိုေတာ႔ ကၽြဲကူးေရပါဆိုသလို C# Language နဲ႔လည္း ရင္းနွီးသြားမွာပါ..။ ကိုယ္က Java Language နဲ႔ရင္းနွီးတယ္ဆိုရင္ Javaနဲ႔ ေၿပာင္းစမ္းလိုက္ရံုပါပဲ..။



ဒါက Program တစ္ပုဒ္ရဲ႔ အေၿခခံအက်ဆံုး ပံုသ႑ာန္ပါပဲ..။ Programရဲ႕ မူလပင္စည္ရင္းၿမစ္ပဲ..။ က်န္တာေတြက သူကေန အတက္ေပါက္..၊ အကိုင္းအခက္ေတြ စည္ပင္လာမွာ..။ တစ္ခုခ်င္းရဲ႔ လကၡဏာေတြ စေလ႔လာရေအာင္..။







စာေတြက ပံုထဲမွာ တစ္ခါတည္း ရွင္းၿပထားပါတယ္...။ ပံုကတိုက္ရိုက္တင္တာဆိုေတာ႔ ေသးေနတယ္..။ Image Shack ကေန ၿပန္တင္ေပးပါမယ္..။

Simple Types

Programေတြမွာ Variableေၾကညာရေလ႔ရွိတယ္..။ ကိုယ္ေၾကညာခ်င္တဲ႔ Variable ကဂဏန္းကိုလက္ခံခ်င္တဲ႔ Variable ဆိုပါစို႔..။

int i (or) int i=1;



အဲလိုေၾကညာတဲ႔အခါမွာ Variable ေတြမွာ ပံုစံသတ္မွတ္ထားတာေတြ ရွိတယ္..။ ဂဏန္းလက္ခံမယ္႔ Variable အတြက္ integer, စာေၾကာင္းလက္ခံမယ္႔ Variable အတြက္ String (သို႔) Character အစရွိသၿဖင္႔..။ သေဘာက ဘာနဲ႔တူလဲဆိုေတာ႔ Type ဆိုတာေတြက ခြက္ကေလးေတြနဲ႔တူတယ္..။ ထည္႔ခ်င္တဲ႔အရာေတြေပၚမူတည္ၿပီး ခြက္ေတြကပံုစံတစ္မ်ိဴးစီ ရွိၾကတယ္..။



ခြက္ကေလးေတြနဲ႔ နမူနာၿပတာပါ..။ Type ဆိုတာ အဲလိုခြက္ေတြနဲ႔ တူတယ္..။ ထည္႔မယ္႔အရာေပၚမူတည္ၿပီး type ကိုသတ္မွတ္ေပးရတယ္..။ Program မွာရွိတဲ႔ Type ေတြကို ေအာက္မွာ ဇယားနဲ႔ၿပထားတယ္..။ ဘယ္နွစ္မ်ိဴးရွိလဲဆိုတာ အၾကမ္းဖ်ဥ္းသိထားဖို႔ လိုမယ္..။



boolean မွာ True, False လို႔ တန္ဘိုးနွစ္ခုပဲ ရွိတယ္..။ စာေၾကာင္းေတြထည္႔မယ္ဆိုရင္ ("")မ်က္ေတာင္ အဖြင္႔အပိတ္ထဲမွာ ထည္႔ေရးတယ္..။ ဂဏန္းေတြမွာက်ေတာ႔ Signed နဲ႔ Unsigned ဆိုၿပီး ထပ္ခြဲထားေသးတယ္..။Signed ဆိုတာက အေပါင္းတန္ဘိုးေရာ..၊ အနူတ္တန္ဘိုးေရာလက္ခံနိုင္လို႔ သူကပိုၾကီးတယ္..။ Unsigned ဆိုတာက သုညတန္ဘိုးကေန အေပါင္းတန္ဘိုးေတြပဲလက္ခံတယ္...။ အနူတ္တန္ဘိုး လက္မခံဘူး..။ ေနရာယူသက္သာတယ္လို႔ေတာ႔ ေၿပာလို႔ရတယ္..။



ေရးရင္ေတာ႔ int(Signed Integer), uint (Unsigned Integer)လို႔ u တစ္လံုးပဲ ပိုတာပါ..။ သူက Memory ေနရာယူတာ သက္သာေစခ်င္လို႔ အေပါင္းတန္ဘိုးေသခ်ာတဲ႔ Type ေတြမွာ uint လို႔ သတ္မွတ္ေပးလိုက္ရင္ ရပါတယ္..။ (u ထည္႔သင္႔ မထည္႔သင္႔ ေခါင္းရွဴပ္ခံစဥ္းစားမေနပါနဲ႔..။ u မထည္႔လည္း ဘာမွမၿဖစ္ပါဘူး..။ Program ၾကီးလြန္းလို႔ ေနရာမဆန္႔ရင္ေတာင္ Program ထဲမွာပဲ မလိုတာေတြ ရွင္းပစ္တဲ႔ နည္းေတြရွိပါတယ္..။ ရွိတယ္ဆိုတာ သိထားဖို႔ေတာ႔ လိုပါတယ္..။)

OOP (နိဒါန္း...။)



အခုေရးမယ္႔ OOP က C# Language သံုးၿပီးေရးမွာပါ..။ C# ပဲၿဖစ္ၿဖစ္၊ Java ပဲၿဖစ္ၿဖစ္ အေၿခခံ OOP ကေတာ႔ အတူတူပါပဲ..။ Java ၿဖစ္ၿဖစ္၊ OOP ၿဖစ္ၿဖစ္ ဘာကိုပဲ စသင္သင္ ပထမဆံုးအခန္းက Program တစ္ပုဒ္ Run ရင္ ေနာက္ကြယ္က ၿဖစ္ပ်က္သြားမယ္႔ အေၾကာင္းအရာေတြကို စသင္ေလ႔ရွိပါတယ္..။ ကို႔စ္ဆြဲထားတဲ႔သူေတြကိုက ဒါကိုနားလည္ဖို႔လိုအပ္တယ္လို႔ ယူဆလို႔ ဒီအေၾကာင္းအရာေတြကို စေၿပာေလ႔ရွိပါတယ္..။ ဒီအေၾကာင္းအရာေတြက Beginners ေတြအတြက္ အလြန္နားရွဴပ္ေစပါတယ္..။ စာေရးသူလည္း ဒီအခန္းကို ေတာ္ေတာ္နားလည္ေအာင္ဖတ္လည္း ဖတ္တံုးပဲ သေဘာေပါက္လိုက္ၿပီး ၿပီးရင္ေမ႔သြားလို႔ ၿပန္ဖတ္ရပါတယ္...။ အဓိကေၿပာခ်င္တာေတြကေတာ႔ User က Program တစ္ပုဒ္ေရးလိုက္ရင္ Compiler က Execute လုပ္ပါတယ္..။ မွားရင္ Compiler ကေန Error ထြက္တယ္..။ မွန္ရင္ Result ထြက္လာပါမယ္..။ ဒီေလာက္ပဲအၾကမ္းဖ်ဥ္းနားလည္ၿပီဆို ရပါၿပီ..။ စာေရးသူအေနနဲ႔ဆို ဒီအခန္းကို ေနာက္ဆံုးမွ ၿပန္ေၿပာခ်င္ပါတယ္..။ ေနာက္ဆံုးခန္းေရာက္ၿပီဆိုရင္ User ေတြအေနနဲ႔လည္း C# ကဘာလဲ..၊ Program ဆိုတာဘာလဲ သေဘာေပါက္ခ်ိန္မွ ဒီအခန္းကိုၿပန္ရွင္းၿပရင္ နားလည္နိုင္တယ္ စိတ္အေၿခခံ ရွိေနၿပီလို႔ စာေရးသူယူဆပါတယ္..။



ဒီပံုကေတာ႔ Program တစ္ပုဒ္ရဲ႕ အၾကမ္းဖ်ဥ္းသေဘာတရားပါ..။ ေတာ္ေတာ္ေတာ႔ အၾကမ္းဖ်ဥ္းဆန္ပါတယ္..။ ဒါေပမယ္႔ Beginners ေတြအတြက္ ရည္ရြယ္လို႔ အေသးစိပ္နားလည္ေအာင္ ေရးလိုက္တာပါ..။ ဒီစာကိုေရးတဲ႔ရည္ရြယ္ခ်က္က OOP သင္ကာစ Beginners ေတြကို ရည္ရြယ္ၿပီးေရးတာမို႔ပါ..။

အစပိုင္းသင္ကာစေန႔ေတြမွာ ကိုယ္ကေတာ႔ ရိုက္ထည္႔လိုက္တာ မွန္တယ္..။ ဒါေပမယ္႔ Error ေတြ တစ္သီၾကီးထြက္ခ်င္ထြက္ေနတတ္ပါတယ္..။ Typing အမွား..၊ စာလံုးအၾကီးအေသးအမွား..၊ (;) အပိတ္ေတြက်န္လို႔ မ်ားပါတယ္..။ ဒါေတြကို ၿဖည္းၿဖည္းခ်င္းစိတ္ရွည္ရွည္နဲ႔ ေက်ာ္လႊားသြားရင္း ကၽြမ္းက်င္သူအၿဖစ္ ေရာက္တာပါပဲ..။ လူတိုင္းေက်ာ္လႊားရမယ္႔ အဆင္႔ပဲၿဖစ္လို႔ Error ၿပရင္ ဘာေၾကာင္႔လဲဆိုတာ အေၾကာင္းရင္းသိေအာင္လုပ္ရင္း ေပ်ာ္ေပ်ာ္ၾကီး ေက်ာ္ၿဖတ္ၾကပါစို႔..။

Program နဲ႔ Result နဲ႔ၾကားထဲမွာ Compiler ဆိုတာေလး ေနာက္ကြယ္က အလုပ္လုပ္ေနပါတယ္..။ ကိုယ္ေရးလိုက္တဲ႔ Program ကို Compiler က Machine Language ကိုေၿပာင္းလိုက္တယ္..။ Machine Language က နားလည္တယ္..၊ Error မပါဘူးဆိုရင္ Compiler ဆီကိုပဲ ၿပန္ပို႔ပါတယ္..။ Compiler ကေနပဲ လိုခ်င္တဲ႔ Result ၿပန္ထုတ္ေပးပါတယ္..။ ရွင္းေအာင္ ပံုေလးနဲ႔ၿပမယ္ေနာ္..။ ဒါက Beginners ေတြနားလည္ေအာင္ စာေရးသူဘာသာရွင္းေအာင္ဆြဲထားတဲ႔ ပံုေတြပါ..။ စာေရးသူက ဒီစာကို ဘာသာၿပန္ေရးမွာမဟုတ္ပါဘူး..။ ကိုယ္နားလည္သလို ၿပန္ရွင္းၿပတဲ႔ပံုနဲ႔ ေရးမွာပါ..။ C# Courses ေတြကို နားလည္ေအာင္ပဲဖတ္ပါတယ္..။ ကိုယ္နားလည္သလိုပဲ ၿပန္ရွင္းၿပၿပီး ဘာသာၿပန္ရံု ေရးသြားမွာ မဟုတ္ပါဘူး..။ စာေရးသူလည္း ဘာသာၿပန္ရံုေလးေရးထားတာဆို ဖတ္ရတာ စိတ္၀င္စားမွဳ နည္းတတ္လို႔ပါ...။



ဒါက Compiler ဆီကေန Machine ဆီ သြားတဲ႔ အသြားပါ..။ Result မေပၚေသးပါဘူး..။ Execute လုပ္ဆဲကာလပါ..။



ဒါကေတာ႔ Machine Language က Compiler ဆီၿပန္ထုတ္ေပးတဲ႔ အပိုင္းပါ..။ မွန္ရင္ Result ထုတ္ေပးပါမယ္..။ စာတစ္တန္ေပတစ္တန္ေရးေနရေပမယ္႔ ဒီအၿဖစ္အပ်က္ကေလးက စကၠန္႔ပိုင္းေလာက္ပဲ ၾကာတဲ႔အၿဖစ္အပ်က္ေလးပါ..။ Developer ေတြကေတာ႔ ဒါကိုသိထားရပါမယ္..။

Program တစ္ပုဒ္ ဘယ္လုိ Run မလဲ..။

ေနာက္အခန္းကေနစၿပီး Program ေတြစမ္းရပါမယ္..။ ဒီလိုစမ္းဖို႔အတြက္ ၿမန္မာနိုင္ငံကလူေတြအတြက္ဆို Visual Studio 2010 တစ္ေခြကို၀ယ္ၿပီး Install လုပ္ေစခ်င္ပါတယ္..။ ေခြ၀ယ္ဖို႔ခဲယဥ္းတဲ႔ ၿပည္ပကလူေတြအတြက္ Microsoft Website က Visual Studio 2010 Express Version ကို အလကားေပးထားပါတယ္..။ သူ႔ကိုေဒါင္းၿပီး Install လုပ္ေစခ်င္ပါတယ္...။ < href="http://www.microsoft.com/visualstudio/eng/downloads">အဲဒီလင္႔မွာ Install Now ကိုကလစ္ရံုပါပဲ..။ Install လုပ္ခ်ိန္ကေတာ႔ နာရီ၀က္ကေန ၄၅ မိနစ္ေလာက္ ၾကာတတ္ပါတယ္...။ Memory လည္းေတာ္ေတာ္မ်ားမ်ား ေနရာယူမွာမို႔ စက္မွာေနရာမရွိရင္ ေနရာအရင္ရွင္းေစခ်င္ပါတယ္..။ 200Mb ေက်ာ္ေက်ာ္ေလာက္ ရွိပါတယ္..။ Install လုပ္တဲ႔ အဆင္႔ေတြကိုလည္း ထည္႔မေရးေတာ႔ပါဘူး..။ < href="http://geekswithblogs.net/Ramaraju/archive/2009/05/24/step-by-step--installing-visual-studio-2010.aspx">အဲဒီလင္႔မွာ Install လုပ္နည္းတစ္ဆင္႔ခ်င္းကို ရွင္းၿပထားပါတယ္..။ ေသခ်ာေအာင္လို႔ အဲဒီရွင္းၿပခ်က္တစ္ဆင္႔ခ်င္းကိုၾကည္႔ၿပီးလုပ္ရင္ အမွားနည္းလို႔ အခ်ိန္ကုန္သက္သာပါလိမ္႔မယ္..။

Program ေတြ မ Run ခင္ Folder အရင္ေဆာက္သင္႔ပါတယ္..။ စာေရးသူကေတာ႔ D:> ေအာက္မွာ folder တစ္ခုေဆာက္ထားပါတယ္..။ ဒါမို႔လို႔ စာဖတ္သူကိုေရာ D:>ေအာက္မွာ ေဆာက္ေစခ်င္ပါတယ္..။ ဒါမွ စာေရးသူရွင္းၿပရင္ နားလည္မွဳမမွားေစခ်င္လို႔ပါ..။ Folder တစ္ခုေဆာက္ၿပီး အဲဒီ Folder ထဲမွာ File ကိုသိမ္းၿပီး command prompt ထဲကေန လွမ္းRun ရမွာပါ..။ Start-->Program-->Visual Studio 2010-->Visual Studio 2010 (tool)--> Command prompt (2010) ကိုေရြးပါ..။ Command prompt ထဲေရာက္သြားရင္ သူက C:> ေအာက္ကို ပံုေသေပးထားတတ္တာမ်ားပါတယ္..။ cd.. နဲ႔ေနာက္ၿပန္ဆုတ္ရပါမယ္..။ cd d နဲ႔ Directory ေၿပာင္းယူရပါမယ္..။ cd class(ကိုယ္ေပးထားတဲ႔ ဖိုဒါနာမည္) လို႔ေရးၿပီး ကိုယ္သိမ္းတဲ႔ ဖိုဒါေအာက္ကို ပို႔ရပါမယ္...။

တကယ္ Run ေတာ႔မယ္ဆို ၿပန္ေၿပာပါမယ္..။ ၿမင္သာတဲ႔ ဥပမာအေနနဲ႔ကေတာ႔

C:/cd..(ေနာက္ၿပန္ဆုတ္တာ)

C:/ cd d (C ေအာက္ကေန D ေအာက္ကို ခ်ိန္းတာ..။)
D:/ cd class (ကိုယ္သိမ္းတဲ႔ ဖိုဒါေအာက္ ၀င္တာ..။)
D:/ Class(ဖိုဒါေအာက္ေရာက္သြားၿပီ..။)
D:/Class/csc First.cs(Compile လုပ္တာ..။)
D:/Class/First (Run တာ..။)


ေနာက္အခန္းမွ Theory ၿပီးရင္ လက္ေတြ႔ Program Run ပါေတာ႔မယ္..။

အေၿခခံ အပိုင္း(၁) ဆက္ရန္..။

ခ်စ္စရာ႔ OOP....။ (စကားခ်ီး)



ခ်စ္စရာ႔ OOP ဆိုၿပီး OOPအေၾကာင္း ေရးသားသြားဖို႔ စိတ္ကူးရလာတာ ၾကာပါၿပီ..။ စစိတ္ကူးရတံုးက ကိုယ္တိုင္ကလည္း OOP ကိုေလ႔လာဆဲအခ်ိန္၊ မပိုင္နိုင္ေသးတဲ႔ အခ်ိန္ပဲရွိေသးလို႔ OOP ရဲ႕သေဘာတရားကို ကိုယ္တိုင္နားမလည္ေသးတဲ႔ အပိုင္းေတြကို ပိုနားလည္လာေအာင္ ၾကိဳးစားေနခဲ႔ပါတယ္..။ နားမလည္တဲ႔အပိုင္းေတြကို ပိုနားလည္ေအာင္လုပ္ၿပီးတဲ႔အခါမွာေတာ႔ ဒီစာကို စေရးေတာ႔တာပါပဲ..။

ခ်စ္စရာ႔ OOP လို႔ ေခါင္းစဥ္ကိုဘာလို႔ေပးတာလဲဆိုေတာ႔ အၿမင္ကတ္လို႔ ဒီေခါင္းစဥ္ကိုေပးတာပါ..။ ေတာ္ေတာ္နဲ႔သေဘာမေပါက္နိုင္ခဲ႔ပဲ သူမ်ားေတြကိုယ္႕ကိုသင္ေပးနိုင္မလားဆိုတာ နို႔သက္ခံစို႔ဖို႔ေစာင္႔ေနခဲ႔ရင္း အခ်ိန္ေတြေတာ္ေတာ္ကုန္ခဲ႔ပါတယ္..။ ဘယ္လိုရွင္းၿပၿပ မရမွန္းသိေတာ႔မွ ကိုယ္တိုင္လုပ္ရင္း တၿဖည္းၿဖည္းခ်င္းနားလည္လာေတာ႔မွ ေအာ္ OOP ဆိုတာ ဒါပါလားဆိုၿပီးေတာ႔မွ ဒီစာကိုေရးဖို႔ စိတ္ကူးေတာ႔တာပါ..။

ေလ႔လာလိုက္ေတာ႔ အေၿခခံတစ္ေခါက္ၿပီးသြားေတာ႔ နားလည္တာ တစ္အုပ္စု၊ နားမလည္တာတစ္အုပ္စု ထြက္လာပါတယ္..။ ေနာက္တစ္ေခါက္ထပ္ေလ႔လာလိုက္ေတာ႔ နားမလည္တဲ႔အုပ္စုက တစ္၀က္ေလာက္ ထပ္နားလည္သြားပါတယ္..။ အကုန္နားလည္တာေတာ႔ မဟုတ္ေသးပါဘူး..။ အခုဒီစာကိုေရးခ်ိန္ထိ မရေသးတဲ႔ အပိုင္းတစ္ခ်ိဳ႔က်န္ေနပါေသးတယ္..။အေတြ႔အၾကံဳလိုေနေသးလို႔ နားမလည္ေသးတာလို႔ ထင္ပါတယ္..။ ေနာက္ေတာ႔တၿဖည္းၿဖည္း နားလည္သြားမယ္လို႔ ယူဆပါတယ္..။

စာေရးသူ၏ OOPခရီး

စာေရးသူက OOP ကိုဆရာနဲ႔ ၃ ခါတိုင္တိုင္ သင္ခဲ႔ဖူးပါတယ္..။ ပထမတစ္ခါကေတာ႔ ေက်ာင္းမွာ တတိယနွစ္မွာ စသင္ရတာပါ..။ သင္တဲ႔ဆရာကိုယ္တိုင္က ကၽြန္ေတာ္တို႔ကိုသင္မယ္ဆိုမွ စာဖတ္ၿပီးသင္တာမို႔ သူကိုယ္တိုင္က ရွင္းၿပရင္း လည္ထြက္ေနပါတယ္..။ သူကိုယ္တိုင္လည္း OOP က ဘာဆိုတာ ေလ႔လာဆဲမို႔ ပိုင္ပိုင္နိုင္နိုင္ မသင္နိုင္တာပါ..။ စာေရးသူကလည္း ဆရာသင္မွဆိုၿပီး ဆရာဆီက ဇြန္းနဲ႔ခြံ႕ေကၽြးတာကို အလိုက္သင္႔ေစာင္႔ေနတတ္တဲ႔ အက်င္႔ဆိုးရွိေတာ႔ ဆရာကိုယ္တိုင္က နားမလည္ေသးဘူးလို႔ ၀န္ခံသံၾကားလိုက္ေတာ႔ စိတ္ပ်က္လက္ပ်က္နဲ႔ပဲ အေတာ္ေအာင္ေအာင္ အားထုတ္ၿပီး အတန္းေအာင္ေအာင္ လုပ္ခဲ႔ရပါတယ္...။ ဒီပညာနဲ႔ ကိုယ္ကအသက္ေမြးမယ္လို႔လည္း အၿမင္မရွိတာလည္း ပါပါတယ္...။ စာေမးပြဲေအာင္ရင္ၿပီးေရာလို႔ပဲ အားထုတ္ခဲ႔ပါတယ္...။

ေနာက္တစ္ခါ ေက်ာင္းကဘြဲ႔ေတြၿပီးေတာ႔လည္း OOP သင္တာေကာင္းတယ္ဆိုတဲ႔ ဆရာမဆီမွာ ေသခ်ာထပ္သင္ပါေသးတယ္..။ အဲဒီေတာ႔ ကိုယ္က ဒီဘာသာရပ္နဲ႔ အသက္ေမြး၀မ္းေၾကာင္းေတာ႔မွာလို႔ ေရးေရးသေဘာေပါက္ေနပါၿပီ..။ ဒါေပမယ္႔ သူမ်ားသင္ရင္ တတ္မယ္လို႔ပဲ ယူဆေနတံုးပါ..။ ကိုယ္ဘာသာ ဘာသာရပ္တစ္ခုကိုေလ႔လာဖို႔ဆိုတာ စာေရးသူရဲ႕ ငယ္ရြယ္စဥ္ဘ၀ေတြမွာ အိပ္မက္ေတာင္ မမက္ဘူးခဲ႔တာပါ..။ဆရာမကလည္း စာရွင္းၿပရံုေလာက္သင္သြားၿပီး ေလ႔က်င္႔ခန္းလည္းမရွိ၊ ဘာလည္းမရွိ..။စာသင္ခ်ိန္တိတိက်က်မရွိဘဲ ဆရာမကိုလိုက္ဖမ္းေနရတာဆိုေတာ႔ သင္တန္းခပဲ ပက္ပက္စက္စက္ေပးခဲ႔ရၿပီး ၂ ခ်ိန္ ၃ ခ်ိန္ သင္ရံု၊ အိေယာင္၀ါးနဲ႔ပဲ ၿပီးသြားၿပီး သေဘာမေပါက္ၿပန္ပါဘူး..။ :(

တတိယတစ္ၾကိမ္ကေတာ႔ ေသခ်ာေကာင္းေကာင္းသင္ရပါရဲ႔..။ သင္ေပးတဲ႔သူက သူ႔အတြက္ ဒီသင္ရိုးက ရိုးသြားၿပီ..။ အသင္ခံရတဲ႔သူေတြက ေၿပာင္းေၿပာင္းသြားတယ္..။ သူသင္ၿပီးသား သေဘာေပါက္ၿပီးသားလူေတြမဟုတ္ဘူးဆိုတာ သတိထားမိဟန္မတူဘူး..။ ဗလပ္ ဗလပ္နဲ႔ ၾကက္တူေရြးစာအံသလို ရြတ္ရြတ္သြားၿပီး ဘာေလးေမးေမး ေကာင္းေကာင္းမေၿဖခ်င္တဲ႔ ဆရာမပီသတဲ႔ သင္တန္းနည္းၿပတစ္ေယာက္ၿဖစ္ပါတယ္..။ အခုမွအဲဒီသင္ရိုးကို ၿပန္ဖတ္ၾကည္႔မိေတာ႔ သင္ရိုးကေတာ႔ ေတာ္ေတာ္ေကာင္းမြန္တာ ေတြ႔ရပါတယ္..။ သင္တဲ႔နည္းၿပက နိုင္ငံတကာကအေတြ႔အၾကံဳရွိတဲ႔ နည္းၿပေတြလို မဟုတ္ဘဲ ၿမန္မာ႔နည္းၿမန္မာ႔ဟန္နဲ႔ပဲသင္တဲ႔ ဘလန္းဘလန္း နည္းၿပၿဖစ္ေနတာက ဆိုးတာပါ..။ အဲဒီဆရာမသင္ၾကားမွဳအေပၚ သံုးသပ္ခ်က္ကို Vote ေပးတဲ႔အခါ ဆရာမအလုပ္ၿပဳတ္သြားနိုင္လို႔ မွတ္ခ်က္ဆိုးဆိုးရြားရြားေတာ႔ မေရးခဲ႔ေပမယ္႔ သင္ရတဲ႔ အခ်ိန္နဲ႔ အားစိုက္မွဳအတြက္ေတာ႔ နွေၿမာမိတာ အမွန္ပါပဲ..။ အဲဒီသင္တန္းကေန ဘာမွမရခဲ႔ဘူး..၊ ဘာမွနားလည္ခဲ႔တာ မရွိဘူးလို႔ ေၿပာနိုင္ပါတယ္..။

အဲဒီတံုးက ကိုယ္ကမသိခဲ႔တာက အတတ္ပညာတစ္ခုကို သူမ်ားသင္ေပးေနရံုနဲ႔ တတ္မယ္လို႔ယူဆခဲ႔တာကိုပါ..။ အခုမွသေဘာေပါက္လာတာက အတတ္ပညာတစ္ခုက အစပိုင္းေတာ႔နားလည္သူတစ္ေယာက္ရဲ႔ အကူအညီကိုယူေကာင္းယူရမယ္..။ ၿပီးရင္ေတာ႔ က်န္တာတၿဖည္းၿဖည္းနဲ႔ ကိုယ္တိုင္ဆက္လုပ္သြားရမယ္..။ ဒါမွတကယ္နားလည္တတ္ေၿမာက္တယ္ဆိုတာ ေတြ႔လာရေတာ႔ Self Study လုပ္ရတာကို စာေရးသူေတာ္ေတာ္နွစ္ၿခိဳက္လာပါတယ္..။ ကိုယ္တိုင္ေလ႔လာ၊ ကိုယ္တိုင္သိလိုက္ရတာမွ တကယ္သိတယ္ဆိုတာ ၿဖစ္လာပါလားဆိုတာ သေဘာေပါက္လာေလ ပိုေလ႔လာခ်င္စိတ္ ၿဖစ္မိေလ ၿဖစ္လာပါတယ္..။

ဒါေပမယ္႔စာေရးသူက ကိုယ္႔ကိုယ္ကိုသေဘာေပါက္မိတာကေတာ႔ တစ္ခုခုကိုယ္နားလည္ထားတယ္ဆိုရင္ သူတစ္ပါးကိုလည္း နားလည္ေအာင္ၿပန္ေၿပာတတ္ပါတယ္..။ တစ္ခ်ိဳ႕လူေတြက ကိုယ္နားလည္တာကို သူတစ္ပါးနားလည္ေအာင္ေၿပာဆိုရင္ မေၿပာတတ္ၾကတာ မ်ားပါတယ္..။ စာေရးသူရဲ႕ပင္ကိုယ္သဘာ၀မွာ ကိုယ္နားလည္ထားတာကို သူတစ္ပါးကလိုခ်င္တယ္..၊ လက္ခံတယ္ဆိုရင္ နားလည္ေအာင္ ေၿပာၿပတတ္တယ္လို႔ ကိုယ္႔ကိုယ္ကို ၿမင္ပါတယ္..။ ဒါေပမယ္႔ ကိုယ္နားလည္ေအာင္လုပ္ရတဲ႔အဆင္႔ေတြက စာေရးသူအတြက္ ပိုခဲယဥ္း၊ ပိုအခ်ိန္ယူရပါတယ္...။ လက္ေပါက္ကတ္တတ္တဲ႔ စာေရးသူ သဘာ၀ေၾကာင္႔ ေတာ္ေတာ္တန္႔တန္႔နားလည္ရံုနဲ႔ နားလည္ၿပီလို႔ မသတ္မွတ္လို႔ နားလည္ၿပီဆိုတဲ႔အဆင္႔ေရာက္ေအာင္ တခါတရံ ေတာ္ေတာ္အခ်ိန္ေပးရတတ္ပါတယ္..။

ေနာက္အခန္းကေတာ႔ OOP နိဒါန္းလာပါမယ္..။ စကားခ်ီးကို ဒီမွာပဲ အဆံုးသတ္လိုက္ပါတယ္..။

မစံပယ္