Professional Documents
Culture Documents
Mc Lc
Phn A : GII THIU CNG TY THC TP............................................................................ 2 I. II. III. 1. 2. 3. 4. Chc nng ......................................................................................................................... 2 T chc .............................................................................................................................. 3 Cc dch v.................................................................................................................... 4 Kim th phn mm: ................................................................................................... 4 pht trin ng dng di ng: ...................................................................................... 5 pht trin ng dng Web: ........................................................................................... 8 Gii php h thng CNTT:.......................................................................................... 8
Phn B : NI DUNG THC TP ................................................................................................ 9 I. 1. 2. II. 1. 2. III. 1. 2. Tm hiu v ngn ng lp trnh Objective C.................................................................. 9 Gii thiu v Objective C : .......................................................................................... 9 C bn v Objective-C ............................................................................................... 11 Xy dng ng dng tra cu thng tin cc tuyn xe but ........................................... 34 Gii thiu: ................................................................................................................... 34 Xy dng chng trnh: ............................................................................................ 34 Xy dng ng dng Ebook cc b lut ca Vit Nam trn Iphone ....................... 42 Gii thiu: ................................................................................................................... 42 Xy dng chng trnh.............................................................................................. 42
Bo co thc tp
Bo co thc tp
T khi u ca cng ty lun coi trng mc dch v v qun l cht lng, cho nn EVERS c chng nhn ISO 9001:2000 chng v s c cp giy chng nhn CMMi cp 3 v ISO 27001 v an ninh. Evers c dch v c th ph hp vi mc tiu khc nhau ca khch hng: c nhn, cc cng ty pht trin phn mm, cc doanh nghip v i ng IT. Cho d bn cn phi th nghim c lp / pht trin hoc bn ang tm kim thm cc ngun lc ca con ngi p ng thi hn cht ch ca mt d n phn mm, bn s tm thy gii php ca bn v cng ngh c sn ti Evers v giao tip d dng v minh bch trong qu trnh th nghim. Ty thuc vo kinh nghim ca bn trong kim th / Pht trin ng dng gia cng phn mm, Evers s cung cp tt c cc h tr cn thit lin quan n ngun lc v thng tin. Cng ty thm ch cn pht trin mt phng php c bit cho qu trnh ny, nhn c s cng nhn c bit t khch hng ca Cng ty, c hai dch v gia cng phn mm giu kinh nghim ngi s dng v ngi mi bit ln u. Bn cnh chuyn mn k thut rng ln, i Evers cn thnh tho trong hi nhp y v nhanh chng vi qu trnh pht trin phn mm ca bn bt k giai on m h tham gia d n.
II. T chc
Cng ty bao gm cc thnh vin trong hi ng qun tr: Gim c iu hnh, gim c k thut, ph ch tch ti chnh. Cng ty bo gm cc phng: phng t chc nhn s, phng k thut, phng k ton ti chnh. Phng k thut c chia thnh cc nhm lnh vc: kim th phn mm , pht trin ng dng di ng , pht trin ng dng Web v Gii php h thng CNTT
Bo co thc tp
S t chc:
III. Cc dch v
Bo co thc tp
Th nghim thc t Th nghim Vng i y Kim nghim nng sut Th nghim tnh d s dng Th nghim bn a ho Kim tra bo mt Th nghim tnh tng thch T ng ho th nghim Phn mm ca Cng ty th nghim quy trnh n gin:
2. pht trin ng dng di ng: Evers l mt chuyn gia pht trin ng dng di ng c mt kinh nghim rng ri trong cc ng dng di ng. Cng ty chuyn mn su trong pht trin ng dng di ng trn nhiu nn tng bao gm pht trin ng dng Windows Mobile , pht trin trang web cho php in thoi di ng,
Bo co thc tp
Pht trin ng dng in thoi di ng Nokia da trn J2ME, Samsung, in thoi LG, Google Android, in thoi NFC, pht trin trang web in thoi di ng iPhone, Pht trin ng dng di ng iPhone. Vi i ng chuyn gia pht trin ng dng di ng ca cng ty sn xut cc gii php tit kim bng cch cch ly cc thnh phn trong mt ng dng cn tr s pht trin, gii quyt vi nhng hiu qu v ngnh cng nghip k thut tiu chun. Cng ty pht trin nhiu ng dng ty chnh in thoi di ng iPhone, ng dng di ng da trn Java (J2ME) v Gii php ng dng ca Windows Mobile. Cng ty cng cung cp y cc gii php end-to-end in thoi di ng / khng dy, tch hp cc giao dch kinh doanh thng qua cc thit b di ng v h thng phn phi ni dung xut bn mt lot cc thng tin c gi tr cho c hai nh cung cp v ngi mua. Hin ti trung tm pht trin ra nc ngoi ca cng ty cung cp y Pht trin ph bin ng dng di ng bao gm ton b chu k pht trin ng dng di ng t thit k ban u v kin trc pht trin v hi nhp vo h thng hin c. Cng ty c chuyn mn trong vic xy dng nhiu ng dng s dng h iu hnh Palm OS, Windows CE, Symbian OS, in thoi CDMA & GSM v Tablet PC. Chng ti c kinh nghim pht trin trong GPS da trn cc ng dng J2ME. pht trin ng dng iPhone / iPod / iPad: Evers pht trin ng dng iPhone / iPod / iPad ang c s dng bi nhiu ngi tiu dng khc nhau, t nhng ngi dng l doanh nghip vi ngi tiu dng i chng. Cng ty c mt i ng c tay ngh cao ca cc lp trnh ng dng iPhone cho iPhone / iPod / Pht trin ng dng iPad vi kinh nghim trn iPhone / iPod / iPad SDK, 2.2 iPhone SDK 2.2.1 v SDK 3.0 beta 2 ngi lm vic cho iOS Pht trin ng dng in thoi di ng & pht trin Website iOS Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 6
Bo co thc tp
Pht trin ng dng Android: EVERS a ra Di ng ng dng Pht trin cho Google Android. ng dng Android l ngn xp phn mm cho thit b di ng bao gm h iu hnh, phn mm trung gian v cc ng dng then cht. Pht trin ng dng Android ca cng ty tm hiu kh nng v hn ca Android qua ton din ca tp hp cc cng c pht trin. Pht trin ng dng Windows Phone: Evers l mt cng ty hng u pht trin ng dng di ng v lp trnh ng dng in thoi thng minh cng ty ti Vit Nam cung cp cht lng hng u cc dch v Windows pht trin ng dng in thoi cho khch hng trn ton th gii. Evers c kinh nghim tt trong pht trin ng dng h iu hnh Windows Phone bng cch cung cp cc gii php mong mun cho cc khch hng ton cu. Pht trin ng dng Blackberry Playbook: Evers cung cp gii php hon chnh cho pht trin ng dng in thoi thng minh BlackBerry, sn sng thch thc i vi Pht trin ng dng BlackBerry Tablet. Vi cc chuyn gia lp trnh BlackBerry iu kin v Cc nh pht trin JAVA, cng ty c th cung cp cho bn phong ph v gii php pht trin ng dng c o vi gi c phi chng. Pht trin ng dng BlackBerry : EVERS gii v pht trin ng dng Blackberry ( ng dng CLDC & Both Middle), pht trin phn mm Blackberry, Lp trnh Blackberry. Cng ty thm ch c th to ra ng dng Blackberry bn th ba cho cng c cp tin. EVERS c kh nng xy dng loi khng l ca ng dng trn Blackberry.
Bo co thc tp
3. pht trin ng dng Web: EVERS cung cp cc dch v ng dng Web sau y: Pht trin ng dng doanh nghip mi ng dng doanh nghip nim yt ng dng duy tr doanh nghip Bo tr ng dng Doanh nghip
4. Gii php h thng CNTT: Bn c mt doanh nghip c nhu cu ca mt mng c tin cy cao? H thng VoIP v camera sn sng trong cng ty ca bn? Cng ty ca bn sn sng tn hng nhng p ng ca tiu chun IT mi ngi ti mt chi ph hp l khng? Bn sn sng cho s tin li ca mt mng gia nh? Bn c ngh rng bn c mt virus hoc phn mm gin ip? My tnh ca bn phn ng chm hoc cn bi cc ca s pop up? Evers c nhng g bn ang tm kim: Mng Thit k & Thc hin My tnh v bo tr mng Ci t h thng VoIP ci t h thng camera
Bo co thc tp
1. Gii thiu v 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. Objective-C c thit k vi mc ch a vo C cc tnh nng hng i tng mt cc n gin v d hiu nht. Objective-C l ngn ng chnh c Apple chn vit cc ng dng cho h iu hnh MAC, iPod v iPhone. Nh vy, nm c Objective-C bn phi c kinh nghim v ngn ng C. Nu bn c kin thc tt v C th bn c th nm nhanh Objective-C v c th bt u pht trin cc ng dng cho iPhone v h iu hnh MAC. Nu khng, bn nn dnh thi gian tm hiu thm v ngn ng C trc khi tm hiu Objective-C.
Bo co thc tp
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: 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. 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. 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 . 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.
10
Bo co thc tp
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.
2. C bn v Objective-C
2.1 T kha a) Khai bo class, category v protocol @interface: khai bo class hoc interface. @implementation: nh ngha class hoc category. @protocol: khai bo protocol @end: kt thc trong vic khai bo, nh ngha category hoc protocol. @private: gii hn phm vi trong lp m bin th hin c khai bo. @protected: gii hn phm vi trong lp v lp con k tha m bin th hin c khai bo. @public: khng gii hn phm vi truy xut. Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 11
Bo co thc tp
Mc nh l @protected @try @throw @catch @finally @class: khai bo trc mt tn lp c nh ngha mt ni khc. @selector(method_name): tr v mt selector c bin dch m c nh ngha thng qua method_name. @protocol(protocol_name): tr v mt protocol protocol_name (mt th hin ca mt lp Protocol). @protocol l hp l (khng c protocol_name) trong trng hp khai bo trc @synchronized: nh ngha mt block m ngun trong n phi c thc hin ng b #import: dng include mt file, tng t include trong C, C++. b) Phm vi truy xut cc bin th hin c) X l ngoi l d) Cc mc ch c th khc 2.2 Cu lnh trong Objective-C Cc cu lnh iu khin if, switch v cc cu lnh lp for, while tng t nh C/C++ hoc Java Cc cu lnh r nhnh: if ( ) { } else if ( ) { } else { } Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 12
Bo co thc tp
switch () { case : break; default: break; } Cc cu lnh lp: for (; ; ) { } while ( ) { } do { } while ( ) 2.3 i Tng Mt chng trnh hng i tng c xy dng t cc i tng. Mi i tng bao gm d liu v cc phng thc s dng hoc tng tc trn cc d liu . Objective-C cho php nh danh mt i tng m khng cn phi ch ra mt lp c th ca i tng , iu ny cho php nh kiu ng. Trong chng trnh th ta phi lun m bo rng ta phi lun x l cc i tng khng cn cn thit na. a. ID: Trong Objective-C, nh danh i tng l mt kiu d liu khc bit: id. Kiu ny c nh ngha nh l mt con tr tr n mt i tng, trong thc t, mt con tr tr n cc bin th hin ca mt i tng, vi d liu duy nht. Ging nh hm hoc mng trong C, mt i tng c nh Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 13
Bo co thc tp
danh bi mt a ch. Tt c cc i tng, bt k l bin th hin hay phng thc, u c kiu l id. b. nh kiu ng: Kiu id l mt kiu hon ton khng hn ch. Bn thn n khng mang thng tin v mt i tng, ngoi tr n l mt i tng. Nhng cc i tng li khng ging nhau. Ti mt vi thi im, chng trnh cn bit r cc thng tin c t ca mt i tng, cc bin th hin m n cha, cc hm m n c th thc hin, kiu id khi c thit k ra khng h tr c iu ny. h tr iu ny, mi i tng c thit k mang trong n mt bin th hin isa vi mc ch nh danh lp ca i tng, cho bit i tng thuc loi no. Nhng vy ti mi thi im runtime, i tng l cc kiu ng. Bt c lc no cn, h thng runtime c th bit chnh xc lp m i tng thuc v, bng cch hi ngay i tng . Con tr isa cho php cc i tng tm cc thng tin v bn thn chng. Trnh bin dch ghi nhn cc thng tin v nh ngha lp vo cc cu trc d liu h thng runtime s dng. Cc hm ca h thng runtime s dng isa tm ra cc thng tin ny ti thi im runtime. c. B nh: Trong lp trnh Objective-C, mt iu quan trng l phi gii phng cc i tng khng cn s dng, nu khng b nh s trn. V mt iu quan trng khng km l khng c gii phng i tng khi n ang c s dng.
14
Bo co thc tp
2.4 Lp Mt lp trong Objective-C c nh ngha gm 2 file thnh phn tng t C, C++. Mt file *.h nh ngha trc cc bin thnh phn v tn cc phng thc, file *.m nh ngha phn thc thi cho cc phng thc trong file *.h File ClassName.h
#import <headerFile.h> @interface ClassName { variable1 declaration; variable2 declaration; } method1 declaration; method2 declaration; @end Objective-C s dng t kha @interface khai bo mt tn lp trong file h. T kha @end c s dng cui phn khai bo.
File ClassName.m: #import ClassName.h @implementation ClassName -method 1 //trin khai phng thc 1 -method 2 // trin khai phng thc 2 @end Objective-C s dng t kha @implementation khai bo phn thc thi thc s ca lp trong file m. T kha @end c s dng cui phn khai bo.
15
Bo co thc tp
2.4.1 Thuc tnh: C php khai bo thuc tnh: [Access Privilege] TypeName varName; V d: @private int att1; NSString str1; @protected int att2; @public NSString str2; int att3; Mc nh khi khng s dng t kha quyn truy xut l @protected Phng thc: C php nh ngha mt phng thc [Access Privilege](return_type) methodname: (type1) para1 : (type2) para2 (); Gi phng thc [object methodname:para1 : para2]; V d: Khai bo: -(MyClass*) constructor: (int) a : (int) b; Trin khai -(MyClass*) constructor: (int) a : (int) b { self = [super init]; Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 16
Bo co thc tp
if(self) { var1 = a; var2 = b; } return self; } } Li gi phng thc nh sau [myClassObject constructor: 100 : 200]; Trong Objective-C ch c 2 khi nim quyn truy xut n phng thc: truy xut hon ton qua lp (public static) v truy xut hon ton qua i tng (public) Objective-C qui nh phn nh ngha truy xut nh sau Phng thc truy xut thng qua tn lp s c k hiu l du + Phng thc truy xut thng qua i tng s c k hiu l du @interface MyClass: NSObject -(MyClass*) staticMethod: (int) a : (int) b; -(MyClass*) publicMethod: (int) a : (int) b; @end Trong trng hp phng thc c nhiu tham s, v th hin c ngha ca cc tham s trong li gi phng thc, Objective-C cho php mt c php khai bo khc cho phng thc nh sau:
[Access Privlilege](return_type) methodPara1: (type) para1 andPara2: (type) para2;
Li gi phng thc khi s nh sau: [object methodPara1: value1 andPara2: value2]; V d: -(void) setX: (int) x Y: (int) y; Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 17
Bo co thc tp
-(void) setX: (int) x Y: (int) y { var1 = x; var2 = y; } [myObject setX: 15 Y: 20]; K tha
2.4.2
Tnh k tha trong Objective-C tng t trong cc ngn ng khc nh C++, #import SuperClass.h #import <headerFile.h> @interface ClassName:SuperClass { variable1 declaration; variable2 declaration; } method1 declaration; method2 declaration; @end Trong Objective-C, thc s tt c cc lp khi to ra u k tha t lp NSObject 2.4.3 Phng thc to Trong Objective-C khng c khi nim phng thc to cho mt lp. Tt c cc i tng ca mt lp phi c cp pht thng qua phng thc alloc v init. MyClass *myObject = [[MyClass alloc]init]; Trong phng thc alloc l cp pht vng nh, cn phng thc init nh l mt phng thc to mc nh trong Objective-C, c nh ngha trong lp NSObject.
18
Bo co thc tp
-(id) init; Ta thng nh ngha li phng thc to c tham s ca mt lp nh sau: #import SuperClass.h #import <headerFile.h> @interface MyClass: NSObject { int var1; int var2; }
-(MyClass*) constructor: (int) a : (int) b { self = [super init]; if(self) { var1 = a; var2 = b; } return self; }@end
19
Bo co thc tp
T kha super con tr tr n lp cha ca lp hin ti, tng t nh base trong C++ hoc super trong Java. T kha self l con tr i din cho lp hin ti, tng t con tr this trong C++ hay Java
2.4.4 Properties Trong Objective-C h tr tnh nng Properties, cho php chng ta nh ngha cc b truy xut (setter/getter) v vy s c nhiu li ch s dng khi truy xut n cc bin th hin ca i tng. nh ngha trong file.h: @property (<attributes>) type propertyName; Thc thi trong file.m: @synthesize propertyName; Truy xut n properties thng qua c php object.property:
#import <Foundation/Foundation.h> @interface Address : NSObject { int countryCode; int cityCode; } @property (readonly) int countryCode; @property int cityCode; @end #import Address.h @implementation Address @synthesize countryCode; @synthesize cityCode; @end Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 20
Bo co thc tp
Address *address = [[Address alloc] init]; Int code = address.countryCode; address.cityCode = 99; Cc thuc tnh cho Properties Writability readwrite: ch ra Properties c th c v ghi, thuc tnh ny l mc nh read-only: ch ra Properties ch c th c. Setter Semantics assign: l thuc tnh mc nh. Ta thng s dng assign cho cc kiu v hng nh NSInteger, CGRect
2.5 Category Khi ta mun thm mt s phng thc vo mt lp c sn, thng thng ta s m rng lp bng cch vit li m ngun. Objective-C cung cp tnh nng Category cho php ta m rng lp m khng cn phi vit li m ngun ca lp c. Category cho php ta m rng lp c trong mt b thc thi khc. Gi s ta c mt lp MyClass nh ngha: MyClass.h @interface MyClass -(void) print; @end MyClass.m #import MyClass.h @implementation MyClass -(void) print { //to do print}
21
Bo co thc tp
Ta mun thm mt mt phng thc newMethod, ta s dng tnh nng Category ca Objective-C nh sau: MyCategory.h #import MyClass.h @interface MyClass (MyNewCategory) -(void) newMethod; @end MyCategory.m #import MyCategory.h @implementation MyClass (MyNewCategory)
-(void) newMethod { //to do new method } S dng nh sau: #import MyClass.h #import MyCategory.h int main(int argc, const char *argv) { MyClass *myObject = [[MyClass alloc] init]; [myObject print]; [myObject newMethod]; } Tn ca Category l duy nht, c th thm nhiu Category nhng khng c trng tn. Trong Category khng cho php thm cc bin th hin Ngoi mc ch m rng, Category thng c s dng nh ngha cc phng thc private (khng c h tr trong Objective-C) Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 22
Bo co thc tp
2.6 Posing Pose l mt tnh nng ca Objective-C cho php lp con thay th (pose in place of) lp cha m n k tha trong mt ng cnh nht nh. @interface Fraction -(void) print; @end #import Fraction.h @implementation Fraction -(void) print { printf( printf of Fraction); } @end #import Fraction.h @interface FractionA : Fraction -(void) print; @end #import FractionA.h @implementation FractionA -(void) print { printf( new printf of FractionA); } @end #import Fraction.h #import FractionB.h int main( int argc, const char *argv[] ) { Fraction *frac = [[Fraction alloc] init]; Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 23
Bo co thc tp
// print it printf( The fraction is: ); [frac print]; printf( \n ); // FractionA pose as Fraction [FractionA poseAsClass: [Fraction class]]; Fraction *frac2 = [[Fraction alloc] init]; // print it printf( The fraction is: ); [frac2 print]; printf( \n ); // free memory [frac release]; [frac2 release]; return 0; } Kt qu l: The fraction is: printf of Fraction The fraction is: new printf of FractionA Phng thc poseAsClass l mt phn ca protocol NSObject 2.7 Protocol Protocol nh ngha mt danh sch cc phng thc bt buc hoc ty chn m cc lp chp nhn (adopt) protocol bt buc phi thc thi.
@protocol MyProtocol - (void)requiredMethod; @optional Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 24
Bo co thc tp
- (void)anOptionalMethod; - (void)anotherOptionalMethod; @required - (void)anotherRequiredMethod; @end Cc phng thc khai bo trong Protocol cng c th l cc khai bo Properties. Cc t kha @optional v @required th hin theo ng ngha ca n, nu khng s dng 2 t kha ny th mc nh l @required. @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; - (id)initWithCoder:(NSCoder *)aDecoder; @end
25
Bo co thc tp
SomeClass trin khai Protocol NSCoding theo c php <Protocol> @interface ClassName : ItsSuperclass < protocol list > @interface ClassName ( CategoryName ) < protocol list > V d: @interface Formatter : NSObject < Formatting, Prettifying > Protocol c s dng trong cc trng hp: Khai bo cc phng thc d kin s c thc thi Khai bo mt interface cho mt i tng trong khi n i lp ca n Kho st tng ng gia cc lp m khng phi lin quan n cu trc th bc
2.8 Association References S dng tham chiu lin kt gi lp vic b sung cc bin th hin i tng vo mt i tng khc. Vic khi to mt tham chiu lin kt ch yu da trn mt key, ta c th thm nhiu lin kt nu ta mun vi nhiu key khc nhau, s dng hm runtime ca Objective-C l objc_setAssociatedObject
void objc_setAssociatedObject (id object, void *key, id value, objc_AssociationPolicy policy)
object: i tng ngun ca lin kt key: kha ca lin kt. Kha ny thng l i tng static. value: gi tr lin kt vi kha cho i tng. a gi tr nil xa mt lin kt tn ti policy: cc policy cho lin kt static char overviewKey;
NSArray *array = [[NSArray alloc] initWithObjects:@One, @Two, @Three, nil];
26
Bo co thc tp
NSString *overview = [[NSString alloc] initWithFormat:@%@, @First three numbers]; objc_setAssociatedObject(array, &overviewKey, overview, OBJC_ASSOCIATION_RETAIN);
To lin kt overview vo i tng array, ta truy xut i tng lin kt overview thng qua i tng array v kh NSString *associatedObject = (NSString )objc_getAssociatedObject(array, &overviewKey); 2.9 Selector Trong Objective-C, khi nim Selector c 2 ngha. N c th c dng n gin l ch n tn ca mt phng thc khi n c s dng trong m ngun mt thng ip gi n mt i tng. Bn cnh n cn ch n mt nh danh duy nht m thay th cho mt tn khi m ngun c bin dch Selector khi c bin dch c kiu l SEL. Tt c cc phng thc c cng tn th c cng selector. Ta c th s dng mt selector triu gi mt phng thc trn mt i tng, iu ny th hin kh cn bn mu thit k targetaction trong Cocoa. SEL setWidthHeight; setWidthHeight = @selector(setWidth:Height:); Ch th @selector cho php ta tham chiu n mt selector c bin dch hn l tn mt phng thc y . on m trn l mt selector cho phng thc setWidth:Height c assign cho bin SEL l setWidthHeight. trn trng hp ta tham chiu n mt selector thng qua ch th @selector, trong mt s trng hp ta c th chuyn t mt chui k t thnh mt selector trong thi im runtime bng phng thc NSSelectorFromString.
27
Bo co thc tp
setWidthHeight = NSSelectorFromString(aBuffer); V ngc li ta c th ly tn phng thc t mt selector thng qua phng thc NSStringFromSelector.
NSString *method; method = NSStringFromSelector(setWidthHeight); Mt selector bin dch ch nh mt tn phng thc ch khng thc thi phng thc. V d, c mt phng thc Display cho mt lp, c nhiu selector ging nhau cho phng thc Display cc lp khc, vi mc ch a hnh v rng buc ng. Nu c mt selector cho mi phng thc thc thi, th mt thng ip s khng khc mt li gi phng thc. Mt phng thc lp v mt phng thc th hin c cng tn c assign bi mt selector. Tuy nhin, bi v 2 phng thc ny phn bit domain (phm vi lp, phm vi i tng ca lp) nn s khng c s nhm ln gia 2 phng thc ny. Vic nh tuyn mt thng ip truy xut vo mt phng thc ch thng qua mt selector duy nht, v vy n i x nh nhau i vi cc phng thc c cng selecor. N pht hin kiu tr v ca phng thc v kiu d liu ca cc tham s thng qua selector. V vy, ngoi tr thng ip truyn vo cc b nhn kiu tnh, cn li vi cc rng buc ng n yu cu tt c cc tn phng thc thc thi phi c cng kiu tr v v c tham s cng kiu. (cc b nhn kiu tnh l ngoi l, trnh bin dch c th bit v cc phng thc thc thi t kiu lp). Mc d nh danh ca phng thc lp v phng thc th hin l cng mt selector, nhng chng c th c kiu tr v v kiu ca cc tham s khc nhau. Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 28
Bo co thc tp
Ba phng thc performSelector:, performSelector:withObject:, v performSelector:withObject:withObject:, nh ngha trong protocol NSObject ly cc nh danh SEL nh l cc tham s khi to. Tt c cc phng thc ny nh x trc tip vo thng ip phng thc. V d: [friend performSelector:@selector(gossipAbout:) withObject:aNeighbor]; Tng ng vi [friend gossipAbout:aNeighbor]; Hoc v d: id helper = getTheReceiver(); SEL request = getTheSelector(); [helper performSelector:request]; Cc phng thc c th bin i ti thi im runtime, nh trn b nhn helper c chn thng qua phng thc getTheReceiver v b nhn ny c yu cu thc hin phng thc request thng qua phng thc getTheSelector ti thi im runtime. Lu , khi mt b nhn buc phi thc hin mt phng thc m khng thuc phm vi ca mnh thng qua selector th ng nhin s xut hin li. V nhng cng vic ny thc thi thi im runtime nn hin nhin li s ch xut hin ti thi im chng trnh c thc thi. Qun l b nh
2.10
2.10.1 Cc nguyn tc qun l b nh: Nguyn tc c bn: Khi bn nm quyn s hu mt i tng, khi to i tng bng cc phng thc m trong tn bt u vi vi alloc hoc new hoc copy (v d, Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 29
Bo co thc tp
alloc, newObject hoc mutableCopy) hoc gi mt thng ip retain, bn phi c trch nhim gii phng quyn s hu i tng bng cch s dng release hoc autorelease. Bt k khi no bn nhn c mt i tng (khng phi t mnh khi to), bn khng c release n. Cc nguyn tc khc: Khi bn cn lu tr mt i tng c nhn nh mt property trong mt bin th hin, bn phi retain hoc copy n. (iu ny khng ng cho cho tham kho yu, nhng y l in hnh him). Mt i tng c nhn thng m bo vn c hiu lc trong phng thc m n c nhn (ngoi tr trong cc ng a lung v vi trng hp Distributes Objects). Phng thc c th tr v an ton i tng m n c triu gi. S dng retain trong vic kt hp vi release hoc autorelease khi cn thit bo v mt i tng khi hiu lc ca cc thng ip khng hp l bn ngoi. autorelease c ngha l gi mt thng ip release sau 2.10.2 Vn khi khi to i tng: Xt on code khi to i tng sau TestClass *ptr = [TestClass alloc]; [ptr init]; // Do something with the object if (ptr) Thot nhn qua c v v hi, phng thc alloc khi to mt vng nh cho i tng ptr, sau gi thng ip gi phng thc init cho i tng ptr, li c th xy ra y. Gi s dng lnh dng lnh [ptr init], phng thc init c li xy ra v tr v nil, tip theo dng lnh if, lc ny ptr vn khc Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 30
Bo co thc tp
nil mc d phng thc init tr v nil (nhng n khng c gn cho ptr), dn ti ngha ca phng thc to thc s khng cn na. Khi , on code sau s gii quyt c kh nng li trn
TestClass *ptr = [[TestClass alloc] init]; // Do something with the object if (ptr) Gi s init c li v tr v nil th ptr vn s c gn l nil, do dng lnh if s thc hin ng ngha ca n. ngha t v d ny l, ta lun lun phi tr v nil trong phng thc init nu c li khi to xy ra v lu phi kt hp 2 li gi phng thc alloc v init.
2.10.3 Release Nu bn khi to mt i tng s dng cch th cng alloc, bn cn phi release i tng sau . Bn khng nn thc hin release th cng mt i tng autorealse bi v ng dng c th s b crash nu bn lm iu .
// string1 will be released automatically NSString* string1 = [NSString string]; // must release this when done NSString* string2 = [[NSString alloc] init]; .. [string2 release];
31
Bo co thc tp
2.10.4 Retain Trong Objective-C, mi i tng c mt b m c s dng kim sot tt c cc tham chiu bi i tng hoc n c. bit c gi tr ca b m ny ta s dng thuc tnh retainCount [object retainCount]. Phng thc alloc, new, copy v retain u tng b m ny ln 1 v phng thc release gim b m ny i 1, khi b m c gi tr bng 0 th phng thc dealloc ca i tng s c gi. Bt c khi no mt i tng c nhu cu c s dng bi mt i tng khc n phi retain tng b m retainCount ln 1, v khi n khng cn s dng na th phi release gim b m retainCount i 1. Khi b m c gi tr bng 0 c ngha l n khng cn nhu cu s dng na, n s t hy bng phng thc dealloc.
2.10.5 Dealloc Phng thc dealloc c gi khi i tng ang c remove khi b nh. N thng c s dng nht khi gii phng tt c cc tham chiu ca cc bin th hin con ca i tng khi b nh. Hay ni cch khc, mt lp nu c cc bin th hin l cc i tng th trong phng thc dealloc ca lp phi thc hin gii phng cc bin th hin ny. - (void)dealloc { [childVar1 release]; [childVar2 release]; [super dealloc]; } Phng thc [super dealloc] c s dng thng bo cho lp cha thc hin vic dn dp (y l phng thc c nh ngha trong NSObject), Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 32
Bo co thc tp
nu khng gi phng thc ny, c th i tng s khng c remove khi b nh, s gy nn tnh trng chim b nh. Lu : Phng thc dealloc s khng c gi trong trng hp b dn rc c bt. 2.10.6 Tham chiu yu Retain mt i tng to ra mt tham chiu mnh n i tng . Mt i tng khng th dealloc cho ti khi tt c cc tham chiu mng c gii phng ht. Trong mt s trng hp, ta c th mun c mt tham chiu n i tng m khng cn tr vic i tng t gii phng chnh n, lc ny ta c th thit lp mt tham chiu yu n i tng. Mt tham chiu yu c to ra bng cch cha mt con tr tr n mt i tng m khng retain i tng . Tham chiu yu rt cn thit trong vic thit lp cc tham chiu vng. V d, i tng A v i tng B cn trao i thng tin vi nhau nn mi i tng cn mt tham chiu n i tng kia (v nh mi quan h gia 2 i tng cha con), nu nh chng ta retain i tng kia khi thit lp tham chiu th mi i tng ch c dealloc khi no kt ni ny t, tuy nhin kt ni ny ch t khi c mt i tng c dealloc m thi. Trong trng hp ny ta thy c li ch ca tham chiu yu. Chng ta phi tht cn thn khi truyn thng ip trong tham chiu yu, trong trng hp i tng nhn thng ip dealloc th ng dng c th s b crash. ng thi, trong mi quan h tham chiu yu, i tng c tham chiu n phi c trch nhim bo cho i tng kia bit khi n thc Khoa Cng ngh thng tin Trng HCN Tp. H Ch Minh 33
Bo co thc tp
hin dealloc, v d gi mt thng ip setDelegate: vi tham s nil cho i tng kia chng hn, trong trng hp i tng dealloc l mt Delegate ca i tng nhn thng ip.
2. Xy dng chng trnh: Nghip v: Khi mt hnh khch mun tm mt tuyn xe but i n a im cn thit, khi hnh khch s xc nh a im mnh ang ng (xc nh tn ng hnh khch ang ng) v tn ng hnh khch cn ti, t hnh khc s lu chn nhng tuyn xe but c i qua c 2 a im trn xem tuyn no ph hp vi mnh nht (cn c vo l trnh, gi v). Lc ER: Chng trnh h tr tra cu thng tin xe but nhiu tnh, thnh ph khc nhau. Trong mi thnh ph s c nhiu xe but v mi xe ch thuc mt thnh ph.
34
Bo co thc tp
T in d liu: THANHPHO Thuc tnh MATP TENTP XEBUYT Thuc tnh MAXE MATP TENXE TUYENDI CHITIET Rng buc Not null Not null M t M phn bit gia cc thnh ph Tn ca thnh ph
Rng buc Not null Not null Not null Not null Not null
M t M phn bit gia cc xe M phn bit gia cc thnh ph Tn ca xe but im khi hnh v im dng cui ca xe but M t chi tit nhng thng tin nh: cc tuyn ng i qua, thi gian hot ng, thi gia ch, gi v
M hnh quan h: THANHPHO (MATP, TENTP) XEBUYT (MAXE, MATP, TENXE, TUYENDI, CHITET)
35
Bo co thc tp
S dng chng trnh: 2.1. Giao din chnh: Giao din chnh ca chng trnh s lit k cc thnh ph c h tr tm tra cu thng tin xe but. Ngi dng thnh ph no th chn thnh ph tra cu.
2.2. La chn tuyn xe: Khi chn thnh ph ngi dng s thy hin ln danh sch ton b nhng tuyn xe ca thnh ph va chn. Ngi ng c th t tm kim trong danh sch c tuyn xe ph hp hoc s dng chc nng tm kim ca chng trnh tm kim mt cch nhanh chng hn.
36
Bo co thc tp
2.3. Hin th thng tin chi tit ca xe: Khi ngi dng chn vo 1 tuyn xe chng trnh s hin ra thng tin chi tit ca tuyn xe nh: L trnh, gi hot ng, thi gian ch, gi v
37
Bo co thc tp
2.4. Chc nng tm kim: Ngi dng c th s dng chc nng tm kim bng cch chn biu tng tm kim, khi hnh khch ch cn nhp tn ng vo tm kim chng trnh s tm ra nhng tuyn xe i ng .
38
Bo co thc tp
alloc]initWithRootViewController:obj]; navigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [[self navigationController] presentModalViewController:navigationController animated:YES]; [navigationController release]; [UIView commitAnimations]; } }
2.5.
Khi c thay i v thng tin cc tuyn xe but hoc c thm c tuyn xe but mi th ngi dng c th s dng chc nng update cp nht thng tin mi nhtt
39
Bo co thc tp
{ sqlite3_bind_text( compiledStatement, 1, [City1 UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_int(compiledStatement, 2, ID); } if(sqlite3_step(compiledStatement) != SQLITE_DONE ) { NSLog( @"Error: %s", sqlite3_errmsg(database) ); } else { NSLog( @"Update CityName id = %d", sqlite3_last_insert_rowid(database)); } sqlite3_finalize(compiledStatement); } } @catch (NSException * e) { NSLog(@"Exception: error in save data to table product -> %@", e); } @finally { sqlite3_close(database); } }
40
Bo co thc tp
SQLITE_TRANSIENT); } if(sqlite3_step(compiledStatement) != SQLITE_DONE ) { NSLog( @"Error Insert: %s", sqlite3_errmsg(database) ); } else { NSLog( @"Insert BusName id = %d", sqlite3_last_insert_rowid(database)); } sqlite3_finalize(compiledStatement); } } @catch (NSException * e) { NSLog(@"Exception: error in save data to table BusTable -> %@", e); } @finally { sqlite3_close(database); } }
41
Bo co thc tp
if(sqlite3_step(compiledStatement) != SQLITE_DONE ) { NSLog( @"Error: %s", sqlite3_errmsg(database) ); }else { NSLog( @"Update Detail id = %d", sqlite3_last_insert_rowid(database)); } sqlite3_finalize(compiledStatement); } } @catch (NSException * e) { NSLog(@"Exception: error in save data to table BusTable -> %@", e); } @finally { sqlite3_close(database); } }
Lc ER:
42
Bo co thc tp
T in d liu: TENLUAT Thuc tnh Maluat Tenluat CHUONG Thuc tnh Machuong Maluat Tenchuong Noidung M hnh quan h: TENLUAT (Maluat, Tenluat) CHUONG (Maluat, Machuong, Tenchuong, Noidung) S dng chng trnh: 2.1. Giao din chnh: Giao din ca chng trnh s lit k tn tt c cc b lut m chng trnh h tr. Ngi dng c th chn vo 1 b lut m mnh quan tm xem ni dung ca b lut . Rng buc Not null Not null Not null Not null M t M phn bit gia cc chng M phn bit gia cc b lut Tn chng ca b lut Ni dung ca chng lut Rng buc Not null Not null M t M phn bit gia cc b lut Tn ca cc b lut
43
Bo co thc tp
2.2. La chn b lut Khi ngi dng chn 1 b lut th chng trnh s lit k tt c cc chng ca b lut . Ngi dng c th chn 1 chng lut xem ni dung ca chng lut .
44
Bo co thc tp
2.3. Hin th ni dung chng Khi ngi dng chn 1 chng th chng trnh s hin ni dung ca chng lut
2.4. Hin th bin bo Khi chn b lut giao thng chng trnh s cho php ngi dng chn xem vn bn lut hoc xem h thng bin bo. Khi chn h thng bin bo chng trnh s hin th danh sch cc loi bin bo.
45
Bo co thc tp
Ngi dng chn loi bin bo cn xem chng trnh s hin th cc bin bo thuc loi bin bo
2.5.
Chc nng update Khi Cc b lut c thay i ni dung hay thm b lut mi th ngi dng c th update chng trnh theo tng b lut hoc update cho tt c cc b lut.
46
Bo co thc tp
Hm thm b lut:
-(void) InsertLaw:(int)ID Law:(NSString*)Law1 URL:(NSString*)URL1 { sqlite3 *database ; @try { [[SQLiteDataProvider instance] checkAndCreateDatabase]; NSString *databasePath = [[SQLiteDataProvider instance] databasePath]; if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { const char *sqlStatement = "insert into LAWS(Title, ID, Url) values(?,?,?)"; sqlite3_stmt *compiledStatement = nil; if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { sqlite3_bind_text( compiledStatement, 1, [Law1 UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_int(compiledStatement, 2, ID); sqlite3_bind_text( compiledStatement, 3, [URL1 UTF8String], -1, SQLITE_TRANSIENT); } if(sqlite3_step(compiledStatement) != SQLITE_DONE ) { NSLog( @"Error: %s", sqlite3_errmsg(database) ); }else { NSLog( @"Update Chapter id = %d", sqlite3_last_insert_rowid(database)); } sqlite3_finalize(compiledStatement); } } @catch (NSException * e) { NSLog(@"Exception: error in save data to table product -> %@", e); } @finally { sqlite3_close(database); } }
47
Bo co thc tp
48
Bo co thc tp
49
Bo co thc tp
2.6.
Khi ngi dng chn tab cng c chng trnh s hin th giao din tnh thu thu nhp c nhn, ngi dng cn nhp thu nhp trong 1 thng v s ngi ph thuc chng trnh s tnh ton ra s tin thu cn phi ng v s tin cn li.
50
Bo co thc tp
Mc
Hai
Ba
Nm
Su
10/02
Tm hiu v Objective c
Nguyn Thanh Tn
By CN
51
Bo co thc tp
Tun s: 02
Th Ngy
Ngi hng dn
Mc
Hai
Nguyn Thanh Tn
Ba
Nguyn Thanh Tn
Nguyn Thanh Tn
Nm
Nguyn Thanh Tn
Su
Nguyn Thanh Tn
By
CN
52
Bo co thc tp
Tun s: 03
Th Ngy
Ngi hng dn
Mc
Hai
20/02
Sa li app TaxiServices
Nguyn Thanh Tn
Ba
21/02
Nguyn Thanh Tn
22/02
Sa li app Vui
Nguyn Thanh Tn
Nm 23/02
Nguyn Thanh Tn
Su
24/02
Nguyn Thanh Tn
By CN
53
Bo co thc tp
Tun s: 04
Th Ngy
Ngi hng dn
Mc
Hai
27/02
Nguyn Thanh Tn
Ba
28/02
Nguyn Thanh Tn
29/02
Nguyn Thanh Tn
Nm
01/03
Nguyn Thanh Tn
Su
02/03
Nguyn Thanh Tn
By CN
54
Bo co thc tp
Tun s: 05
Th Ngy
Ngi hng dn
Mc
Hai
05/03
Nguyn Thanh Tn
Ba
Nguyn Thanh Tn
07/03
Nguyn Thanh Tn
Nm
08/03
Su
09/03
By CN
55
Bo co thc tp
Tun s: 06
Th Ngy
Ngi hng dn
Hai
12/03
Nguyn Thanh Tn
Ba
13/03
Nguyn Thanh Tn
Xy dng app LAW: Load 14/03 danh sch tn cc chng cho tng b lut
Nguyn Thanh Tn
Nm
15/03
Xy dng app LAW: Hin th Nguyn ni dung cho tng chng lut Thanh Tn
Su
Nguyn Thanh Tn
By
CN
56
Bo co thc tp
Tun s: 07
Th Ngy
Ngi hng dn
Hai
Xy dng app LAW: xy Nguyn 19/03 dng cha nng update tn cc Thanh Tn b lut Xy dng app LAW: xy Nguyn 20/03 dng cha nng update tn cc Thanh Tn chng lut Xy dng app LAW: xy 21/03 dng cha nng update ni dung cho tng chng. Xy dng app LAW: xy 22/03 dng chc nng xem bin bo giao thng Xy dng app LAW: xy 23/03 dng tin ch tnh thu thu nhp c nhn
Ba
Nguyn Thanh Tn
Nm
Nguyn Thanh Tn
Su
Nguyn Thanh Tn
By CN
57
Bo co thc tp
Tun s: 08
Th Ngy
Ngi hng dn
Hai
Xy dng app LAW: Test v 26/03 sa li chc nng Xem bin bo giao thng Xy dng app LAW: Test v 27/03 sa li chc nng Tnh thu thu nhp c nhn
Nguyn Thanh Tn
Ba
Nguyn Thanh Tn
Nguyn Thanh Tn
Nm
Nguyn Thanh Tn
Su
30/03
Nguyn Thanh Tn
By
CN
58
Bo co thc tp
Tun s: 09
Th Ngy
Ngi hng dn
Hai
02/04
Ba
03/04
Nguyn Thanh Tn
Nguyn Thanh Tn
Nm
05/04
Nguyn Thanh Tn
Su
06/07
Nguyn Thanh Tn
By CN
59
Bo co thc tp
Tun s: 10
Th Ngy
Ngi hng dn
Mc
Hai
09/04
Nguyn Thanh Tn
Ba
Nguyn Thanh Tn
Nm
Su
By
CN
60