Learn Objective-C: Day 2

Day 2 ကို မစခင် အရင်တုန်းက ရေးခဲ့တဲ့ Day 1 လေးကို ပြန်ညွှန်းလိုက်ပါတယ်။

Object Orientated Programming

ကျွန်တော်တို့ ဘာလို့ Objective C ကို သုံးရတာလဲ။ ဘာဖြစ်လို့ C language ကို မသုံးရတာလဲ။ ဘာလို့လည်းဆိုတော့ Objective C ဟာ Object Orientated Programming ဖြစ်ပြီး Application တွေကို တည်ဆောက်ရမှာ လွယ်ကူစေပါတယ်။ OOP ဆိုတာကတော့ programming paradigm တစ်ခုပါ။ သူက Software တစ်ခုကို တည်ဆောက်တဲ့အခါမှာ object တွေ attribute တွေ နောက်ပြီး function တွေ ပါဝင်လာပါတယ်။ OOP မှာ data abstraction, encapsulation, modularity, polymorphism, နဲ့ inheritance တွေ ပါဝင်ပါတယ်။ OOP အကြောင်းပြောရရင် စာအုပ် တစ်အုပ်စာ ဖြစ်သွားပါလိမ့်မယ်။ ဒါကြောင့် စာပြန်နွှေးတဲ့အနေနဲ့ ဒီနေ့မှာတော့ အခြေခံလေးတွေ ပြောသွားပါမယ်။

စဉ်းစားကြည့်လိုက်ပါ။ သင့်မှာ ကား တစ်စီးရှိတယ်။ အဲဒီ ကား ကို object လို့ သတ်မှတ်လို့ရပါတယ်။ ကမ္ဘာပေါ်မှာ ကားတွေ အများကြီးရှိပါတယ်။ ဒါကြောင့် ကားတွေမှာ properties တွေ ရှိလာတယ်။ model , color , engine type စသည်ဖြင့် အများကြီးရှိပါတယ်။ OOP အရဆိုရင် car က abstract class ဖြစ်ပြီး အဲဒီ class ပေါ်မှာ အခြေခံပြီး အခြား car တွေကို ဖန်တီးလို့ရပါတယ်။ car အသစ်တစ်ခုမှာ မူရင်း ကားမှာ သတ်မှတ်ထားတာတွေ အပြင် အခြား properties တွေ ပါလာနိုင်ပါသေးတယ်။

ဟုတ်ပြီ။ ဒါဆိုရင် ဘာကို object လို့ ခေါ်တာလဲ။ အရာတော်တော်များများဟာ Object တွေလို့ သတ်မှတ်လို့ရပါတယ်။ ဥပမာ လူဟာလည်း Object တစ်ခုလို့သတ်မှတ်ရင်လည်း ရပါတယ်။ Object တစ်ခု ထဲမှာ Properties တွေ function တွေ ပါဝင်လာပါတယ်။ လူဟာ လက် ၂ ဖက် ခြေ ၂ ချောင်း properties တွေ ပါဝင်ပြီး လက်တွေ ခြေတွေ ကို ခိုင်းစေဖို့ function တွေ ပါဝင်ပါတယ်။ ဒီလောက်ဆို နည်းနည်း ရှင်းမယ်ထင်တယ်။ OOP သင်ခဲ့တဲ့သူတွေကတော့ လွယ်လွယ် ကူကူ နားလည်နိုင်ပါလိမ့်မယ်။

Class ဆိုတာကလည်း Object ကိုခေါ်တာပါပဲ။ Object က class ကနေ ဖန်တီးထားတာပါ။a နောက်ပိုင်းမှာ တဖြည်းဖြည်းနဲ့ နားလည်ပါလိမ့်မယ်။ အခုထိ ဘာမှ မမြင်ရသေးတော့ နည်းနည်း စိမ်းနေသေးတာမို့ OOP ကို သိခါစကလူတွေ အတွက် ခေါင်း ရှုပ်ကောင်း ရှုပ်ပါလိမ့်မယ်။

Method

ဟုတ်ပြီ။ car ဆိုတဲ့ Object ရှိတယ်။ car မှာ ဆီဖြည့်တာရှိမယ်။ မောင်းတာ ရှိမယ်။ ကွေ့တာရှိမယ်။ နောက်ဆုတ်တာ ရှိမယ်။ ဒါသူ့ရဲ့ Method တွေပေါ့။ Objective C မှာ method ကို ခေါ်ရင် အောက်ကလို ခေါ်ပါတယ်။

[recipient message];

ဒါဆိုရင် car ဆိုတဲ့ object မှာ gas ဖြည့်တာ ဆိုရင် အောက်ကလို ခေါ်ပါလိမ့်မယ်။

[dansCar addGas];

ဒါက Objective C မှာ ခေါ်တဲ့ ပုံစံ ပါ။ Programming Langauge တော်တော်များများကတော့ အောက်ကလို ခေါ်ကြတာ များပါတယ်။

dansCar.addGas();

