09110059-NguyenLam-Chuong2

7
Họ và tên: Nguyễn Lâm MSSV: 09110059 Basics pf Objective-C Programming CHƯỚNG 2 Inheritance( Kế Thừa) Mục Tiêu Trong chương này bạn sẻ học về một trong số các chìa khóa cơ bản làm cho lập trình hướng đối trượng trở nên mạnh mẻ. Thông qua các khái niệm về thừa kế, bạn sẽ xây dựng trên định nghĩa lớp hiện có và tùy chỉnh chúng cho bạn các ứng dụng riêng. Giới Thiệu Inheritance Cho phép lập trình viên tùy chỉnh một lớp cho một mục đích cụ thể mà không thực sự phải sửa đổi các lớp ban đầu( lớp cha). Các lớp dẩn xuất( lớp con) được phép thêm các phương thức hoặc định nghĩa lại chúng Các lớp con có thể thêm các biến, nhưng không thể định nghĩa lại chúng Ví Dụ Inheritance Lớp C là lớp con của lớp B nếu khai báo có dạng Class C : B { } Các lớp con là một chuyên ngành của lớp cha. Các lớp cha là một sự tổng quát của lớp con.

description

Bai soan iOS

Transcript of 09110059-NguyenLam-Chuong2

H v tn: Nguyn LmMSSV: 09110059Basics pf Objective-C ProgrammingCHNG 2Inheritance( K Tha)Mc Tiu Trong chng ny bn s hc v mt trong s cc cha kha c bn lm cho lp trnh hng i trng tr nn mnh m. Thng qua cc khi nim v tha k, bn s xy dng trn nh ngha lp hin c v ty chnh chng cho bn cc ng dng ring.Gii Thiu Inheritance Cho php lp trnh vin ty chnh mt lp cho mt mc ch c th m khng thc s phi sa i cc lp ban u( lp cha). Cc lp dn xut( lp con) c php thm cc phng thc hoc nh ngha li chng Cc lp con c th thm cc bin, nhng khng th nh ngha li chngV D InheritanceLp C l lp con ca lp B nu khai bo c dngClass C : B {}Cc lp con l mt chuyn ngnh ca lp cha.Cc lp cha l mt s tng qut ca lp con.

Inheritance and Messages Khi C l mt lp con ca B: i tng C c th p li tt c cc thng ip ca i tng B cn p ng. C th cc lp con ca B c th c cc phng thc v bin cha c nh ngha trong B. Object-C khng h tr a k thaInheritance Hierarchy(H Thng Cp Bc K Tha) Mt lp c th c nhiu lp con v mi lp con c th c cc lp con ca ring ca mnh. Mt tp tt c cc lp con l ngun gc ca mt lp chung c gi l mt h thng phn cp tha k. Cc lp xut hin bn di mt lp c a ra trong h thng phn cp k tha l con chu ca n. Cc lp xut hin trn mt lp c a ra trong h thng phn cp k tha l t tin ca n.

Inheritance

Mi quan h th bc gia cc lp. Lp con k tha cch x l v d liu t lp cha. Cc lp con c th s dng, lm tng thm hoc thay th cc phng thc lp cha.Inheritance and Visibility Rules (Vng Hiu Dng Ca K Tha) Bin ring khng th nhn thy lp con hoc my khch Bin chung c th nhn thy tt c cc lp con v my khch Mt bin khai bo vi cc sa i hin th bo v ch c th c tham chiu bi lp con ca lp v khng c cc lp khcInheritance class declaration( Khai Bo Lp K Tha)Di y l mt khai bo cho mt i tng gi l ClassA vi mtphng thc gi l initVar:@interface ClassA: NSObject{Int x;}-(void) initVar;@endInheritance class implementation( Thc Hin Cc Lp K Tha)@interface ClassB: ClassA-(void) printVar;@end@implementation ClassB-(void) printVar{NSLog (@x = %i, x);}@endOverriding methods( Phng Thc Ghi ) Bn khng th loi b hoc tr phng thc thng qua tha k. Tuy nhin, bn c th thay i nh ngha ca mt phng thc k tha bng cch ghi n. Mt phng thc nh ngha vi tn ging nh ca mt tng cha thay th, hoc ghi , cc tha k nh ngha. Phng thc mi ca bn phi c kiu tr v ging nhau v ly s lng v kiu ca cc i s l phng thc bn ang ghi .

Overriding the dealloc method( Phng Thc Ghi dealloc) Bn khng ghi ln cc phng thc release-bn ghi ln dealloc thay th. Release i khi cho ln b nh mt i tng s dng, v i khi n khng. Bn c th ghi ln cc phng thc dealloc k tha (n tha hng t NSObject) v gii phng b nh ca ngun gc . Nu bn quyt nh ghi ln dealloc, bn cng phi chc chn gii phng b nh c a ln khng ch bi bn cc bin i tng ring, nhng bt k nhng k tha cng tt Bn gi tin nhn n nhanh thc hin mt phng thc ghi : [super release];Constructors(khai bo) Khi mt lp con c to ra, Objective C s gi cc hm to ca lp cha u tin v sau gi cc hm to ca lp con Nu mt lp cha khng c mt hm to mc nh khng c i s, lp con phi gi cc lp cha mt cch r rngUsing super Call Constructor( Gi nhanh khai bo)Cc cuc gi n nhanh phi l ln u tin tuyn b trong cc hm to lp con V d:- (id)init{self = [super init];if (self) {// Initialization code here.}return self;}Finding the Right Method Khi bn gi mt thng ip ti mt i tng, bn c th t hi lm th no cc phng thc chnh xc c chn p dng cho i tng. u tin, cc hc m cc i tng trong c kim tra Nu c, l phng thc c s dng. Nu n khng c nh ngha , lp cha m c kim tra.The @class Directive Bn cn phi # import cc file, nhng bn c th lm iu trong cc file thc thi (.m) ca bn., v s dng khai bo @class trong file tiu ca bn. @class khng (thng) loi b s cn thit cc file #import, n ch cn di chuyn cc yu cu xung gn hn vi ni m cc thng tin rt hu ch.Abstract Classes( Cc Lp Tru Tng) Cc lp tru tng ch c s dng nh lp cha Cc lp hc c khai bo l lp tru tng ch khi h s khng bao gi c khi to Cc lp tru tng thng c mt hoc nhiu tru tng phng phpAbstract Methods( Phng Thc Tru Tng) Phng thc tru tng khng c cc phn tt c v ch c h tiu khai bo Cch duy nht s dng mt lp tru tng l to ra mt lp m thc hin mi phng thc tru tng Cc lp c th l cc lp m thc hin tng phng thc tru tng trong lp cha ca hWhat Is Composition? Bn s mang li cc thnh phn ring l li vi nhau v lm cho h lm vic xy dng mt ci g ln hn Trong Objective-C, bn b tr bng cch a cc con tr ti cc i tng nh bin i tng Thng qua thnh phn, mt bnh xe p bao gm mt bn p v lp. @ giao din bnh xe p: NSObject@interface Unicycle : NSObject{Pedal *pedal;Tire *tire;}@end // UnicycleThe id type Gn kiu ng cho php chng ta khai bo mt bin c kh nng lu tr bt k loi i tng iu ny t c bng cch s dng loi id Objective-C Cc loi id l mt kiu c bit, mc ch chung kiu d liu c th c ch nh mt i tng ca bt k loiid object1; object1 = [[SavingsAccount alloc] init]; [object1 setAccount: 4543455 andBalance: 3010.10]; object1 = [[CustomerInfo alloc] init]; [object1 displayInfo];