Skip to main content

Bài 6: Hàm - Class

Bài 6: Hàm - Class
Chào các bạn.
Phần này rất quan trọng, sẽ ứng dụng rất nhiều trong quá trình bạn viết ứng dụng sau này.
Bạn cần phải thực hành nhiều hơn kể từ phần này trở đi.
Chúng ta không bàn đến những phương thức xây dựng hàm cũ, ở đây mình dùng Xcode mới nhất, nên cách tạo hàm cũ, mình không giới thiệu. Bạn nào muốn tìm hiểu thì có thể tự tìm hiểu với bác zai của mình: Google.

1. Hàm, cách khởi tạo, cách sử dụng:
Hàm trong Objective-C cũng tương tự như hàm ở các ngôn ngữ khác về tác dụng.
Hàm được dùng để thực hiện một loạt các công việc định sẵn mà các công việc này được dùng nhiều lần trong toàn bộ chương trình.
Ví dụ: Ở một lớp học, mỗi lần họp phụ huynh là cần phải chuẩn bị nhiều thứ: giấy mời, khăn trải bàn, bình hoa, chỗ để xe, đón tiếp phụ huynh học sinh, ... Nhưng một năm, họp phụ huynh rất nhiều lần, cho nên việc chuẩn bị cũng được thực hiện nhiều lần. Để dễ dàng, giáo viên chủ nhiệm lập ra 1 tổ, phân công công việc cụ thể cho từng tổ viên, cứ đúng đến lúc chuẩn bị họp phụ huynh là tổ đó có trách nhiệm chuẩn bị chu đáo cho buổi họp. Tổ đó cũng tương tự như 1 hàm.
Hoặc ví dụ: Một ứng dụng chơi đánh cờ. Cứ mỗi con cờ được đi, ứng dụng tự động phát 1 đoạn nhạc. Mà trong 1 ván cờ có rất nhiều nước cờ được đi, cho nên việc phát nhạc được thực hiện nhiều lần, lúc đó, người ta viết 1 Hàm có nhiệm vụ phát nhạc. Và cứ đến khi thấy có con bài nào được đánh ra thì ngay lập tức gọi Hàm phát nhạc.

Cách tạo Hàm (Hàm thực thi):
Hàm thực thi là Hàm chỉ thực hiện các lệnh bên trong hàm đó. Đây là dạng cơ bản nhất của Hàm trong Objective-C.

Code:
-(void)HamGhiChu {
    // Các lệnh được đặt trong này
    NSLog(@"Ghi ghi chú ra cửa sổ Logs");
}

// Dấu trừ là bắt buộc. Nó chỉ cho trình biên dịch biết rằng đây là hàm thực thi.
// void nghĩa là Hàm chỉ thực thi và không trả về giá trị nào cả
// HamGhiChu nghĩa là tên của Hàm. Quy tắc đặt tên Hàm cũng tương tự với Quy tắc đặt tên biến.


Cách tạo Hàm thực thi có tham số:
Code:
-(void)HamGhiChu:(NSString *)CauGhiChu {
    NSLog(@"Ghi chú: %@", CauGhiChu);
}

// Tương tự như Hàm thực thi không có tham số.
// Dấu Hai chấm ( : ) là bắt buộc.
// Tham số ở đây là một chuỗi, nghĩa là khi gọi và chạy Hàm này, bạn phải truyền vào Hàm 1 chuỗi nào đó.
Cách tạo Hàm thực thi có tham số và trả về kết quả:
Code:
-(NSString *)KetQuaXepLoai:(int)DiemTongKet {
    if (DiemTongKet > 8) {
        return @"Được học sinh Giỏi!";
    } else {
        return @"Không được học sinh Giỏi.";
    }
}
// Hàm này trả về mỗi chuỗi hoặc là @"Được học sinh Gii." hoặc là @"Không được học sinh Gii!" dựa vào việc kiểm tra tham số đã truyền vào Hàm.
// return là bắt buộc đối với Hàm này.
// Khi truyền tham số vào hàm, các tham số có kiểu là Đối tượng (thông thường có NS ở trước tên) thì phải có dấu sa8 (*)


