Tải bản đầy đủ (.pdf) (70 trang)

XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.3 MB, 70 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM
KHOA CÔNG NGHỆ THÔNG TIN

LUẬN VĂN TỐT NGHIỆP

XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC
WEBSITE VIETSAM.COM

GVHD

: Th.S Nguyễn Đức Công Song

Ngành

: Công nghệ thông tin

Niên khoá

: 2007-2010

Lớp

: LT07DT

Sinh viên thực hiện : Phạm Văn Khởi
MSSV

: 07430011


TP.HỒ CHÍ MINH, tháng 9 năm 2010


ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM

NĂM

2010


NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………..……………………………….


NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………..……………………………….


LỜI CẢM ƠN
Để luận văn này được hoàn thành, tôi xin gửi lời cảm ơn chân thành tới các thầy, cô
trường Đại học Nông Lâm TP.Hồ Chí Minh.
Đặc biệt xin gửi lời cảm ơn tới các thầy cô khoa Công nghệ thông tin của trường đã
tận tình giảng dạy, giúp đỡ tôi trong quá trình học tập tại trường, xin gửi lời cảm ơn
sâu sắc tới thầy Nguyễn Đức Công Song đã hướng dẫn tôi thực hiện đề tài này.
Xin gửi lời cảm ơn bạn bè đã có những góp ý để đề tài được hoàn thiện hơn.
Cuối cùng, con được gửi lời tri ân tới ba mẹ đã sinh thành, nuôi dưỡng, giáo dục con
để con có được thành quả như ngày hôm nay.
Sinh viên: Phạm Văn Khởi.

i


TÓM TẮT
-Tìm hiểu kiến trúc hệ điều hành iOS.
-Tìm hiểu các kỹ thuật lập trình trên môi trường iPhone cũng như sử dụng công cụ hỗ
trợ phát triển ứng dụng XCode.
-Tìm hiểu ngôn ngữ lập trình Objective-C.
-Tìm hiểu các khái niệm, thuật ngữ, chức năng của website .
-Tìm hiểu các API webservice do webserver VietSam cung cấp.
-Xây dựng hoàn chỉnh ứng dụng cho phép người sử dụng thực hiện các thao tác như
trên ứng dụng web trong môi trường iPhone.


ii


MỤC LỤC
Trang
CHƯƠNG 1: TỔNG QUAN..................................................................................1
1.1.Mục đích: ......................................................................................................1
1.2.Giới thiệu website vietsam.com: ..................................................................1
1.2.1.CrossLeads là gì? ...................................................................................1
1.2.2.Những ai có lợi ích trong việc sử dụng vietsam.com? .......................... 1
1.2.3.Croadleads sinh ra tiền cho tôi như thế nào? .......................................2
1.2.4.Phí tìm kiếm là gì? Là tiền cung cấp để trao đổi cho một nghiệp vụ
hướng dẫn. ......................................................................................................2
1.2.5. Làm thế nào và khi nào tôi nhận được lệ phí giới thiệu của tôi?........2
1.2.6. Một yêu cầu giới thiệu là gì?. ............................................................... 2
1.2.7. Tôi có phải cung cấp một khoản lệ phí giới thiệu với danh sách đề nghị
giới thiệu của tôi? . ........................................................................................ 3
CHƯƠNG 2: TÌM HIỂU .......................................................................................4
2.1.Kiến trúc, môi trường và công cụ lập trình ................................................4
2.1.1.Tổng quan về iOS: .................................................................................4
2.1.1.1. iOS Technology Layers...................................................................4
2.1.1.2.Viết codecho iOS ..............................................................................5
2.1.2. Công cụ phát triển cho iOS ..................................................................5
2.1.2.1.Xcode ................................................................................................ 5
2.1.2.2. InterfaceBuilder ..............................................................................6
2.1.2.3.Tạo ứng dụng Iphone.......................................................................7
3.1 Ngôn ngữ Objective-C..................................................................................7
3.1.1 Đặc điểm cơ bản.....................................................................................7
3.1.2 Phương thức........................................................................................... 8
3.1.3 Lớp và đối tượng....................................................................................8

3.1.4 Exception và handler. .......................................................................... 11
3.1.5 Categories............................................................................................. 11
3.1.6 Protocals: Giao diện. ........................................................................... 14
3.1.7 Properties ............................................................................................. 20
iii


