Tìm hiểu cơ bản Objective – C (P.1)

1.    Giới thiệu

Ngôn ngữ lập trình Objective-C là một ngôn ngữ lập trình hướng đối tượng được xây dựng chủ yếu dựa trên nền tảng ANSI C, và ngoài ra nó còn được mở rộng từ Smalltalk, một trong những ngôn ngữ lập trình hướng đối tượng đầu tiên. Objective-C được thiết kế với mục đích đưa vào C các tính năng hướng đối tượng một các đơn giản và dễ hiểu nhất.

Objective-C là ngôn ngữ chính được Apple chọn để viết các ứng dụng cho hệ điều hành MAC, iPod và iPhone.

Như vậy, để nắm được Objective-C bạn phải có kinh nghiệm về ngôn ngữ C. Nếu bạn có kiến thức tốt về C thì bạn có thể nắm nhanh Objective-C và có thể bắt đầu phát triển các ứng dụng cho iPhone và hệ điều hành MAC. Nếu không, bạn nên dành thời gian tìm hiểu thêm về ngôn ngữ C trước khi tìm hiểu Objective-C.

1.    Cơ bản về Objective-C

1.1.    Từ khóa

1.1.1.     Khai báo class, category và protocol

  • @interface: khai báo class hoặc interface.
  • @implementation: định nghĩa class hoặc category.
  • @protocol: khai báo protocol
  • @end: kết thúc trong việc khai báo, định nghĩa category hoặc protocol.
  • @private: giới hạn phạm vi trong lớp mà biến thể hiện được khai báo.
  • @protected: giới hạn phạm vi trong lớp và lớp con kế thừa mà biến thể hiện được khai báo.
  • @public: không giới hạn phạm vi truy xuất.
  • Mặc định là @protected
  • @try
  • @throw
  • @catch
  • @finally
  • @class: khai báo trước một tên lớp đã được định nghĩa ở một nơi khác.
  • @selector(method_name): trả về một selector đã được biên dịch mà được định nghĩa thông qua method_name.
  • @protocol(protocol_name): trả về một protocol protocol_name (một thể hiện của một lớp Protocol). @protocol là hợp lệ (không có protocol_name) trong trường hợp khai báo trước
  • @synchronized: định nghĩa một block mã nguồn trong nó phải được thực hiện đồng bộ
  • #import: dùng để include một file, tương tự include trong C, C++.
  • Một số từ khóa khác

1.1.2.     Phạm vi truy xuất các biến thể hiện

1.1.3.     Xử lý ngoại lệ

1.1.4.     Các mục đích cụ thể khác

1.1.5.     Một số từ khóa khác

alloc retain release autorelease in out inout  bycopy byref oneway super self

1.2.   Câu lệnh trong Objective-C

Các câu lệnh điều khiển if, switch và các câu lệnh lặp for, while… tương tự như C/C++ hoặc Java

Các câu lệnh rẽ nhánh:

if (<condition>) {

<statements>

} else if (<condition>) {

<statements>

} else {

<statements>

}

switch (<expression>) {

case <constant>:

<statements>

break;

default:

break;

}

Các câu lệnh lặp:

for (<initial>; <condition>; <increment>) {

<statements>

}

while (<condition>) {

<statements>

}

do {

<statements>

} while (<condition>)

1.3.  Đối tượng

Một chương trình hướng đối tượng được xây dựng từ các đối tượng. Mỗi đối tượng bao gồm dữ liệu và các phương thức để sử dụng hoặc tương tác trên các dữ liệu đó.

Objective-C cho phép định danh một đối tượng mà không cần phải chỉ ra một lớp cụ thể của đối tượng đó, điều này cho phép định kiểu động.

Trong chương trình thì ta phải luôn đảm bảo rằng ta phải luôn xử lý các đối tượng không còn cần thiết nữa.

1.3.1.     Id

Trong Objective-C, định danh đối tượng là một kiểu dữ liệu khác biệt: id. Kiểu này được định nghĩa như là một con trỏ trỏ đến một đối tượng, trong thực tế, một con trỏ trỏ đến các biến thể hiện của một đối tượng, với dữ liệu duy nhất. Giống như hàm hoặc mảng trong C, một đối tượng được định danh bởi một địa chỉ. Tất cả các đối tượng, bất kể là biến thể hiện hay phương thức, đều có kiểu là id.

id  anObject;

1.3.2.     Định kiểu động

Kiểu id là một kiểu hoàn toàn không hạn chế. Bản thân nó không mang thông tin về một đối tượng, ngoài trừ nó là một đối tượng.

Nhưng các đối tượng lại không giống nhau. Tại một vài thời điểm, chương trình cần biết rõ các thông tin đặc tả của một đối tượng, các biến thể hiện mà nó chứa, các hàm mà nó có thể thực hiện, kiểu id khi được thiết kế ra không hỗ trợ được điều này.

Để hỗ trợ điều này, mỗi đối tượng được thiết kế mang trong nó một biến thể hiện isa với mục đích định danh lớp của đối tượng, cho biết đối tượng đó thuộc loại nào. Nhưng vậy tại mỗi thời điểm runtime, đối tượng là các kiểu động. Bất cứ lúc nào cần, hệ thống runtime có thể biết chính xác lớp mà đối tượng đó thuộc về, bằng cách hỏi ngay đối tượng đó.

Con trở isa cho phép các đối tượng tìm các thông tin về bản thân chúng. Trình biên dịch ghi nhận các thông tin về định nghĩa lớp vào các cấu trúc dữ liệu để hệ thống runtime sử dụng. Các hàm của hệ thống runtime sử dụng isa để tìm ra các thông tin này tại thời điểm runtime.

1.3.3.     Bộ nhớ

Trong lập trình Objective-C, một điều quan trọng là phải giải phóng các đối tượng không còn sử dụng, nếu không bộ nhớ sẽ tràn. Và một điều quan trọng không kém đó là không được giải phóng đối tượng khi nó đang được sử dụng.

  1. #1 by Thuan on Tháng Sáu 13, 2012 - 13:53

    bài viết rất hay cố gắng lên nhé pro

  2. #2 by Hưng on Tháng Bảy 18, 2012 - 21:37

    cho mình hỏi khi viết ngôn ngữ Object-C mình viết trên compiler nào ? Borland C hay Dev-C++ được ko ?

    • #3 by Mục Đồng on Tháng Bảy 19, 2012 - 07:55

      Đây là ngôn ngữ để phát triển ứng dụng cho MAC OS hoặc iOS (iPhone)
      Bạn nên sử dụng IDE Xcode của Apple.

  3. #4 by Hưng on Tháng Bảy 20, 2012 - 06:34

    do con CPU của mình ko hỗ trợ ảo hóa nên ko cài máy Mac ảo để lập trình trên XCode được, giờ mình mới tìm ra cách lập trình Object-C trên Windows thôi, đành học Object-C trước vậy ^_^, tks bạn

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: