Phần 1: “Lần đầu” với lập trình Objective-C


Phần 1: “Lần đầu” với lập trình Objective-C
Phần 2: “Khám phá” OOP trong Objective-C
Phần 3: “Quan hệ” giữa các đối tượng trong Objective-C
Phần 4: “Tự sướng A2Z” với một chương trình Objective-C hoàn thiện
Phần 5: “Vật lộn” với quản lý bộ nhớ trong Objective-C
Phần 6: Chuẩn bị “lên đỉnh” với iPhone application

Chúng tôi rất vui vì các bạn đọc seri bài tự học Objective-C. Seri này gồm 6 bài viết rất chi là đơn giản giúp cho các bạn LTV dù chỉ có những kỹ năng lập trình cơ bản cũng sẽ dễ dàng hiểu Objective-C và nhanh chóng xây dựng được những chương trình đơn giản.  Đừng chần chừ gì nữa, chúng ta cùng bắt tay vào học ngay nào!

Objective-C là gì?

Nếu bạn đang đọc bài viết này thì tôi có thể chắc chắn gần như đến 99% là bạn đã có chút ít kinh nghiệm liên quan đến lập trình cũng như đã biết 1 vài ngôn ngữ lập trình thông dụng như C hay Java. Tuy nhiên nếu bạn là fresher hay beginner thì cũng chả sao bởi vì ai trong cuộc đời mà chả có “lần đầu”. Nào là “lần đầu tập đi”, “lần đầu tập nói”, lớn hơn một chút thì “lần đầu tập yêu” và rồi tiếp theo là “lần đầu lập trình”; đúng là “lần đầu” thì bỡ ngỡ thật nhưng từ lần sau chắc sẽ ổn hơn (chúng tôi hy vọng thế!!!). Tất cả điều chúng tôi mong đợi đó là “độ máu” của các bạn với MacOSObjective-C. Vậy Objective-C là gì? và nó có giống như C không?

Objective-C là một ngôn ngữ lập trình hướng đối tượng (OOP) được xây dựng dựa trên ngôn ngữ lập trình C. Tuy nhiên ta phải thấy sự khác nhau giữa CObjective-C ở chỗ Objective-C là ngôn ngữ lập trình hướng đối tượng còn C lại là ngôn ngữ lập trình hướng thủ tục. Objective-C là ngôn ngữ chính được sử dụng để phát triển hệ điều hành MacOS X cũng như iOS (hệ điều hành chạy trên các thiết bị iPhone, iPod hay iPad). Thực chất, nó là ngôn ngữ được dùng để phát triển một hệ điều hành khác mà Apple đã mua về, NeXTSTEP, và hệ điều hành này đã trở thành một phần rất quan trọng giúp cho việc hình thành hệ điều hành chính thức MacOS của Apple sau này.

Do Objective-C được phát triển từ C nên chúng ta có thể thoải mái sử dụng C trong chương trình viết bằng Objective-C và tất nhiên chương trình sẽ chạy ngon lành. Objective-C compiler sẽ chuyển tất cả mã lệnh viết bằng C sang thành mã biên dịch bằng Objective-C. Chính vì vậy mà Objective-C có đầy đủ sức mạnh của ngôn ngữ C và những cải tiến của một ngôn ngữ lập trình hướng đối tượng hiện đại.

Nếu vẫn còn cảm thấy mơ hồ thì hay ghi nhớ câu thần chú như sau: tất cả những thứ C có thể làm được thì Objective-C cũng sẽ làm được, tuy nhiên chiều ngược lại chưa chắc đã đúng.

Bạn cần phải chuẩn bị những gì để học Objective-C?

Trong suốt chuỗi bài học này, chúng tôi sẽ không quá tập trung vào việc demo chi tiết quá trình phát triển các ứng dụng cho iPhone hay iPad. Thay vào đó, chúng tôi sẽ chú trọng tới ngôn ngữ Objective-C và chính bởi điều này mà tất cả ta cần chỉ là một máy tính Mac với một bộ compiler như GCC. Nếu bạn đã cài bộ công cụ phát triển cho Mac (Xcode) thì bạn hoàn toàn yên tâm là máy Mac của bạn đã có GCC complier và bạn có thể bắt tay ngay vào học Objective-C. Về mặt kinh nghiệm lập trình, chúng tôi cũng không bắt buộc bạn phải có quá nhiều kinh nghiệm về OOP hay đã rất thành thạo C. Tuy nhiên nếu bạn đã OK về hai vấn đề trên thì sẽ là một lợi thế lớn.