3.1.8 Kiểu id .................................................................................................. 21
3.1.9 Ép kiểu động ........................................................................................ 21
3.1.10 Constructors....................................................................................... 22
3.1.11 Đa hình. .............................................................................................. 24
3.1.12 Quản lý bộ nhớ................................................................................... 25
3.2. Một số khái niệm trong ứng dụng ............................................................ 30
3.3.Tìm hiểu API CrossLeads .......................................................................... 30
3.3.1. ...................................... 30
3.3.2. .................................... 31
3.3.3. ......................... 31
3.3.4. ................................ 31
3.3.5. ................................... 31
3.3.6. ............................................... 31
3.3.7. ........................................... 32
3.3.8. chia sẻ referral. ................ 32
3.3.9. : ........................... 32
3.3.10. .............................................. 32
3.3.11. ........................................... 32
3.3.12. 32
3.3.13. ..................................................... 32
3.3.14. .......................... 32
3.3.15. ....................................... 32
3.3.16 ..................................... 32

3.3.17 .................................................. 33
CHƯƠNG 3: PHÂN TÍCH CHƯƠNG TRÌNH .................................................34
3.1 Chức năng chính ........................................................................................ 34
3.2 Mô hình hoạt động ..................................................................................... 34
3.3. Cơ chế hoạt động....................................................................................... 34
3.4. Phân tích Use-case..................................................................................... 35
3.4.1.Lược đồ user-case tổng quát: .............................................................. 35
3.4.2.Chức năng của từng usecase: .............................................................. 35
iv


3.4.2.1.Tạo referral: ................................................................................... 35
3.4.2.2. Share referral:............................................................................... 36
3.4.2.3. Refer một referral:........................................................................ 36
3.4.2.4. Reply refer:.................................................................................... 36
3.4.2.5. Close một referral: ........................................................................ 36
3.4.2.6. Bookmark một referral: ............................................................... 37
3.4.2.7. Unbookmark một referral: ........................................................... 37
3.4.2.8. Search referral: ............................................................................. 37
3.5. Quá trình hoạt động:................................................................................. 38
CHƯƠNG 4: PHÂN TÍCH DỮ LIỆU ...............................................................40
4.1.Khi yêu cầu lấy các referral:...................................................................... 40
4.2.Khi yêu cầu lấy thông tin chi tiết referral: ................................................ 42
4.3.Khi lấy về các refer: ................................................................................... 43
4.3.1.Cấu trúc xml: ....................................................................................... 43
4.3.2.Giải thích cấu trúc ............................................................................... 43
4.4.Khi lấy lịch sử giao dịch của một refer:..................................................... 44
4.5. Khi lấy các message trong inbox/sent item:.............................................. 45
4.5.1.Cấu trúc xml: ....................................................................................... 45
4.5.1.Giải thích các thành phần: .................................................................. 46

CHƯƠNG 5: THIẾT KẾ GIAO DIỆN...............................................................47
5.1. Màn hình chính ......................................................................................... 47
5.2. Màn hình My request................................................................................ 48
5.3. Màn hình chi tiết referral ......................................................................... 49
5.4. Màn hình lịch sử giao dịch trên một refer ............................................... 50
5.5. Màn hình tạo referral................................................................................ 51
5.6. Màn hình phản hồi một refer.................................................................... 52
5.7. Màn hình share referral............................................................................ 53
5.8. Màn hình inbox ......................................................................................... 54
5.9. Màn hình gửi một message ....................................................................... 55
5.10. Màn hình my board................................................................................. 56
5.11. Màn hình my feed.................................................................................... 57
v


5.12. Màn hình chi tiết my board .................................................................... 58
CHƯƠNG 6: KẾT LUẬN ...................................................................................59
6.1.Kết quả đạt được........................................................................................ 59
6.2.Hạn chế ....................................................................................................... 59
6.3.Hướng phát triển........................................................................................ 59
PHỤ LỤC .............................................................................................................60

vi


XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM

CHƯƠNG 1: TỔNG QUAN
1.1.Mục đích:
Với sự bùng nổ truyền thông trong những năm gần đây, internet đã trở thành