Objective C ဟာ အခြား programming language တွေနဲ့ ရေးသားတဲ့ syntax က နည်းနည်းလေး ကွဲပြားတဲ့အတွက် Objective C ကို မလေ့လာပဲ iPhone Development ကို ကူးတဲ့အခါမှာ syntax တွေကြောင့် စိတ်အနှောင့်အယှက် ဖြစ်ရတတ်ပါတယ်။

Attributes

gas ကတော့ ဖြည့်ပြီးသွားပြီ။ gas tank ထဲမှာ gas ဘယ်လောက်ရှိလဲသိရဖို့အတွက် လိုလာပါပြီ။ gas tank ထဲမှာ gas 50% ရှိတာလား။ 100% ရှိတာလား ဆိုတာကို သိဖို့လိုပါတယ်။ အဲဒီအတွက် attribute variable လိုလာပါပြီ။ Attribute ဆိုတာကတော့ ဒီ class အတွက် သီးသန့် variable ပေါ့ဗျာ။ OOP နားလည်ပြီးသားသူတွေအနေနဲ့တော့ ပြောလိုက်တာနဲ့ သဘောပေါက်မယ်ထင်ပါတယ်။ OOP အားနည်းတဲ့သူတွေ နားမလည်ရင်လည်း comment မှာ မေးလို့ရပါတယ်။ အားမငယ်ပါနဲ့။ Objective C လုပ်ရင်း OOP ကို နားလည်သွားပါလိမ့်မယ်။

Interface and Implementation

Objective C မှာ အဓိက အားဖြင့် file 2 file ပါဝင်ပါတယ်။ .m နဲ့ .h file ပါ။ Interface ကို .h နဲ့ သိမ်းပြီး implementation ကိုတော့ .m နဲ့ ရေးပါတယ်။

Interface

#import <Cocoa/Cocoa.h>

@interface Car : NSObject {

//This is where attributes go
float fillLevel;

}

//This is where methods go
- (void)addGas;

@end

အဲဒါက Interface တစ်ခု ဖန်တီးထားတာပါ။ ဒါက Objective-C ရဲ့ .h file အခြေခံပေါ့။ ဒီ ဥပမာ က syntax သဘောတရားပဲ ပြထားတဲ့အတွက် run လို့ရမှာမဟုတ်ပါဘူး။ Car ကို Interface တစ်ခု အနေနဲ့ တည်ဆောက်လိုက်တယ်။ NSObject ကတော့ Car class က NSObject ကို inherits လုပ်ထားတယ်ကို ပြောတာပါ။ Attribute အနေနဲ့ Float value fillLevel ပါပါတယ်။ နောက်ပြီး function အနေနဲ့ addGas ဆိုတာ ပါပါတယ်။ (void) ဆိုတာကတော့ return value မရှိဘူးလို့ ဆိုလိုတာပါ။ C နဲ့ ဆင်ပေမယ့် syntax လေးတွေက နည်းနည်း ကွာပါတယ်။

Implementation

#import "Car.h"

@implementation Car

-(void) addGas {
// code goes here to add gas
}

@end

ဒါကတော့ Implementation ပိုင်းဖြစ်တဲ့ .m အပိုင်းပေါ့။ interface မှာ ပြောထားတဲ့ function ကို implementation လုပ်ပါတယ်။ နောက်ပြီး interface မှာ ကြေငြာထားတဲ့ attribute ကို ခေါ်ယူပြီး အသုံးပြုလို့ရပါတယ်။ addGas ကနေ gas ဖြည့်တဲ့ function ကို ရေးသားရပါမယ်။

ကဲ.. ဒီနေ့တော့ ဒီလောက်ပါပဲ။ အခုဆိုရင် Objective C အကြောင်း အနည်းငယ် သိသွားလောက်ပါပြီ။ နောက်နေ့တွေမှာ Objective C အကြောင်းကို ဆက်သွားပါမယ်။ အခုတော့ အခြေခံ သဘောတရားလေးတွေ နွှေးပြီးပြီမို့ Objective C အပိုင်းကိုပဲ ဆက်သွားပါတော့မယ်။

reference : http://mobile.tutsplus.com/tutorials/iphone/learn-objective-c-2/

About saturngod

iOS Game Developer အနေနဲ့ လက်ရှိ အလုပ်လုပ်နေတယ်။ http://www.saturngod.net မှာ blog ရေးတယ်။ နောက်ပြီး http://en.saturngod.net မှာလည်း ရေးဖြစ်တယ်။ twitter မှာဆိုရင်တော့ http://www.twitter.com/saturngod မှာ ရှိပါတယ်။

6 thoughts on “Learn Objective-C: Day 2

  1. ဆက်ရေးပါဗျို့ ကျွန်တော်လိုက်ဖတ်နေပါတယ်။ Data Access လောက်ထိတော့ ရေးပေးဗျာ။
    Nettuts မှာ Day 4 ထိပဲ ရှိသေးတယ် ဟုတ်?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>