Trong trường hợp bạn dùng Windows thì chúng tôi khuyên bạn nên dùng compiler khác như CygWin hay MinGW để dịch chương trình Objective-C. Tuy nhiên, chúng tôi khuyến cáo các bạn nên sử dụng hệ thống Mac vì như vậy bạn sẽ tận dụng được hết khả năng cũng như hiệu suất của ngôn ngữ Objective-C.

Compile chương trình đầu tiên viết bằng Objective-C

Giả sử bạn đã viết xong một chương trình bằng Objective-C, vậy làm thế nào bạn có thể dịch và chạy chương trình đó. Điều đầu tiên bạn phải sure là máy tình của mình có cài GCC compiler. Sau đó ta sẽ tiến hành dịch và chạy dòng lệnh chạy chương trình trên cửa sổ tương tác theo kiểu command line. Tất cả các ví dụ tôi demo trong chuỗi bài học này, chúng tôi đều chạy trên môi trường Mac và bạn hoàn toàn có thể thực thi các công việc liên quan đến khởi tạo và setup chương trình ban đầu thông qua công cụ mang tính trực quan hơn. Đó là bộ công cụ Xcode giúp bạn có thể dễ dàng phát triển những ứng dụng trên nền tảng Mac.

Tuy nhiên điều bắt buộc đối với lập trình viên khi mới bắt đầu học ngôn ngữ lập trình là phải học cách chạy trên môi trường dòng lệnh thông qua command line. Công cụ chúng tôi sử dụng trên MacOSTerminal. Để chạy chương trình này bạn có thể vào Applications> Utilities> Terminal. Chương trình này giống chương trình cmd trong Windows.

Bước 1: Trong cửa sổ Terminal, gõ lệnh

cd /Users/MyName/Desktop/Test

Lệnh cd giúp bạn có thể nhảy vào thư mục theo đường dẫn sau lệnh cd.

Bước 2: Compile chương trình viết bằng Objective-C. Giả sử chương trình của bạn có tên là: inputfile.m (source file sẽ có đuôi là .m). Tiếp tục vẫn sử dụng cửa sổ Terminal, bạn gõ lệnh sau:

gcc inputfile.m -o outputfile

Kết thúc lệnh này sẽ GCC compiler sẽ dịch ra chương trình chạy có tên là outputfile.

Bước 3: Để chạy chương trình, bạn chỉ cần gõ lệnh sau trên cửa sổ Terminal.

./outputfile

Cơ bản về lập trình Objective-C

Objective-C thực sự không quá khó để học. Khi bạn đã nắm vững những khái niệm và nguyên tắc lập trình cơ bản, bạn có thể tiếp tục tiến xa hơn nữa. Tuy nhiên bạn phải có những khải niệm căn bản về ngôn ngữ lập trình C. Và đó là phần còn lại trong buổi học hôm nay bởi vì những gì cơ bản của C cũng sẽ được sử dụng lại trong Objective-C.
Chúng ta hãy nhìn vào chương trình cơ bản viết bằng C sau đây:

hello_c_program

Sau khi chạy chương trình ta sẽ thấy một thông điệp “Hello, World” trên cửa sổ Terminal.

Bạn có thể bắt đầu việc tạo một chương trình Objective-C mới bằng cách khởi động Xcode, sau đó tạo project mới. Tiếp tục bạn chọn MacOS > Application> Terminal Command Tool. Chú ý bạn có thể chọn project type là C (nếu viết theo kiểu của C như ví dụ ở trên) hoặc là Foundation (nếu muốn viết theo kiểu Objective-C và sử dụng những đối tượng có sẵn trong foundation framework của Objective-C).

Bạn thấy đó, chương trình Objective-C viết theo cú pháp của C nhìn rất quen thuộc có phải không? Điều duy nhất bạn phải làm là mau chóng recall lại những kiến thức cơ bản về C như các hàm IO hay khái niệm về biến.

Biến (Variables)

Phần tiếp theo ta sẽ tìm hiểu về biến. Biến được sử dụng cho mục đích lưu trữ các giá trị để chương trinh có thể thao tác trên các giá trị đó. Khi khai báo các biến ta phải chỉ ra tên của biến và kiểu dữ liệu của biến. Nói chung làm việc với các biến có kiểu dữ liệu cơ bản hoàn toàn giống với C. Một số kiểu dữ liệu cơ bản như sau:

int – dùng để chứa các số nguyên
char – dùng để chứa ký tự
float – dùng để chứa các số có giá trị thập phân
double – như kiểu float nhưng có phần thập phân chính xác hơn

Ví dụ:

variables

Khi in giá trị của biến trên màn hình cửa sổ Terminal chúng ta phải chỉ ra định dạng giá trị cần in (bắt đầu bằng ký tự %). Chú ý một số định dạng thông dụng như sau:

