Objective C series ထဲမှာ အခြား အပိုင်းများ
Objective C ဆိုတာ ဘာလဲ။
Objective C ဆိုတာကတော့ Objective Oriented Language တစ်ခုဖြစ်ပြီး C Language ပေါ်မှာ အခြေခံထားခြင်းဖြစ်ပါတယ်။ သူဟာလက်ရှိ Mac OS X နဲ့ iOS အတွက် အဓိက programming language တစ်ခုပါပဲ။ အရင်တုန်းကတော့ NeXTSTEP OS ရဲ့ အဓိက language တစ်ခုပါ။ အဲဒီ OS ကို apple က ဝယ်ပြီး OS X ကို ထုတ်လုပ်ခဲ့ပါတယ်။
Objective C ဟာ C ကို အခြေခံထားပြီး C ကိုလည်း run နိုင်ပါတယ်။ Objective C ဟာ C ပါ run နိုင်တာကြောင့် C လုပ်နိုင်သမျှ အကုန်လုံးကို Objective C က လုပ်နိုင်ပါတယ်။
ဘာတွေ လိုအပ်သလဲ။
အခု ကျွန်တော်တို့ iPhone Development မလုပ်သေးခင် Objective C အကြောင်းကို သိထားဖို့လိုပါတယ်။ Objective C ကို စမ်းဖို့အတွက် XCode ကို သွင်းတဲ့အခါမှာ Mac OSX SDK ကိုပါသွင်းခဲ့ဖို့ လိုပါလိမ့်မယ်။ iPhone SDK ကို သွင်းတဲ့အခါမှာ XCode , Interface Builder အပြင် အခြား Application တွေပါပါဝင်ပါတယ်။ ထို့အတူ gcc ကိုလည်း အလိုအလျောက်သွင်းသွားပါလိမ့်မယ်။
Objective C ကို လေ့လာတဲ့ အခါမှာ C ကို အခြေခံသိထားတဲ့ သူတွေဆိုရင် ပိုကောင်းပါလိမ့်မယ်။ C programming language က programmer တော်တော်များများရဲ့ ပထမဆုံး အခြေခံ language ဆိုလည်း မများပါဘူး။ တကယ်လို့ C ကို မလေ့လခဲ့လည်း ကိစ္စတော့ သိပ်မရှိပါဘူး။ Programming ကို တတ်ကျွမ်းထားရင် လေ့လာနိုင်ပါလိမ့်မယ်။
iPhone Development လုပ်ဖို့အတွက် Mac OSX လိုအပ်ပါတယ်။ Intel CPU Mac တွေ လိုအပ်ပါတယ်။ ဒါကြောင့် Mac user မဟုတ်တဲ့သူတွေအတွက် Objetive C ကို လေ့လာလို့ ရမှာမဟုတ်ပါဘူး။ နောက်ပြီးတော့ Objective C ကို အဓိက ထားမှာ ဖြစ်တဲ့အတွက်ကြောင့် iPhone Development ကို ချက်ခြင်း ကူးမှာ မဟုတ်ပါဘူး။ Objective C အခြေခံမရှိပဲ iPhone Development ပိုင်းကို ကူးတဲ့အခါမှာ ပြဿနာတွေ ကြံုတတ်ပါတယ်။
Compile လုပ်ခြင်း
GCC က ကျွန်တော်တို့ စက်တွေထဲမှာ ရှိနေပြီးသား ဖြစ်တဲ့အတွက် သီးသန့် သွင်းနေစရာ မလိုတော့ပါဘူး။ တစ်ခါတည်း code တွေကို compile လုပ်လို့ရပါတယ်။ အခု အပိုင်းမှာတော့ C ကိုပဲ Mac မှာ ဘယ်လို compile လုပ်သလဲဆိုတာလေးကို အခြေခံအနေနဲ့ ရေးသားမှာပါ။ Application -> Terminal ကို ဖွင့်ပြီး Terminal ကနေ ကျွန်တော်တို့ gcc ကို compile လုပ်ရပါတယ်။
[lang name=shell]$gcc inputfile.m -o outputfile[/c]
အဲလို မျိုး compile လုပ်ပြီးသား program ကို run ဖို့အတွက်ကတော့
[lang name=shell]$./outputfile[/c]
ဆိုပြီး run လိုက်လို့ရပါတယ်။
The Basics
ကဲ … ကျွန်တော်တို့တွေ ဥပမာလေး တစ်ခုလောက် စမ်းရအောင်။ Desktop ပေါ်မှာ Test ဆိုတဲ့ Folder လေး ဆောက်လိုက်ပါ။ Texteditor မှာ C code ကို အောက်ပါ အတိုင်း ရိုက်နိုင်ပါတယ်။
#include <stdio.h>
int main(){
printf("Hello World\n");
return 0;
}
ပြီးတဲ့ အခါမှာ Test ဆိုတဲ့ Folder ထဲမှာ program1.m နာမည်နဲ့ သိမ်းလိုက်ပါ။ Terminal ကို ဖွင့်ပြီး
$cd ~/Desktop/Test
$gcc program1.m -o program1
$./program1
အဲဒါဆို compile လုပ်ပြီးသား program ကို run လိုက်တဲ့အခါမှာတော့ Hello World ဆိုတဲ့ စာလေးထွက်လာပါလိမ့်မယ်။ code လေးကတော့ ရှင်းရှင်းလေးပါပဲ။ computer တက္ကသိုလ် first year ပြီးထားတဲ့သူတိုင်း သိတဲ့ code လေးပါ။ printf နဲ့ ထုတ်ပြီး \n ကတော့ တစ်ကြောင်းဆင်းထားလိုက်တာပါ။
Variable
Variable ကတော့ data တွေကို memory ပေါ်မှာ သိမ်းဖို့အတွက်ပါ။ Variable တွေမှာ variable type တွေ ရှိပါတယ်။ ဒါတွေကတော့ programming အခြေခံတတ်ထားပြီးသားသူတွေအတွက် သိပြီးသားလို့ ထင်ပါတယ်။ variable type တွေကတော့
- int – integer နံပတ်တွေကို သိမ်းဖို့အတွက်ပါ။
- char – character တွေကို သိမ်းဖို့အတွက်ပေါ့။
- float – ဒဿမ ကိန်းတွေအတွက်ပါ။
- double – ဒဿမ ကိန်းတွေအတွက်ပါပဲ။ ဒါပေမယ့် သူက float ထက် ပိုပြီး အရေအတွက်များပါတယ်။
variable ကို ဘာလို့ အသုံးပြုရသလဲဆိုတော့
1+10 = 11
ဖြစ်ပါမယ်။ အမြဲ ပုံသေ မဟုတ်ချင်တဲ့အခါမှာတော့ variable ကို အသုံးပြုပါတယ်။
1+i= ?
အဲဒါဆိုရင် နံပတ်တွေက အမျိုးမျိုး ဖြစ်နိုင်တယ်ပေါ့။ variable ထဲမှာ ထည့်ထားတဲ့ နံပတ်ပေါ်မှာ အခြေခံပြီးတော့ အဖြေလည်း ပြောင်းသွားပါလိမ့်မယ်။ ဟုတ်ပြီ။ အပေါ်က c code လေး ကို အောက်ကလို နည်းနည်းထပ်ပြောင်းပါမယ်။
#include <stdio.h>
int main(){
int someNumber = 123;
printf("My number is %i \n", someNumber);
return 0;
}
အဲဒါကို run လိုက်ရင် 123 ဆိုပြီး ဖြစ်သွားပါလိမ့်မယ်။ printf ကို သုံးတဲ့အခါမှာ variable ပေါ်မယ့် နေရာတွေကို ဘာ variable ဆိုပြီး data type ပေါ်မူတည်ပြီး text လေးထည့်ပေးရပါတယ်။ အခု ဥပမာမှာ %i ကို ထည့်ထားတာ တွေ့ပါလိမ့်မယ်။ အဲဒါက someNumber က int ဖြစ်နေလို့ပါ။ အခြားဟာတွေအတွက် အောက်မှာ ကြည့်နိုင်ပါတယ်။
- %i – integer အတွက်
- %f – float အတွက်
- %e – double အတွက်
- %c – char အတွက်
ဒါတွေက အရေးကြီးပါတယ်။ C မှာ သာမဟုတ် နောက်ပိုင်း Objective C ကို ရေးသားရာမှာလည်း အသုံးများလာပါလိမ့်မယ်။ အဲဒီအထဲမှာ character က string အတွက် အသုံးပြုမယ်ဆိုရင် အခန်းတွေ အများကြီးနဲ့ တွဲပြီး အသုံးပြုရပါတယ်။ ဥပမာ။။ Hello World ဆိုတဲ့ စာလုံး ၁၁ လုံး မှာဆိုရင် chr[0] က H ပေါ့။ အဲလိုမျိုး 0 ကနေ စပြီး 10 အထိ အခန်းပုံစံတွေနဲ့ အသုံးပြုရပါတယ်။
Conditionals
လောကမှာ အရာအားလုံးက တဆင့်ပြီး တဆင့်ဖြစ်နေတာ ရှိနေသလို အချို့နေရာတွေမှာကတော့ ဒါဖြစ်ရင်ဒါလုပ် မဖြစ်ခဲ့ရင် ဒါလုပ် ဆိုတဲ့ Conditional တွေ ရှိပါတယ်။ Programming မှာလည်း ရှိပါတယ်။ အဲဒီအခါမှာ programming မှာ if နဲ့ အသုံးပြုပါတယ်။ code ကတော့ အောက်မှာ ဥပမာ ပေးထားပါတယ်။
#include <stdio.h>
int main()
{
if(1 == 1) { // This is always true
// Do some stuff here
}
return 0;
}
1 နဲ့ 1 သာ တူခဲ့ရင် true ဖြစ်ပြီး အောက်က { နဲ့ စပြီး } ပိတ်ထားတဲ့ ကြားက code တွေကို အလုပ်လုပ်မှာပါ။ မဖြစ်ခဲ့ရင် condition အတွက်တော့ else ဆိုတာကို အသုံးပြုနိုင်ပါတယ်။ // နဲ့ ရေးထားတာတွေက comment ပါ။
int main(){
if(1==1){
// Do some stuff here.
}
else{
// The universe is broken!
}
return 0;
}
ကျွန်တော်တို့တွေ အဲဒီ 1==1 ဆိုတဲ့ နေရာတွေမှာ variable တွေထားပြီး စစ်နိုင်ပါတယ်။ i==1 ဖြစ်လားဆိုသလိုမျိုးပေါ့
Loop
ကြိမ်ဖန်များစွာ ထပ်ခါ ထပ်ခါ လုပ်နေရင် Loop လုပ်တယ်လို့ ခေါ်ပါတယ်။ Looping အတွက် ကျွန်တော်တို့တွေ for , while , do တွေကို အသုံးပြုကြပါတယ်။
// if loop
int main () {
int i = 9;
int x = 0;
for (x = 0; x &lt; i; x++){
printf("Count is: %i\n", x);
}
return 0;
}
အဲဒါလေးကတော့ for loop ပေါ့။ x က 0 ကနေ စပြီးတော့ i ထက် ငယ်တဲ့အထိပေါ့။ i က 9 ဖြစ်တဲ့အတွက်ကြောင့် 0 ကနေ 8 အထိ အလုပ်လုပ်ပါမယ်။ အဲဒီတော့ Count is 0 ကနေ Count is 8 ထိကို ဖော်ပြပေးပါလိမ့်မယ်။
// while loop
int main () {
int x = 0;
while (x < 10){
printf("Count is: %i\n", x); //Watch OUT! Something is missing.
}
return 0;
}
ဒါကတော့ while loop ပေါ့။ သူကတော့ variable တစ်ခုထဲပါပဲ။ x ကို 0 လို့ သတ်မှတ်ထားတယ်။ 10 ထက် ငယ်နေသ၍ အလုပ်လုပ်မယ်လို့ ဆိုထားတာပါ။ ဒါပေမယ့် အဲဒီ code ကို run ရင် ပြီးတော့မှာ မဟုတ်ပါဘူး။ ဘာကြောင့်လဲဆိုတော့ x တန်ဖိုး မပြောင်းလဲသွားတဲ့အတွက်ကြောင့်ပါ။ for loop မှာတုန်းက x++ ဆိုပြီး x တန်ဖိုးကို ၁ တိုးတိုး သွားပါတယ်။ while loop မှာလည်း အဲလို တန်ဖိုး တိုးပေးဖို့လိုပါတယ်။ အဲဒါကြောင့် အောက်ကလို နည်းနည်းပြင်လိုက်ပါတယ်။
// while loop
int main () {
int x = 0;
while (x < 10){
x++;
printf("Count is: %i\n", x);
}
return 0;
}
အဲဒီအခါ x ကို ၁ တိုးတိုးသွားတဲ့အတွက် ၁၀ ရောက်တာနဲ့ ၁၀ ထက် မငယ်တော့တာကြောင့် loop က ထွက်သွားပါလိမ့်မယ်။ do loop က လည်း while loop နဲ့ အတူတူပါပဲ။ မတူတာကတော့ condition ကို အောက်မှာ စစ်တာပါပဲ။ while loop က process မစခင် စစ်ပေမယ့် do loop က process ကို အနည်းဆုံး ၁ ခေါက်လုပ်ပြီးမှ condition ကို စစ်ပါတယ်။
// do loop
int main () {
int x = 0;
do {
x++;
printf("Count is: %i\n", x);
} while(x < 10);
return 0;
}
Pointer
pointer က memory ပေါ်က address နံပတ်ကို မှတ်ထားတာပါ။ variable က value ကို မှတ်ပေမယ့် pointer က memory address ကို မှတ်ထားပြီး အဲဒီ memory address ကို value ကို လှမ်းယူတာပေါ့။ ဥပမာ။။ variable value က အမြဲ ပေါင်းနေပေမယ့် variable ရဲ့ address က တစ်ခုတည်းမှာပဲ value တွေ ပြောင်းပြောင်းသွားနေတာပါ။ ဒါကြောင့် address နံပတ်ကို လှမ်းခေါ်လိုက်ရင် variable မှာ ပြောင်းထားတဲ့ value ကို ရနိုင်ပါတယ်။
int foo = 123; // This is an integer variable
int *ptr = &foo; // This is a pointer to an integer variable
ရှုပ်သွားလောက်ပြီထင်တယ်။ နောက်ပိုင်းမှာ Objective-C လေ့လာရင်း pointer အသုံးပြုပုံတွေ တွေ့လာမှာပါ။ အဲဒီ အခါ ထပ်ရှင်းပြတာပေါ့။
အဆုံးသတ်ခြင်း
ဒီနေ့မှာတော့ Objective-C မစခင် C ကို ပြန်နွှေပေးတာပါ။ လွယ်လွယ်လေးနဲ့ ပြန်မှတ်မိအောင်ပေါ့။ အချို့တွေကလည်း C ကို အသုံးမပြုတာကြာပြီဆိုတော့ မေ့သွားလောက်ပြီ။ ဒါကြောင့် Objective-C မစခင် ပြန်ပြီး နွှေးပေးတဲ့ သဘောပါ။ နောက်နေ့မှာ Objective-C အကြောင်း Intro လေး စပါမယ်။
Reference : http://mobile.tutsplus.com/tutorials/iphone/learn-objective-c-day-1/