một phương tiện không thể thiếu trong nhiều nghành và nhiều lĩnh vực. Đi kèm với nó
là nhiều ứng dụng có liên quan tới internet đã ra đời mang lại nhiều hiệu quả kinh tế,
xã hội. Chúng ta có thể liệt kê các ứng dụng trong số đó như: chính phủ điện tử, phần
mềm dành cho đầu tư chứng khoán-vàng, quản lý công văn, ERP, các website mạng xã
hội như Twitter, Facebook hay các website tuyển dụng tìm kiếm việc làm như
vietnamworks.com, timviec.com,… Tuy nhiên việc truy cập các website đó không
phải lúc nào cũng dễ dàng thực hiện được, nhất là trong chuyến đi công tác xa không
thuận tiện mang theo máy tính. Để khắc phục nhược điểm đó, các ứng dụng chạy trên
các thiết bị di động đã ra đời. Phần mềm CrossLeads ra đời cũng không nằm ngoài
mục lý do đó.
CrossLeads là một ứng dụng được viết chạy trên môi trường iPhone.
CrossLeads ra đời giúp người sử dụng website www.vietsam.com có thể tương tác với
website này ở mọi nơi với các tính năng như trên website mà không cần sử dụng tới
máy tính, sự ra đời của nó làm đa dạng phương thức truy cập ứng dụng. CrossLeads
tương tác với website thông qua các API đã được cung cấp.
1.2.Phạm vi đề tài
Đề tài chỉ tập chung vào việc xây dựng ứng dụng, do vậy người thực đề tài không đi
sâu vào việc trình bày các công nghệ, môi trường, kiến trúc nền tảng được sử dụng
phần mềm của đề tài. Tuy nhiên để người đọc hình dung được cách xây dựng ứng
dụng như thế nào, tôi xin được giới thiệu các khái niệm ở mức sơ lược.
1.2.Giới thiệu website vietsam.com:
1.2.1.CrossLeads là gì?
CrossLeads là một mạng lưới chuyên nghiệp để kiếm được khoản phí giới thiệu trong
một môi trường tin cậy.
1.2.2.Những ai có lợi ích trong việc sử dụng vietsam.com?
Mọi người trong chuỗi các giới thiệu đề có lợi. Khi một người yêu cầu một giới thiệu,
người đó sẽ tạo ra một referral và đáp ứng những nghiệp vụ cần thiết. Ví dụ, có một dự

GVHD: ThS. Nguyễn Đức Công Song


1

SVTH: Phạm Văn Khởi


XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM
án mới có triển vọng doanh thu cao và đang tìm kiếm nhà đầu tư. Người đưa ra dự án
này sẽ đồng ý trả một khoản phí cho cho người tìm kiếm. Bạn xem xét và nhận thấy
rằng đây là một dự án đầu tư tốt, bạn giới thiệu với nhà đầu tư mà bạn đã làm việc với
họ trong quá khứ, các nhà đầu tư đồng ý đầu tư vào dự án này. Như vậy tất cả mọi
người đều có lợi. Bạn kiếm được khoản phí từ việc giới thiệu, nhà đầu tư tìm được dự
án thích hợp đầu tư có khả năng mạng lại lợi nhuận cao, người khởi động dự án tìm
được nhà đầu tư thích hợp, ...
1.2.3.Croadleads sinh ra tiền cho tôi như thế nào?
Crossleads cho phép bạn kiếm tiền từ mạng của bạn bằng việc cho phép bạn tham
khảo các liên hệ của bạn trong việc phản hồi các nhu cầu được đăng và kiếm được
tiền từ một khoản lệ phí giới thiệu.
1.2.4.Phí tìm kiếm là gì?
Là tiền cung cấp để trao đổi cho một nghiệp vụ hướng dẫn.
1.2.5. Làm thế nào và khi nào tôi nhận được lệ phí giới thiệu của tôi?
Một khi bạn quyết định thực hiện một giới thiệu, bạn thương lượng với người yêu cầu
các điều kiện giới thiệu của bạn. Sau khi điều kiện này đồng ý, bạn thực hiện việc giới
thiệu. Nếu người yêu cầu chấp nhận yêu cầu giới thiệu của bạn, CrossLeads sẽ lưu
chấp nhận. Tuy nhiên, điều khoản thanh toán của mỗi giao dịch giới thiệu là riêng biệt
và thương lượng giữa người yêu cầu và người đáp ứng yêu cầu. Thanh toán được thực
hiện thông qua một bên thứ ba được chọn bởi các bên trong quá trình đàm phán.
CrossLeads chưa cho phép thanh toán trên nền tảng của nó.
1.2.6. Một yêu cầu giới thiệu là gì? Làm thế nào để tôi có thể gửi yêu cầu giới thiệu?
Một yêu cầu giới thiệu là một danh sách mô tả các nghiệp vụ cần thiết. Nó có thể đơn
giản như là một yêu cầu hướng dẫn đến các khách hàng mới hoặc một người nào đó ở