%i: int
%f: float
%e: double
%c: char

Câu lệnh điều kiện

Khi một chương trình cần phải đưa ra quyết định lựa chọn các tình huống xử lý, chúng ta sẽ sử dụng một điều kiện. Nếu không có điều kiện, mỗi khi bạn chạy chương trình thì kết quả sẽ là giống hệt nhau (giống như ta xem đi xem lại một bộ phim nhiều lần). Bằng cách đưa ra những quyết định dựa trên điều kiện liên quan đến giá trị của các biến, chúng ta có thể thay đổi sự thực thi của chương trình – điều này gần giống như cuộc sống hàng ngày khi bạn lên một kế hoạch nào đó: nếu như thế này thì làm gì còn không thì làm gì?

Cầu lệnh điều kiện đơn giản nhất là: câu lệnh if. Câu lệnh này sẽ xét xem nếu điều kiện trong câu lệnh if là true thì sẽ thực một thao tác cụ thể nào đó. Ví dụ:

if_statement

ngoài ra để xử lý điều kiện một cách tường minh và đầy đủ nhất ta có thể sử dụng cấu trúc lệnh if..else. Cấu trúc lệnh này cung cấp cho ta xử lý của cả 2 trường hợp: nếu điều kiện đúng thì làm gì và điều kiện sai thì làm gì.

ifelse_statement

Câu lệnh lặp

Bây giờ ta tiếp tục tìm hiểu một trường hợp khác mà các chương trình rất hay gặp phải. Đó là khi một thao tác sẽ phải lặp đi lặp lại nhiều lần (tất nhiên ta phải kiểm soát được số lần lặp) thì lập trình viên cần dùng cấu trúc lệnh nào cho phù hợp? Trong trường hợp này chúng ta có thể dùng cấu trúc lệnh lặp để xử lý tình huống nêu trên.

Có 3 loại vòng lặp thông dụng là: for, whiledo..while. Về mục đích thì cả 3 loại vòng lặp này đều có chung một nhiệm vụ là lặp đi lặp lại một đoạn mã n lần (cố gắng tránh vòng lặp vô tận) tuy nhiên cấu trúc của 3 lệnh này có khác nhau chút xíu.

Vòng lặp for:

for_statement

Vòng lặp while:

while_statement

Vòng lặp do..while:

dowhile_statement

Con trỏ (pointer)

Con trỏ là một khái niệm khá trừu tượng và rất khó của ngôn ngữ lập trình C. Do Objective-C dùng lại rất nhiều tính chất và kỹ thuật của C nên không quá ngạc nhiên ta gặp lại con trỏ ở trong Objective-C. Nếu bạn là fresher trong lĩnh vực lập trình thì chúng tôi khuyên bạn nên quay lại đọc kỹ phần con trỏ trong C để có thể có cái nhìn rõ ràng hơn về vấn đề này.

Như các bạn đã đọc phần đầu thì ta đã biết khái niệm về biến. Biến dùng để lưu trữ giá trị cho mục đích tính toán và xử lý dữ liệu. Thực tế, khi ta tạo một biến có nghĩa là ta đã yêu cầu hệ thống cấp phát một ô nhớ nhằm lưu trữ giá trị của biến đó. Tất cả các thao tác liên quan đến dữ liệu trên ô nhớ đó ta sẽ thực hiện thông qua tên biến.

Trong C, ta có thể thực hiện thao tác với dữ liệu trực tiếp trên ô nhớ thông qua con trỏ. Con trỏ là gì? Thực chất, con trỏ là một kiểu dữ liệu đặc biệt vì nó không lưu trữ những giá trị bình thường mà nó dùng để lưu địa chỉ của biến khác. Điều đó có nghĩa là ta có thể thao tác với dữ liệu trên một ô nhớ thông qua con trỏ đang nắm giữ địa chỉ của ô nhớ đó. Ví dụ:

int foo = 123; // This is an integer variable
int *ptr = &foo; // This is a pointer to an integer variable

Phần tiếp theo

Trên đây là nội dung của bài học đầu tiên. Chúng tôi hy vọng sau khi đọc bài này các bạn sẽ “vọc” vào làm luôn thông qua những hướng dẫn ở trên. Để tiếp tục “khám phá” OOP trong Objective-C, xin mời các bạn đọc bài học thứ 2…

2 Responses to Phần 1: “Lần đầu” với lập trình Objective-C

  1. Pingback: Tự học Objective-C – Bài 2 « A to Z for Mac Developer

  2. Pingback: Tự học Objective-C: Bài 3 « A to Z for Mac Developer

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: