Cơ bản về hàm, class trong Objective C

Trong bài viết này, mình sẽ giới thiệu về 1 khái niệm mới “hàm ” và  “class” trong  Objective C .  Mình sẽ giúp các bạn biết cách khai báo một hàm, class, cách gọi hàm , gọi class, hiểu về tính chất của class, Cách truyền tham số cho hàm…
Khởi tạo dự án mới đặt tên:  Screen Shot 2016-07-11 at 2.55.46 PM

 

Đầu tiên mình sẽ giới thiệu về hàm trong Objective C : làm việc trên file ViewController.m
Cách khai báo hàm tổng quát:

-(void) tênHàm{
   // thực thi các dòng code.
}
  •  Đơn giản khai báo hàm không có tham số truyền vào!
-(void) thongTin{
    NSLog(@"thong tin");
    
}
  •  Hàm có tham số truyền vào:

Tổng quát:Đối với nhiều tham số truyền vào, (kiểu dữ liệu)tênBiến1 :(kiểu dữ liệu)tênBiến2

lưu ý: Sau tên Biến phải có dấu cách xong mới đến dấu ‘:

-(void) tênhàm:(kiểu dữ liệu)tênBiến1 nhắcNhở:(Kiểu dữ liệu)Tên biến 2{
}

ví dụ: Tính hiệu của 2 số soA và soB!

-(void) hieu:(int)soA :(int)soB{
    int hieu=soA-soB;
    NSLog(@"hieu:%d",hieu);
}

ví dụ: Trả về name với email.

-(void)chuoiKyTu:(NSString *)name :(NSString*)email{
    NSLog(@"name:%@",name);
    NSLog(@"Email:%@",email);
}
  •  Hàm có tham số truyền vào thêm gợi ý chức năng của hàm:

đây là tính năng khác biệt của Objective C so với các ngôn ngữ khác!

Khai báo tổng quát:

-(void) tênhàm:(kiểu dữ liệu)tênBiến1 nhắcNhở:(Kiểu dữ liệu)Tên biến 2{
}

lưu ý: Sau tên Biến phải có dấu cách xong đến nhắc nhở mới đến dấu ‘:

ví dụ: Tổng của 2 số: nhắc nhở là “Cong”.

-(void) tong:(int)soA Cong:(int)soB{
    int tong=soA+soB;
    NSLog(@"tong:%d",tong);
}

=> nhắc nhở giúp chúng ta hiểu về chức năng của hàm!

Để gọi hàm trong Objective C:
Tổng quát:

[self tênHàm];

Ví dụ các hàm khai báo bên trên:
ex1 : Gọi hàm thongTin:

[self thongTin];

ex2: Tính hiệu của 2 số soA và soB:

[self hieu:7 :3];

ex3:Trả về name với email :

[self chuoiKyTu:@"binh" :@"maibinhpro89@gmail.com"];

ex4:Tổng của 2 số: nhắc nhở là “Cong” :

[self tong:3 Cong:5];

 => Kết quả của các hàm trên là:

thong tin
tong:8
hieu:4
name:binh
Email:maibinhpro89@gmail.com

Tiếp theo mình sẽ giới thiệu về class trong Objective C.

Ở đây mình sẽ giới thiệu các bạn cách khai báo và sử dụng class, mình không đi sâu ý nghĩa class kế thừa … ngôn ngữ nào ý nghĩa cũng giống nhau 🙂  
=>Để tạo một class: newFile -> đặt tên sinhVien kế thừa từ NSObject!Screen Shot 2016-07-11 at 2.49.21 PM

 

Cách khai báo class:

@interface Tênclass : NSObject
@end

NSObject là lớp gốc của hầu hết các Mục tiêu-C phân cấp lớp. Qua NSObject , đối tượng thừa kế một giao diện cơ bản cho các hệ thống thời gian chạy và khả năng để hành xử như các đối tượng Objective-C.

tại file sinhsinhVien.h

ví dụ: Class sinh viên:

@interface sinhVien : NSObject
@end

 Để khai báo thuộc tính sử dụng từ khoá:

@property kiểudữliệu tên thuộc tính.
– (void) tênPhươngThức => đây là thuộc tính bình thường truy xuất thông qua đối tượng gọi đến thuộc tính của nó.

