Tải bản đầy đủ (.docx) (19 trang)

[Bài Học Số 2] Cơ Bản Objective Cx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (115.5 KB, 19 trang )

1.1. Lớp
1.1.1. Các khái niệm cơ bản
1.1.1.1. Định nghĩa lớp
Một lớp trong Objective-C được định nghĩa gồm 2 file thành phần tương tự C, C++. Một file
*.h định nghĩa trước các biến thành phần và tên các phương thức, file *.m định nghĩa phần
thực thi cho các phương thức trong file *.h
File ClassName.h
PHP Code:
#import <headerFile.h>
@interface ClassName {
variable1 declaration;
variable2 declaration;
}
method1 declaration;
method2 declaration;
@end
Objective-C sử dụng từ khóa @interface để khai báo một tên lớp trong file h. Từ khóa @end
được sử dụng ở cuối phần khai báo.
File ClassName.m
PHP Code:
#import “ClassName.h”

@implementation ClassName
-method 1 //triển khai phương thức 1
-method 2 // triển khai phương thức 2
@end
Objective-C sử dụng từ khóa @implementation để khai báo phần thực thi thực sự của lớp
trong file m. Từ khóa @end được sử dụng ở cuối phần khai báo.
Ví dụ:
PHP Code:
MyClass.h


@interface MyClass {
int a;
int b;
}
-(void) setvara : (int) x;
-(void) setvarb : (int) y;
-(int) add;
@end
MyClass.m
PHP Code:
#import”MyClass.h”

@implementation MyClass
-(void) setvara int) x {
a=x;
}
-(void) setvarb int) y {
b=y;
}
-(int) add {
return a+b;
}
@end
1.1.1.2. Thuộc tính
Cú pháp khai báo thuộc tính:
PHP Code:
[Access Privilege] TypeName varName;
Ví dụ
PHP Code:
@private

int att1;
NSString str1;
@protected
int att2;
@public
NSString str2;
int att3;
Mặc định khi không sử dụng từ khóa quyền truy xuất là @protected
1.1.1.3. Phương thức
Cú pháp định nghĩa một phương thức
PHP Code:
[Access Privilege](return_type) methodname: (type1) para1 : (type2) para2 (…);

Gọi phương thức
PHP Code:
[object methodname:para1 : para2…];
Ví dụ:
Khai báo
PHP Code:
-(MyClass*) constructor: (int) a : (int) b;
Triển khai
PHP Code:
-(MyClass*) constructor: (int) a : (int) b {
self = [super init];
if(self) {
var1 = a;
var2 = b;
}
return self;
}

}
Lời gọi phương thức như sau
PHP Code:
[myClassObject constructor: 100 : 200];
Trong Objective-C chỉ có 2 khái niệm quyền truy xuất đến phương thức: truy xuất hoàn toàn
qua lớp (public static) và truy xuất hoàn toàn qua đối tượng (public)
Objective-C qui định phần định nghĩa truy xuất như sau
Phương thức truy xuất thông qua tên lớp sẽ có ký hiệu là dấu +
Phương thức truy xuất thông qua đối tượng sẽ có ký hiệu là dấu –
PHP Code:
@interface MyClass: NSObject
-(MyClass*) staticMethod: (int) a : (int) b;
-(MyClass*) publicMethod: (int) a : (int) b;
@end
Trong trường hợp phương thức có nhiều tham số, và để thể hiện được ý nghĩa của các tham
số trong lời gọi phương thức, Objective-C cho phép một cú pháp khai báo khác cho phương
thức như sau:
PHP Code:
[Access Privlilege](return_type) methodPara1: (type) para1 andPara2: (type) pa
ra2;
Lời gọi phương thức khi đó sẽ như sau:
PHP Code:
[object methodPara1: value1 andPara2: value2];
Ví dụ:
PHP Code:
-(void) setX: (int) x Y: (int) y;
PHP Code:
-(void) setX: (int) x Y: (int) y {
var1 = x;
var2 = y;

}
PHP Code:
[myObject setX: 15 Y: 20];
1.1.2. Kế thừa
Tính kế thừa trong Objective-C tương tự trong các ngôn ngữ khác như C++,…
PHP Code:
#import “SuperClass.h”
#import <headerFile.h>

@interface ClassName:SuperClass {
variable1 declaration;
variable2 declaration;
}
method1 declaration;
method2 declaration;
@end
Ví dụ:
PHP Code:
#import<Foundation/NSObject.h>

@interface MyClass:NSObject {
int a;
int b;
}
-(void) setvara : (int) x;
-(void) setvarb : (int) y;
-(int) add;
@end
Trong Objective-C, thực sự tất cả các lớp khi tạo ra đều kế thừa từ lớp NSObject.
1.1.3. Phương thức tạo

Trong Objective-C không có khái niệm phương thức tạo cho một lớp. Tất cả các đối tượng
của một lớp phải được cấp phát thông qua phương thức alloc và init.
PHP Code:
MyClass *myObject = [[MyClass alloc]init];
Trong đó phương thức alloc là cấp phát vùng nhớ, còn phương thức init như là một phương
thức tạo mặc định trong Objective-C, được định nghĩa trong lớp NSObject.
PHP Code:
-(id) init;
Ta thường định nghĩa lại phương thức tạo có tham số của một lớp như sau:
PHP Code:
#import “SuperClass.h”
#import <headerFile.h>

@interface MyClass: NSObject {
int var1;
int var2;
}
-(MyClass*) constructor: (int) a : (int) b;
@end
PHP Code:
#import “MyClass.h”

@implementation MyClass
-(MyClass*) constructor: (int) a : (int) b {
self = [super init];
if(self) {
var1 = a;
var2 = b;

×