You are on page 1of 6

Objective-C l ngn ng lp trnh xut hin t rt lu, n c thit k v pht trin t nm 1980.

. Hin ti, Objective-C li tr nn ph bin v n c Apple chn lm ngn ng lp trnh cho h thng Mac v iPhone.

1. Gii thiu v ngn ng lp trnh Objective C Objective-C l ngn ng lp trnh xut hin t rt lu, n c thit k v pht trin t nm 1980. Hin ti, Objective-C li tr nn ph bin v n c Apple chn lm ngn ng lp trnh cho h thng Mac v iPhone. Objective-C c thit k bi Brad Cox khi ng lm vic cho cng ty Stepstone vo u nhng nm 1980. Objective-C c thit k phc v mc ch lp trnh hng i tng. N hot ng ging nh l mt tp hp cc thnh phn m rng rt mnh m ca ngn ng C. Objective-C kt hp cc c im u t nht ca C v ngn ng SmallTalk. Objective-C kh n gin hc v c y cc kh nng ca mt ngn ng lp trnh hng i tng. Objective-C n gin v nh gn nhng li l mt thnh phn m rng rt mnh ca ngn ng chun ANSI C. Objective-C cung cp y cc kh nng lp trnh hng i tng nhng li c thc thi theo cch kh n gin v d dng. Hu ht cc ngn ng lp trnh hng i tng cung cp: . Mt th vin cc Objects. . Cc cng c pht trin cn thit . H tr hng i tng v cc th vin lin quan. Objective-C cng cung cp y cc thnh phn trn. Bn c th s dng Objective-C pht trin mt phn mm hon thin. Apple chn Objective-C lm ngn ng lp trnh chnh cho h thng my Mac v iPhone. L ngn ng hng i tng nn Objective-C gii quyt cc vn lp trnh da trn khi nim cc Object. N bao gm 3 phn: 1. Interface Interface ca mt lp(class) thng thng c nh ngha trong file header vi ui .h. N chnh l phn khai bo ca mt lp. 2. Implementation M ngun ca chng trnh c vit trong phn implementation ca mt lp v c nh ngha trong mt file c ui .m. y l n phn nh ngha ca lp. 3.Instantiation Sau khi khai bo v nh ngha mt lp, chng ta c th thc th ha lp ny bng vic cp pht b nh cho new object ca lp . Tm li Objective-C l: Thnh phn m rng ca ngn ng lp trnh C. L ngn ng lp trnh hng i tng n gin nhng mnh m. L ngn ng c Apple s dng pht trin cc ng dng cho h thng my Mac v iPhone. 2. Ti sao li s dng Objective-C

Ngn ng lp trnh Objective-C c chn cho Cocoa framework v mt s l do di y: N l ngn ng lp trnh hng i tng v cc chc nng cung cp bi Cocoa framework ch c th c mang li bi cc k thut hng i tng. N l thnh phn m rng ca chun ANSI C v vy cc chng trnh vit bng C ca framework ny s khng b mt i tnh nng no v ngi dng c hng cc li th ca ngn ng C. Vi ngn ng ny, ngi dng c th la chn c lp trnh hng i tng v lp trnh th tc khi cn thit. N n gin v d hc bi c php ca n kh ngn gn( ci ny nghi ng qu ) nn n gip cho lp trnh vin t c hiu qu mong mun m khng gp nhiu kh khn. N rt nng ng nu so snh vi cc ngn ng m rng khc da trn C. Trnh bin dch ng mt vai tr rt quan trng trong vic bo v thng tin lin quan n cc i tng s dng lc run time. N l mt ngn ng mnh bi v cc quyt nh c th c a ra lc bin dch s c tr hon cho ti khi chng trnh chy. S nng ng ca Objective-C c hai li th ng k: N h tr rng buc ng v m to ra mt cu trc n gin i vi giao din tng tc ngi dng. N cho php pht trin cc cng c pht trin phc tp. Mt giao din cho h thng run time to iu kin cho vic tip cn cc thng tin lc run time gip cho vic monitor ng dng vit bng Objective-C. Trn y mnh va gii thiu vi cc bn v ngn ng lp trnh Objective-C v cc c im ca n. nhng bi sau, chng ta s cng khm ph c th hn v c php ca Objective-C.

Trong bi c ny chng ta s khm ph cc t kha (keyword) c s dng trong ngn ng lp trnh Objective C. Nh cc bn bit, Objective C l m rng ca ngn ng lp trnh C, v th chng trnh c vit bng C hay C++ hon ton c th c bin dch nh Objective C. Ngoi cc t kha dng trong C v C++, Objectve C cung cp thm mt s t kha khc. trnh xung t vi t kha ca ngn ng khc, Objective C dng @ ng trc mi t kha. Nhng t kha ny c gi l Compiler Directives.

Cc Directives c s dng khai bo, nh ngha cc classes, categories, protocols: Definition S dng khai bo mt class hay @interface mt interface. @implementat Dng nh ngha mt class hay ion mt category. Directive

S dng khai bo mt th tc hnh thc (formal protocol). Kt thc khai bo, nh ngha @end category hoc protocol. Cc Directive c s dng xc nh kh nng truy cp ca cc thc th. (Mc nh l @protected). Directi Definition ve Gii hn phm vi truy cp ca mt bin @private thc th ch trong lp m n c khai bo. Gii hn phm vi truy cp mt bin thc @protect th trong lp khai bo n v cc lp khc ed k tha lp ny. Khng gii hn phm vi truy cp ca @public bin ny. Cc Directives lin quan n vic x l ngoi l (Exception handling). Directi Definition ve nh ngha mt khi m lnh m trong @try khi ny c th pht sinh ngoi l. @throw Tung ra mt ngoi l. Bt (khi lnh c thc thi nu ngoi l @catch pht sinh) ngoi l bn trong khi m lnh @try ngay trc n. Mt khi m lnh s c thc thi khng @finally cn bit c ngoi l xy ra trong @try hay khng. Cc Directive s dng cho tng mc ch c th. Directive Definition Khai bo tn ca mt lp c @class nh ngha u . Tr v selector c bin @selector(method_n dch xc nh phng thc c ame) tn l tham s trong du ngoc. Tr v protocol( thc th ca mt Protocol class) c tn trong du ngoc. @protocol(protocol_ @protocol(khng c tham s) name) cng hp l khi khai bo chuyn tip(forward declarations). Cho ta chui c encode @encode(type_spec) ca tham s type_spec. nh ngha mt hng chui NSString object v khi to @string chui vi 7-bit chun ASCIIencoded. nh ngha mt hng chui @string1 NSString object. Chui c @string2 to ra l kt qu ca vic ni @stringN cc chui xc nh trong cc directives. @protocol

nh ngha mt khi m lnh m ch c chy (execute) @synchronized() bng mt thread ti mi thi im. Mt s t kha ring ca Objective C In Out Inout Bycopy byref oneway Nhng t kha s dng cho mc ch qun l b nh trong Objective-C Chng c gi l t kha nhng thc cht l cc phng thc trong lp cha u tin (root class) NSObject. Allo Releas Autoreleas Retain c e e Mt s t kha khc: 1. bool l t kha trong objective-C nhng gi tr ca n y l YES hoc NO. Trong C v C++ n c gi tr l TRUE hoc FALSE. 2. super v self c th gi l t kha, nhng self l mt i s n ca ca mi phng thc v super ch dn cho trnh bin dch cch s dng mi t kha self khc nhau. Cc Directives tin x l (Preprocessor Directives) Cc directives tin x l l nhng thng bo c bit: Directi Definition ve // S dng kha mt dng code. Ging nh C v C++ n c s #import dng include mt file nhng khng include nhiu hn mt ln.

Mt s lu khi lp trnh Objective C: - L ngn ng hng i tng - M rng t C - Nh nhng (khng VM khng qu thc tp vi friend virtuals vi template vi .) - Mm do (m rng t C nn bn c th dng C thun cu trc ngoi ra y l ngn ng run-

time) - Reflection (c h ch) - nil thay th cho NULL trong C, bi v bn c th gi thng ip cho nil, nhng khng th lm nh vy vi NULL. - BOOL c 2 gi tr l YES v NO ch khng phi l true v false na. - Khi nim methods v message c s dng mang ngha nh nhau i vi ObC theo message c nhng thuc tnh c bit. Mto message c th chuyn ng t obj ti mt obj khc. Vic gi thng ip trn mt obj khng c ngha l obj s thc hin message n c th chuyn tip ti mt obj khc cha bit trc tm li c kh nng p tr thng ip khng trc tip th gin tip. Khi lm vic vi Objective C bn cn ch l bi v n c xy dng trn nn ca C cho nn vic bn s dng c php C trn ln vi c php chnh thng ca Objective C l hon ton chp nhn, tuy nhn c v hi c chui. Phng thc - Cch khai bo phng thc trong Objective C Khng tham s:

<(kiu tr v)>
C tham s:

<(kiu tr v)> :<(kiu)> :<(kiu)> ;


- Li gi phng thc khng tr v:

[<i tng> ]; [<i tng> :<(kiu)> ]; [<i tng> :<(kiu)> :<(kiu)> ];


Tr v kt qu: = [<i tng> ]; = [<i tng> :<(kiu)> :<(kiu)> ]; Lp v i tng Objective C s dng khi nim Interface v Implementation phn bit file Header v file Source ca C (*.h v *.c) mt lp trong ObC nh ngha l trn mt giao din (.h) cn phn thc thi trn file .m cc bn ch l m v n khc vi C v C++. @interface: #import @interface Fraction: NSObject { int numerator; @private int denominator; } -(void) print; -(void) setNumerator: (int) n; -(void) setDenominator: (int) d; -(int) numerator; -(int) denominator; @end v y l phn thc thi. @implementation #import Fraction.h @implementation Fraction

-(void) print { printf( %i/%i, numerator, denominator ); } -(void) setNumerator: (int) n { numerator = n; } -(void) setDenominator: (int) d { denominator = d; } -(int) denominator { return denominator; } -(int) numerator { return numerator; } @end - S dng #import thay th cho #include (y l c ch thng minh hn #include ca C/C++ bn ch phi thm 1 ln thi ) - Objective C ch cho php n k tha. Mc nh tt c cc lp s k tha t NSObject. - Cp @. v @end l cp gii hn phm vi mt lp. - Cc thuc tnh dc khi bo trong cp { .. } v khai bo phng thc bn ngoi. - Nu phng thc bt u bng + c ngha n l thuc phm vi lp (static), cn nu - th n phm vi object. - Cc phm vi truy xut public,protected v private ging nh C++ mc nh l protected. - Cc truy nhp phn t cng s dng ton t . i vi object v -> nu l con tr. - khng c cc tm vc truy xut i vi phng thc (tc l trong ObC cc phng thc c cng mt tm vc l public)

You might also like