+(void) tênPhươngThức =>đây là thuộc tính tĩnh (static) có thể truy xuất thông qua class gọi đến thuộc tính, đối tượng gọi đến class.
-(instancetype) Hàmkhởitạo: truyền tham số. => giống contructor trong java đây là hàm khởi tạo sẽ được gọi khi tạo một đối tượng có tham số (của 1 class).

-Hàm init (giống  contructor trong java) là hàm không tham số, ngay khi tạo một đối tượng hàm này sẽ được gọi, từ IOS7 trở lên xcode tự tạo hàm không có tham số.

– get set thuộc tính, IOS7 xcode tự động gen .
ví dụ tạo một class sinhVien:

@interface sinhVien : NSObject
@property int tuoi;
@property NSString *ten,*email;
-(void) thongtin;// ham
+(void) diemSV;// hàm static
-(instancetype)initSinhVien:(NSString*)tenSV :(int)tuoiSV :(NSString*)email;
@end

tại file sinhvien.m thêm đoạn mã sau để viết code cho hàm init , hàm get set,hàm phương thức.

mình đã giải thích từng dòng code !!!

// sinh ra bien the hien va sinh ra  get set!mac dinh duoc ta ra.
@synthesize ten=_ten;
@synthesize tuoi=_tuoi;
@synthesize email=_email;

//contructor mac dinh! mac dinh duoc ta ra
- (instancetype)init
{
    self = [super init];
    if (self) {
        NSLog(@"init");
    }
    return self;
}
// contructor co tham so!
-(instancetype)initSinhVien:(NSString*)tenSV : (int)tuoiSV :(NSString *) email{
    self=[super init];
    self.ten=tenSV;
    self.tuoi=tuoiSV;
    self.email=@"maibinX";
    return  self;
}
//  chi dung doi tuong de goi!

-(void) thongtin{
    NSLog(@"thong tin");
    
}// ham static co the dung class de goi ra ! ham static khong su dung duoc cac thuoc tinh binh thuong
+(void) diemSV{
    NSLog(@"diem sinh viên");
}

 Tạo một đối tượng của class trong Objective C, cách gọi thuộc tính và phương thức class. 

Vào file ViewController.h

#import "sinhVien.h"

Vào file ViewController.m trong -(void)viewDidLoad{} thêm đoạn mã:

- (void)viewDidLoad {
    // khai báo đối tượng không có tham số.
    sinhVien *sv=[[sinhVien alloc]init];
    [sv setTen:@"binh"];
    [sv setEmail:@"maibinhpro"];
    [sv setTuoi:22];
    NSLog(@"tên:%@, tuổi:%d, email: %@",[sv ten],[sv tuoi],[sv email]);
    [sv thongtin];
    [sinhVien diemSV];

}

Tạo một đối tượng không tham số:

ngay lật tức init không tham số được gọi. và log ra “init”. Tiếp theo set các giá trị thuộc tính cho đối tượng. NSLog ra thông tin sv. Cuối cùng gọi đến 2 phương thức của đối tượng: phương thức bình thường  [sv thongTin],  phương thức (static) [sinhVien diemSV].

kết quả :

init
tên:binh, tuổi:22, email: maibinhpro
thong tin
diem sinh viên

Tạo một đối tượng có tham số:
-(void)viewDidLoad{} thêm đoạn mã:

//khai báo đối tượng có tham sô.
    sinhVien *sv1=[[sinhVien alloc]initSinhVien:@"dat" :23 :@"maidat"];
    NSLog(@"tên:%@, tuổi:%d, email: %@",[sv1 ten],[sv1 tuoi],[sv1 email]);
    [sinhVien diemSV];
    [sv1 thongtin];

ngay lật tức init có tham số được gọi. Và tự set các giá trị cho thuộc tính của đối tượng. NSLog ra thông tin sv. Cuối cùng gọi đến 2 phương thức của đối tượng: phương thức bình thường  [sv thongTin],  phương thức (static) [sinhVien diemSV].

kết quả:

tên:dat, tuổi:23, email: maidat
diem sinh viên
thong tin

 

full link code

http://www.mediafire.com/download/ot6f3ssa9d7wr6b/functionClassBlock.zip

Có gì trong phần tiếp theo:

bài tiếp theo mình sẽ giới thiệu cách sử dụng block, một khái niệm mới rất tuyệt vời trong Objective C.

  • Nếu các bạn muốn biết thêm các kỹ thuật khác về ios, các bạn có thể tham khảo thêm các khóa học ios tại đây.

Add a Comment

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