Cách gọi hàm:
Đối với các Hàm chỉ thực thi mà không có tham số, ta chỉ cần gọi đơn giản như bên dưới:
[selfHamGhiChu];
Còn đối với các Hàm thực thi có tham số, dĩ nhiên bạn phải truyền tham số vào các Hàm. Đối với các Hàm loại này, bạn chỉ cần gõ self cách ra 1 cái và gõ tên hàm, các gọi ý sẽ giúp bạn tìm được hàm bạn muốn gọi, sau đó chỉ việc ENTER là chèn vào.
[selfKetQuaXepLoai:2];


2. Class (Lớp - Đối tượng):
Bạn nháy phải chuổt vào Project bên tay trái, chọn "New File"
Trong cửa sổ hiện ra, chọn Cocoa -> Objective-C Class -> Next
Đặt tên Class là Class_Bai6. Chọn Subclass of là NSObject -> Next -> Create.
Vậy là bạn đã tạo xong 1 class có tên là Class_Bai6.

[​IMG]
[​IMG]

Lúc này, Xcode sẽ tạo ra 2 file, Class_Bai6.h và Class_Bai6.m
- Class_Bai6.h là file Header. Dùng để khai báo biến, khai báo các Hàm tuỳ chọn.
- Class_Bai6.m là file Main. Dùng để triển khai nội dung Các Hàm.
Bài toán ví dụ: Viết chương trình nhập vào 1 số nguyên lớn hơn 0 và xem số đó có chia hết cho 2 hay không.
Bấm vào File Class_Bai6.h, khai báo một Hàm dùng để kiểm tra.

Code:
@interface Class_Bai6 : NSObject
 
- (BOOL)KiemTraChiaHetCho2:(int)SoNhapVao;
// Hàm này trả về kiểu boolen (đúng - sai)
// Tên Hàm: KiemTraChiHetCho2 (Kiểm tra chia hết cho 2)
// Tham số có kiểu là int (integer - số nguyên), có tên biến là SoNhapVao
 
end

Bấm vào File Class_Bai6.m để triển khai nội dung Hàm.
Triển khai nội dung Hàm kiểm tra chia hết cho 2 như sau:
Code:
- (BOOL)KiemTraChiaHetCho2:(int)SoNhapVao {
    if (SoNhapVao != 0) { // Kiểm tra số nhập vào có khác không hay không.
    // Trường hợp số nhập vào khác 0
        if ((SoNhapVao % 2) == 0) { // Kiểm tra xem số nhập vào có chia hết cho 2 hay không
            return TRUE;
        } else {
            return FALSE;
        }
    } else {
    // Trường hợp số nhập vào là 0 (bằng 0)
        return FALSE;
    }
}

[​IMG]

Bạn hãy thử bấm Run xem.
Lúc này Class của bạn vẫn chưa chạy vì nó chưa được triệu gọi.
Để triệu gọi Class vừa tạo, bạn bấm vào file main.m
Bên dưới dòng #import <Foundation/Foundation.h>
Bạn gõ vào #import "Class_Bai6.h", Đây là dòng lệnh nhập Class Class_Bai6 vào.
Trong Hàm main, viết đoạn code để cấp phát bộ nhớ cho Hàm được tạo bằng Class Class_Bai6 và tiến hành làm công việc giải bài toán ví dụ.

Code:
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Class_Bai6 *KiemTra = [[Class_Bai6 alloc] init];
 
        // Kiểm tra xem 10 có chia hết cho 2 hay không
        [KiemTra KiemTraChiaHetCho2:10] ? NSLog(@"Chia hết cho 2.") : NSLog(@"Không chia hết cho 2.");
 
        // Kiểm tra xem 13 có chia hết cho 2 hay không
        int So = 13;
        [KiemTra KiemTraChiaHetCho2:So] ? NSLog(@"%i chia hết cho 2.", So) : NSLog(@"%i không chia hết cho 2.", So);
    }
    return 0;
}

[​IMG]

Và bây giờ là chạy thử xem kết quả thế nào nhé.
Vậy là trên đây bạn đã hiểu về Hàm là như thế nào và Class là như thế nào. Hiểu sơ qua thôi, bây giờ làm bài tập giải mỏi nhé.

3. Bài tập:
Yêu cầu dùng Class và Hàm để giải các bài tập bên dưới.
Giải xong, bạn đăng các Hàm của bạn viết ra lên đây cho mọi người cùng tham khảo và góp ý nhé.

1. Viết ứng dụng xuất ra cửa sổ Log các số nguyên lớn hơn 0 chia hết cho 3 và nhỏ hơn số n. Với n là số bạn tự chọn.
2. Viết ứng dụng tính Tổng và Tích các số từ n đến m (n và m tự chọn sao cho n < m) và xuất ra cửa sổ Log.
3. Viết ứng dụng in ra cửa sổ Log 100 chữ cái bất kỳ (với chữ cái bất kỳ cho bạn tự chọn).
4. Viết ứng dụng giải phương trình bậc 1 với các tham số của phương trình do bạn tự chọn.
ax + b = 0
5. Viết ứng dụng giải phương trình bậc 2 với các tham số như sau: (ax^2 + bx + c = 0)
a = 5, b = -6, c = +1

Chúc các bạn vui.

Project mình đã nén lại và đính kèm cho các bạn tiện theo dõi.
Link: http://www.mediafire.com/folder/jjwb8z0gglzb3/Bài_6

​Nguồn: Bài viết được biên soạn từ tinhte.vn

Comments

  1. Cái này k có máy mác thì dùng máy ảo à ??

    ReplyDelete
    Replies
    1. đúng rồi bạn!
      nếu có máy Mac thì code thẳng còn sài win thì phải cài máy ảo OS để code iOS

      Delete

Post a Comment

Popular posts from this blog

Socket Android Client to PC Server C#

Using AsynCallback C# Android Client connect Server C# Source code:  http://ow.ly/OlXj309O1mj c# socket multi client, socket c# example, socket server c#, socket c# tutorial, asynchronous socket in c#, c# socket multiple clients, c# socket server multiple clients, Download source code:  Click Here

Bài tập thuật toán C/C++ Và Tuyển tập đề thi olympic

Gồm: +  Các thuật toán của Lê Minh Hoàng + Tuyển tập các đề thi olympic tin học sinh viên Link down: Tại đây

Mẹo và giải thuật C# dành cho người mới bắt đầu

Với nội dung kiến thức cơ bản nhất. Gồm 31 trang với những nội dung:  1. Kết nối CSDL SQL  -----------How to Create SQL Connection in C# 2. Đọc ghi file text với C#  -----------How to Write Text to a Txt File in C# -----------How to Read Text from a TXT File 3. Xóa Cookie C# -----------How to Delete Cookie Using C# 4. Gửi main sử dụng tài khoàn Gmail với C# -----------How to Send Email Using Your Gmail Account in C# 5. Kiểm tra ký tự nhập vào từ bàn  phím -----------How to Check If a Key Is Pressed In C# 6. Đổi tên file trong C# -----------How to Rename a File Using C# 7. Vô hiệu hóa chuột trong ô textbox C# -----------How to Disable Right Click in C# Textbox 8. Chọn tất cả trong listbox -----------How to Add Select All Button or Checkbox in CheckedListBox 9. Tạo mới thư mục bằng C# -----------How to Create a New Folder Using C# 10. Lấy các tiến trình đang chạy C# ----------- How to Get List of All the Running  Processes in C# 11. Tải tập tin với C# ------