một công ty cụ thể. Ví dụ, một nhân viên kế toán có thể yêu cầu tìm cho khách hàng
mới hoặc có thể yêu cầu một giới thiệu đến một luật sư thuế để giúp một trong những
khách hàng hiện có của mình. Yêu cầu giới thiệu có thể cung cấp một khoản phí.

GVHD: ThS. Nguyễn Đức Công Song

2

SVTH: Phạm Văn Khởi


XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM
1.2.7. Tôi có phải cung cấp một khoản lệ phí giới thiệu với danh sách đề nghị giới
thiệu của tôi?
Không. Bạn quyết định có hay không cung cấp một khoản lệ phí giới thiệu. Có một số
yếu tố để xem xét, bao gồm sự nhanh chóng, kiểu giới thiệu bạn cần có, loại cần bạn
có, hoặc giá trị của nguồn hoặc các thông tin bạn đang tìm kiếm.

GVHD: ThS. Nguyễn Đức Công Song

3

SVTH: Phạm Văn Khởi


XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM

CHƯƠNG 2: TÌM HIỂU
2.1.Kiến trúc, môi trường và công cụ lập trình
2.1.1.Tổng quan về iOS:

iOS bao gồm hệ điều hành và các công nghệ mà ta sử dụng đề chạy các ứng dụng trên
các thiết bị như iPad, iPhone, iPod touch.
SDK iOS bao gồm code, thông tin và các công cụ cần thiết cho việc phát triển, kiểm
lỗi, chạy, gỡ lỗi, … Công cụ Xcode có thể giúp bạn thực hiện điều này trong quá trình
bạn viết ứng dụng trên một thiết bị iOS và cả trên môi trường giả lập.
2.1.1.1. iOS Technology Layers
Kernel trong iOS được dựa trên một biến thể của cùng một kernel Mach cơ bản trong
Mac OSX.

Hình 1: iOS technology layerss
Từng trên của kernel được các layers của service sử dụng để hiện thực các ứng dụng
trên nền tảng này.
Lớp này cho bạn sự lựa chọn khi cài đặt code. Ví dụ, các lớp Core OS và Core service
chứa các giao diện cơ bản cho iOS phục vụ việc truy cập các file, kiểu dữ liệu ở mức
độ thấp, các dịch vụ Bonjour, socket mạng, … Các giao diện này chủ yếu là C-base và
các công nghệ như Core Foundation, CFNetwork, SQLite,...
Các lớp cao hơn sử dụng các công nghệ tiên tiến hơn, sử dụng giao diện dựa trên một
hỗn hợp của C và Objective-C. Ví dụ, lớp Media chứa các công nghệ cơ bản được sử
dụng để hỗ trợ bản vẽ 2D và 3D, âm thanh, và video. Lớp này bao gồm các công nghệ
dựa trên C-OpenGL ES, Quartz, và Core Audio.
Trong lớp Cocoa Touch, hầu hết các công nghệ sử dụng Objective-C. Các framework
tại các lớp này cung cấp các hạ tầng cơ bản để được sử dụng bởi ứng dụng của bạn. Ví
dụ, các framework cơ bản cung cấp việc hỗ trợ hướng đối tượng cho các collection,
GVHD: ThS. Nguyễn Đức Công Song

4

SVTH: Phạm Văn Khởi



XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM
quản lý file, hoạt động mạng, …Framework UIKit cung cấp hạ tầng trực quan cho ứng
dụng của bạn, gồm các lớp cho windows, views, controls và các bộ quản lý để quản lý
các đối tượng đó.
2.1.1.2.Viết codecho iOS
iOS SDK hỗ trợ tạo các ứng dụng đồ họa. Các ứng dụng bạn tạo cư ngụ trên màn hình
chính, cùng với các ứng dụng của hệ thống. Khi chạy ứng dụng nào, nó sẽ chiếm chọn
màn hình. Tất cả dữ liệu được hiển thị trên một cửa sổ duy nhất.
2.1.2. Công cụ phát triển cho iOS
2.1.2.1.Xcode
Để xây dựng ứng dụng trên iOS, cần có máy tính Mac OS X chạy công cụ Xcode.
Xcode là sản phẩm của Apple, là bộ công cụ cung cấp việc hỗ trợ quản lý dự án, chỉnh
sửa mã, build, debug, quản lý repository source-code.

