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

Tags:

Share:

2 Nhận xét

Categories

. . . 1 [English | DVD] Trọn Bộ DVD Effortless English 3 Ajax 1 Andengine 3 Android 41 Android Studio Cài đặt và phím tắt thông dụng 1 API 1 App Android 1 Applicaiton Chat Multi Client 1 ASP.NET 9 Bài tập lập trình C/C++ có lời giải 1 Bài tập thuật toán C/C++ Và Tuyển tập đề thi olympic 2 Bắt đầu Học Lập Trình 4 Blogger 2 C/C++ 16 C# 21 Câu hỏi phỏng vấn Android 1 Cocos2d-JS 3 Cocos2d-x 3 Code game android 3 Công Cụ Lập Trình 13 Công nghệ 3 Cosos2d 1 CSS 1 Cuộc sống 15 Custom Button trong Android 2 Design Patterns 3 DevExpress 1 Đồ Án 1 DOREMON - NOBITA 2 Dự án 1 Ebook Android 1 English 8 Example Custom Android 1 facebook 1 Fedora 2 Freelancer 1 Game Android 4 Game Android AndEngine 1 Giới thiệu về Ajax 1 Hiệu ứng lắc trong android 1 Hướng dẫn cài đặt Mac OS trên VMware 1 Hướng dẫn download tài liệu miễn phí của website tailieu.vn 1 Hướng dẫn lập trình android 11 Hướng dẫn lập trình Windows Phone 3 Hướng đối tượng 2 Internet được khôi phục 1 Internet of Things 1 iOS 33 Java 9 Kiểm thử phần mềm 1 Kinh nghiệm lập trình 17 Kỹ Năng 1 Lập trình Android FPT Software Training 1 Lập Trình Game Đa Nền Tảng 2 Lập trình game mobile 2 Lập trình iOS FPT Software Training 1 Lập trình mạng 2 LẬP TRÌNH VIÊN CHUYÊN NGHIỆP TRÊN THIẾT BỊ DI ĐỘNG 2 Laptop 1 Libgdx 1 LinQ 3 Linux 6 Load CSDL SQL server ASP.NET 1 Lỗi Eclipse Ctr + Space 1 Mạng Xã Hôi 1 máy thật PC 1 Mbook TIN HỌC A 1 Mbook TIN HỌC B 1 mỗi bài 20 câu 1 NGAN-HANG-DE-THI-TRAC-NGHIEM-ASP.NET 1 Nguyên tắc ngón tay cái trong thiết kế ứng dụng cho điện thoại 1 Nhập môn lập trình C 14 Những câu hỏi phỏng vấn "xương" nhất 1 Những điểm mới kỳ thi THPT quốc gia 2015 1 Object C 1 Phần mềm 3 PHP 2 Phương pháp luyện thi TOEIC 1 Python 2 Review Game 1 SEO 4 Share Acc Fshare 1 Share VIP Miễn phí 1 Sinh viên mới tốt nghiệp – viết gì trong CV 1 Socket Android Client to PC Server C# 2 Socket Chat nhiều Client với server C# 2 Source code 4 Source code game C# 1 Source code game iOS 2 T3H-KHTN 7 Tài Liệu Android 7 Tài Liệu C# 4 Tài liệu hướng dẫn lập trình game với cocos2d-x 1 Tài Liệu iOS 7 Tài Liệu IT 3 Tài Liệu Java 2 Tài liệu Lập trình iOS Tiếng Việt đầy đủ TTTH đại học khoa học tự nhiên 1 Tài Liệu PHP 1 TÀI LIỆU THIẾT KẾ SỐ 1 Tài Liệu Windows Phone 1 Tạo Group Mail Google 1 Tạo hiệu ứng trong lập trình iOS 1 Tạo tên CoCaCoLa 1 Thắc mắc C/C++ 3 THẬP PHÂN sang NHỊ PHÂN không sử dụng MẢNG 1 Thiết kế giao diện Android - App Calculation Android Studio 1 Thiết kế giao diện phần mềm 1 Thuật ngữ cơ bản trong lập trình game AndEngine 1 Thuật toán 5 Thuật toán điều phối FCFS 1 Tiếng Anh 2 Tin Tức 1 Toàn bộ tài liệu ĐTVT 5 năm học 1 Tổng hợp những nơi người lái xe hay bị mắc lỗi tại TPHCM 1 Tutorials Android 2 Tuyến cáp quang AAG đã sửa xong 1 Unity 1 Vim 1 Visual Studyo 2013 1 WEB 1 Website nén JS và CSS tốt nhất 1 Websites Developer 2 Windows 10 Technical Preview 1 Windows Phone 5 WPF 1 XAMARIN 1 Xóa project appcompat_v 1