Hình 2: Cửa sổ Giao diện một dự án Xcode.
Xcode có một trình soạn thảo văn bản tiên tiến, hỗ trợ các tính năng như hoàn thành
mã, tô màu cú pháp, mã gấp (để ẩn khối mã tạm thời), và chú thích nội tuyến cho các
lỗi, cảnh báo, và ghi chú.

GVHD: ThS. Nguyễn Đức Công Song

5

SVTH: Phạm Văn Khởi


XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM
Khi xây dựng ứng dụng với Xcode, bạn hãy chạy trên môi trường giả lập trước, iPhone
Simulator cung cấp môi trường cục bộ thử nghiệm ứng dụng của bạn để chắc rằng các
hành xử về cơ bản đáp ứng yêu cầu người viết.

2.1.2.2. InterfaceBuilder
Là công cụ trực quan cho phép user thiết kế các giao diện chỉ bằng phương pháp kéo
thả.
Sau khi bạn đã đặt các thành phần trên cửa sổ, bạn có thể định vị trí chúng bằng cách
kéo tới vị trí bạn muốn, cấu hình các thuộc tính của nó bằng cách sử dụng inspector,
và thiết lập mối quan hệ giữa các đối tượng và mã của bạn. Khi giao diện của bạn sẽ
theo cách bạn muốn nó, bạn lưu nội dung vào một tập tin nib.

Hình 3: Thiết kế giao diện với Interface Builder.
Những file nib bạn tạo trong Interface Builder chứa tất cả thông tin mà UI Kit cần để
tái tạo các đối tượng trong ứng dụng tại thời điểm chạy.
Nhìn chung, bằng cách sử dụng Interface Builder tiết kiệm một lượng lớn thời gian
khi tạo ra giao diện người dùng. Interface Builder loại bỏ các mã tùy chỉnh cần thiết
GVHD: ThS. Nguyễn Đức Công Song

6

SVTH: Phạm Văn Khởi


XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM
để tạo, cấu hình, và định vị các đối tượng tạo nên giao diện của bạn. Bởi vì nó là một
trình soạn thảo trực quan, bạn có thể nhìn thấy chính xác những gì giao diện của bạn sẽ
giống như khi chạy.
2.1.2.3.Tạo ứng dụng Iphone
Ở mức độ cao, quá trình cho việc tạo một ứng dụng iPhone cũng tương tự như đối với
việc tạo ra một ứng dụng Mac OS X. Cả hai đều sử dụng các công cụ tương tự và rất
nhiều các thư viện cơ bản giống nhau. Mặc dù tương tự, cũng có sự khác biệt đáng kể.
iPhone An không phải là một máy tính để bàn, nó có một mục đích khác nhau và đòi
hỏi một phương pháp tiếp cận thiết kế rất khác nhau. cách tiếp cận đó cần phải tận

dụng lợi thế của những thế mạnh của IOS và các tính năng mà có thể bỏ được không
liên quan hoặc không thực tế trong một môi trường di động. Kích thước nhỏ hơn của
iPhone và iPod màn hình cảm ứng cũng có nghĩa là giao diện người dùng ứng dụng
của bạn nên được tổ chức tốt và luôn luôn tập trung vào các thông tin người sử dụng
cần nhất.
3.1 Ngôn ngữ Objective-C
Ngôn ngữ Objective-C là một ngôn ngữ lập trình đơn giản, nó được thiết kế cho phép
lập trình hướng đối tượng. Nó là ngôn ngữ mở rộng của ngôn ngữ ANSI C chuẩn,
cung cấp các cú pháp định nghĩa các lớp (class) và các phương thức (method),..
3.1.1 Đặc điểm cơ bản.
- Là ngôn ngữ hướng đối tượng.
- Mở rộng từ C.
- Nhẹ nhàng (không VM - không quá thực tạp với friend virtuals với template....)
- Mềm dẻo (mở rộng từ C nên bạn có thể dùng C thuần cấu trúc ngoài ra đây là ngôn
ngữ run-time).
- Reflection (có hỗ trợ).
- nil thay thế cho NULL trong C, bởi vì bạn có thể gửi thông điệp cho nil, nhưng
không thể làm như vậy với NULL.
- BOOL có 2 giá trị là YES và NO chứ không phải là true và false nữa.
- Khái niệm methods và message được sử dụng mang ý nghĩa như nhau đối với
Objective-C theo đó message có những thuộc tính đặc biệt. Một message có thể truyền
GVHD: ThS. Nguyễn Đức Công Song

7

SVTH: Phạm Văn Khởi


XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM
động từ object tới một object khác. Việc gọi thông điệp trên một object không có nghĩa

là object đó sẽ thực hiện message nó có thể chuyển tiếp tới một object khác chưa biết
trước, tóm lại nó có khả năng đáp trả thông điệp không trực tiệp thì gián tiếp.
Khi làm việc với Objective C bạn cần chú ý là bởi vì nó được base trên nền của C cho
nên việc bạn sử dụng cú pháp C trộn lẫn với cú pháp chính thống của Objective C là
hoàn toàn được chấp nhận.
3.1.2 Phương thức
Cách khai báo phương thức trong Objective-C:
Phương thức không có tham số :
<(kiểu trả về)>
Có tham số:
<(kiểu trả về)> :<(kiểu)> :<(kiểu)> ;
Lời gọi phương thức:
không trả về: [<đối tượng> ];
[<đối tượng> :<(kiểu)> ];
[<đối tượng> :<(kiểu)> :<(kiểu)> ];
Trả về kết quả: = [<đối tượng> ];
= [<đối tượng> :<(kiểu)> :<(kiểu)> ];
3.1.3 Lớp và đối tượng.
Objective-C sử dụng khái niệm Interface và Implementation để phân biêt file Header
và file Source của C (*.h và *.c) một lớp trong Objective-C định nghĩa là trên một giao
diện (.h) còn phần thực thi trên file .m.
@interface:
#import @interface Fraction: NSObject {
GVHD: ThS. Nguyễn Đức Công Song

8

SVTH: Phạm Văn Khởi



XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM
int numerator;
@private
int denominator;
}
-(void) print;
-(void) setNumerator: (int) n;
-(void) setDenominator: (int) d;
-(int) numerator;
-(int) denominator;
@end
và đây là phần thực thi.
@implementation
#import "Fraction.h"
@implementation Fraction
-(void) print {
printf( "%i/%i", numerator, denominator );
}
-(void) setNumerator: (int) n {
numerator = n;
}
-(void) setDenominator: (int) d {
denominator = d;
}
-(int) denominator {
GVHD: ThS. Nguyễn Đức Công Song

9

SVTH: Phạm Văn Khởi



XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM
return denominator;
}
-(int) numerator {
return numerator;
}
@end
- Sử dụng #import để thay thế cho #include (đây là cơ chế thông minh hơn #include
của C/C++ bạn chỉ phải thêm 1 lần thôi ).
- Objective-C chỉ cho phép đơn kế thừa. Mặc định tất cả các lớp sẽ kế thừa từ
NSObject.
- Cặp @.... và @end là cặp giới hạn phạm vi một lớp.
- Các thuộc tính được khái báo trong cặp { ..... } và khai báo phương thức ở bên ngoài.
- Nếu phương thức bắt đâu bằng "+" có nghĩa nó là thuộc phạm vi lớp (static), còn nếu
"-" thì nó ở phạm vi object.
- Các phạm vi truy xuất public, protected và private giống như C++ mặc định là
protected.
- Các truy nhập phần tử cũng sử dụng toán tử "." đối với object và "->" nếu là con trỏ.
- Không có các tầm vực truy xuất đối với phương thức (tức là trong Objective-C các
phương thức có cùng một tầm vực là public).

GVHD: ThS. Nguyễn Đức Công Song

10

SVTH: Phạm Văn Khởi



XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM
3.1.4 Exception và handler.
Ngôn ngữ cũng hỗ chợ các cấu trúc try - catch - throw - finally giống như ngôn C++
@try - @catch - @throw - @finally cách thức sử dụng cũng hoàn toàn tương tự.
3.1.5 Categories
Là đặc điểm nếu bạn muốn mở rộng lớp bằng cách thêm mới vào lớp một phương
thức. Khi bạn làm việc quen với OOP thì bạn sẽ thấy đây là một trong những thuộc
tính vô cùng hữu ích của Objective-C, kể cả ngay khi bạn không có mã nguồn của lớp
nhưng bạn vẫn hoàn toàn có thể thêm phương thức cho lớp như thường thông qua
thuộc tính này. Đặc điểm này làm giảm đi đáng kể sự kế thừa phức tạp trong C++ khi
việc kế thừa chỉ để phục vụ cho việc thêm mới một phương thức. Mặt khăc việc chia
mã nguồn trên nhiều files cũng giúp ích đáng kể trong việc phát triên.
#import "Fraction.h"
@interface Fraction (Math)
-(Fraction*) add: (Fraction*) f;
-(Fraction*) mul: (Fraction*) f;
-(Fraction*) div: (Fraction*) f;
-(Fraction*) sub: (Fraction*) f;
@end
File thực thi.
#import "FractionMath.h"
@implementation Fraction (Math)
-(Fraction*) add: (Fraction*) f {
return [[Fraction alloc] initWithNumerator: numerator * [f denominator] +
denominator * [f numerator]
denominator: denominator * [f denominator]];
}
GVHD: ThS. Nguyễn Đức Công Song

11


SVTH: Phạm Văn Khởi


XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM

-(Fraction*) mul: (Fraction*) f {
return [[Fraction alloc] initWithNumerator: numerator * [f numerator]
denominator: denominator * [f denominator]];
}
-(Fraction*) div: (Fraction*) f {
return [[Fraction alloc] initWithNumerator: numerator * [f denominator]
denominator: denominator * [f numerator]];
}
-(Fraction*) sub: (Fraction*) f {
return [[Fraction alloc] initWithNumerator: numerator * [f denominator] denominator * [f numerator]
denominator: denominator * [f denominator]];
}
@end
- Tên của category phải là duy nhất
- Có thể thêm bao nhiêu lần mở rộng lớp từ category là không giới hạn nhưng với tên
là duy nhất.
- Thông thể bổ xung biến thành phần bằng category.
- Có thể sử dụng category để tạo ra các phương thức private.
MyClass.h
#import
@interface MyClass: NSObject
-(void) publicMethod;
@end


GVHD: ThS. Nguyễn Đức Công Song

12

SVTH: Phạm Văn Khởi


XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM

MyClass.m
#import "MyClass.h"
#import
@implementation MyClass
-(void) publicMethod {
printf( "public method\n" );
}
@end
// private methods
@interface MyClass (Private)
-(void) privateMethod;
@end
@implementation MyClass (Private)
-(void) privateMethod {
printf( "private method\n" );
}
@end

main.m
#import "MyClass.h"
int main( int argc, const char *argv[] ) {

MyClass *obj = [[MyClass alloc] init];
// this compiles
[obj publicMethod];
GVHD: ThS. Nguyễn Đức Công Song

13

SVTH: Phạm Văn Khởi


XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM

// this throws errors when compiling
//[obj privateMethod];
// free memory
[obj release];
return 0;
}
3.1.6 Protocals: Giao diện.
Đây hoàn toàn tương đồng với khái niện lớp ảo trong C++ hoặc gọi là giao diện trong
C# và Java. Bản thân @protocals không có sự thực thi. Nếu lớp nào cam kết thực thi
nó thì trong phần thực thi sẽ implement các phương thức mà protocals khai báo.
@protocol Printing
-(void) print;
@end
Fraction.h
#import
#import "Printing.h"
@interface Fraction: NSObject {
int numerator;

int denominator;
}
-(Fraction*) initWithNumerator: (int) n denominator: (int) d;
-(void) setNumerator: (int) d;
-(void) setDenominator: (int) d;
-(void) setNumerator: (int) n andDenominator: (int) d;
-(int) numerator;
GVHD: ThS. Nguyễn Đức Công Song

14

SVTH: Phạm Văn Khởi


XÂY DỰNG ỨNG DỤNG IPHONE TƯƠNG TÁC WEBSITE VIETSAM.COM
-(int) denominator;
@end

Fraction.m
#import "Fraction.h"
#import
@implementation Fraction
-(Fraction*) initWithNumerator: (int) n denominator: (int) d {
self = [super init];
if ( self ) {
[self setNumerator: n andDenominator: d];
}
return self;
}
-(void) print {

printf( "%i/%i", numerator, denominator );
}
-(void) setNumerator: (int) n {
numerator = n;
}
-(void) setDenominator: (int) d {
denominator = d;
}

GVHD: ThS. Nguyễn Đức Công Song

15

SVTH: Phạm Văn Khởi


×