Tải bản đầy đủ (.doc) (79 trang)

Báo cáo tìm hiểu lập trình IOS và ứng dụng demo

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 (2.03 MB, 79 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG


ĐỒ ÁN LẬP TRÌNH ỨNG DỤNG MẠNG
TÌM HIỂU LẬP TRÌNH TRÊN IOS VÀ
LÀM ỨNG DỤNG DEMO

Giáo viên hướng dẫn: THS TRẦN MẠNH HÙNG
Sinh viên thực hiện:
1. TRƯƠNG NHỰT BÌNH 10520504
2. TRẦN PHÚC DUY 10520512
3. TẠ VĂN TUYỂN 10520638
Lớp: MMTT2010
Khóa: 5
TP. Hồ Chí Minh, tháng 12 năm 2013
MỞ ĐẦU
Ngày nay xu hướng sử dụng Smartphone và máy tính bảng đang gia tăng nhanh chóng
trên thế giới nói chung và Việt Nam nói riêng, trong đó Việt Nam hiện đang đứng thứ hai
thế giới về tốc độ tăng trưởng smartphone & máy tính bảng với tốc độ tăng trưởng 266%.
Android, iOS, Windows Phone là những hệ điều hành chạy trên Smartphone và máy tính
bảng phổ biến nhất thế giới: Android 75%, iOS 17,3%, Windows Phone 3,2%. Tại Việt
Nam, theo nghiên cứu của IDC, vào thời điểm quý 2/2013, iOS đang chiếm tỉ lệ 1.6%
trên tổng số thiết bị phân phối tại Việt Nam, đứng thứ ba sau Android và Windows
Phone.
Cùng với sự tăng trưởng của Smartphone và các hệ điều hành chạy trên Smartphone, số
lượng ứng dụng cho các hệ điều hành ngày càng tăng, tính cho đến hết năm 2012, số
lượng ứng dụng iOS trên Apple App Store đã hơn 775.000 ứng dụng và Google Play đã
có hơn 700.000 ứng dụng.Với sự phát triển quy mô lớn của ứng dụng, nhu cầu tìm hiểu
về lập trình ứng dụng cho các hệ điều hành cũng tăng dần.


Với tầm nhìn trên, nhóm chúng em quyết định chọn đề tài “Tìm hiểu lập trình trên IOS
và làm ứng dụng demo”. Đề tài này giúp mọi người có thể nắm được các yếu tố nền
tảng và phát triển được phần mềm ứng dụng trên iphone.
Phạm vi nghiên cứu của đề tài
• Nghiên cứu về hệ điều hành IOS
• Nghiên cứu ngôn ngữ lập trình Objective-C và bộ công cụ hổ trợ Xcode.
• Các thao tác và đối tượng trong Objective-C
• Làm ứng dụng demo
LỜI CẢM ƠN
Trước tiên nhóm em xin gửi lời cám ơn chân thành sâu sắc tới các thầy cô trong Trường
Đại Học Công nghệ Thông Tin nói chung và các thầy cô trong khoa Mạng Máy Tính và
Truyền Thông nói riêng đã tận tình giảng dạy, truyền đạt cho nhóm em những kiến thức,
kinh nghiệm quý báu trong suốt thời gian qua.
Đặc biệt, Nhóm xin gởi lời cảm ơn chân thành đến Ths.Trần Mạnh Hùng là người trực
tiếp hướng dẫn nhóm thực hiện đồ án này. Trong quá trình làm việc với thầy, nhóm em
không ngừng tiếp thu thêm nhiều kiến thức bổ ích về môn học và có thể tự tin hoàn thành
tốt đồ án của nhóm. Sau cùng, nhóm xin gửi lời cảm ơn chân thành tới chúng ta bè đã có
những đóng góp ý kiến và giúp đỡ trong quá trình thực hiện đồ án môn học.
Mọi lời góp ý của thầy nhóm xin chân thành lắng nghe và tiếp thu.
Một lần nữa, nhóm em xin chân thành cảm ơn!
TPHCM, tháng 12 năm 2013
Nhóm thực hiện
Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
NHẬN XÉT
(Của giáo viên hướng dẫn)





















MỤC LỤC
Mở đầu
Lời cảm ơn
Nhận xét của GVHD
Trang
CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH IOS 1
1.1Hệ điều hành IOS 1
1.2Môi trường phát triển ứng dụng 2
1.2.1Cấu trúc của hệ điều hành IOS 2
1.2.2Lớp Core OS (lớp nhân trong) 3
1.2.3Lớp Core Service (lớp nhân dịch vụ) 4
1.2.4Lớp Media Services (lớp liên kết) 5
1.2.5Lớp Cocoa Touch (lớp tiếp xúc) 6
CHƯƠNG 2: NGÔN NGỮ LẬP TRÌNH OBJECTIVE-C 8
2.1Lịch sử phát triển ngôn ngữ Objective-C 9

2.2Tổng quan về Objective-C 11
2.3Các yếu tố căn bản của Ojective-C 13
2.3.1Khai báo biến và cách sử dụng 13
2.3.1.1Biến 13
2.3.1.2Quy tắc đặt tên 13
2.3.1.3Kiểu dữ liệu 14
2.3.1.4Phép toán 14
2.3.2Từ khóa 15
2.3.2.1Khai báo class, category và protocol 15
2.3.2.2Phạm vi truy xuất các biến 16
2.3.2.3Xử lý ngoại lệ 16
2.3.3Câu lệnh trong Objective-C 16
2.3.4Mảng 19
2.3.4.1Định nghĩa 19
2.3.4.2Mảng NSArray 19
2.3.5Chuỗi – Đối tượng NSString 20
2.3.5.1Khởi tạo chuỗi 20
2.3.5.2Đối tượng NSString 20
2.3.6Đối tượng 21
2.3.6.1ID 21
2.3.6.2Ép kiểu động 21
2.3.6.3Quản lý bộ nhớ 22
2.3.7Lớp 23
2.3.7.1Định nghĩa lớp 23
2.3.7.2Phương thức 24
2.3.7.3Kế thừa 25
2.3.8Properties 26
2.3.9Category 27
2.3.10Protocol 28
2.3.11Selector 28

2.3.12Association References 30
CHƯƠNG 3. BỘ CÔNG CỤ HỖ TRỢ LẬP TRÌNH XCODE 31
3.1Iphone SDK-Iphone Software Development Kit 31
3.2Các thành phần của Iphone SDK 32
3.3Xcode 32
3.3.1Giới thiệu về Xcode 32
3.3.2Tạo ứng dụng mới 33
3.4Các mẫu ứng dụng trong Xcode 36
3.5Tổng quan về XCode Project 38
3.6Thêm các Framewok và project 40
3.7IPhone Simulator 41
3.8Interface Builder 44
3.9Instrument 45
3.10Xây dựng và cài đặt ứng dụng 46
3.11Mô hình MVC (Model-View-Controller) 46
CHƯƠNG 4: MỘT SỐ THAO TÁC CƠ BẢN 50
4.1.1 App Icon 51
4.1.2 Loading Screen 51
4.2 Thay đổi App Name 51
4.3 Ẩn Status Bar 53
4.4 Background 54
4.4.1 Background Image 54
4.4.2 Background Color 54
4.5 Thêm Framework 55
CHƯƠNG 5: MỘT SỐ ĐỐI TƯỢNG CƠ BẢN 58
5.1 Đối tượng Label – Button – Text Field 58
5.1.1 Đối tượng Label 58
5.1.2 Đối tượng Button 59
5.1.3 Đối tượng Text Field 60
5.2 Kết nối cơ sở dữ liệu với Sqlite 61

5.2.1 Giới thiệu 61
5.2.2 Cài đặt Sqlite Manager cho Firefox 61
5.2.3 Cấu hình ứng dụng để tương tác với Sqlite 61
5.2.4 Các hàm trong Sqlite 62
CHƯƠNG 6: XÂY DỰNG PHẦN MỀM XEM THÔNG TIN THỜI TIẾT 63
6.1 Ứng dụng xem thông tin thời tiết 63
6.1.1 Giới Thiệu 63
6.1.2 Chuẩn Bị 63
6.1.3 Cấu trúc phần mềm 63
6.1.4 Cơ chế vận hành 64
6.1.5 Tính Năng 66
CHƯƠNG 7: TỔNG KẾT 67
DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
Bảng 1.1 Thông tin về hệ điều hành IOS
Bảng 2.1 Kiểu dữ liệu trong Objectived-C
Bảng 2.2 Các phép toán trong Objectived-C
Hình 1.1 Phân lớp trong hệ điều hành IOS
Hình 2.1 So sánh atomic và noautomic
Hình 3.1: Quá trình cài đặt Xcode
Hình 3.2 Giao diện Xcode
Hình 3.3: Giao diện khi vào XCode
Hình 3.4: Tạo giao diện bằng Menu
Hình 3.5: Lựa chọn mẫu cho project
Hình 3.6: Giao diện project mới tạo
Hình 3.7: Các mẫu ứng dụng trong XCode
Hình 3.8: Các thành phần trong một project
Hình 3.9: Thêm framework vào project
Hình 3.10: Giao diện Iphone Simulator
Hình 3.11: Giao diên Interface Builder
Hình 3.12: Instrument

Hình 4.1 Thay đổi tập tin .plist
Hình 4.2 Sửa đổi Bundle display name
Hình 4.3 Thêm dòng mới
Hình 4.4 Chọn giá trị Yes
Hình 4.5 Thay đổi background bằng image
Hình 4.6 Attributes inspector
Hình 4.7: Link Frameworks and Libraries
Hình 4.8: Chọn Framework và Add
Hình 5.1: Label
Hình 5.2: Thuộc tính của Label
Hình 5.3: Button
Hình 5.4: Thuộc tính của Button
Hình 5.5: Text Field
Hình 5.6: Thuộc tính của Text Field
Hình 5.7: Addon của SQLite
Hình 5.8: Thêm framework hỗ trợ SQLite
Hình 6.1: Thông tin về ứng dụng xem thời tiết
Hình 6.2: Thông tin thời tiết trên wunderground.com
Sơ đồ 3.1: Mô hình MVC
Sơ đồ 3.2: Model-View-Controller Layer
Sơ đồ 3.3: Đối tượng thông dụng của IOS
Sơ đồ 6.1: Mô hình truy xuất dữ liệu
1
CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH IOS
1.1 Hệ điều hành IOS
IOS là hệ điều hành trên các thiết bị di động của Apple. Ban đầu hệ điều hành này chỉ
được phát triền để chạy trên Iphone, nhưng sau đó nó đã mở rộng để chạy trên các thiết bị
của Apple như iPod touch, iPad và Apple TV. Ngày 31 tháng 5 năm 2011, Apple Sotre
của Apple chứa khoảng 500 000 ứng dụng IOS và được tải về tổng cộng khoảng 15 tỷ
lần. Trong quý 4 năm 2010, có khoảng 26% điện thoại thông minh chạy hệ điều hành

IOS, sau hệ điều hành Android của Google và Symbia của Nokia.
Giao diện người dùng của IOS dựa trên cơ sở thao tác bằng tay. Người dùng có thể
tương tác với hệ điều hành này thông qua rất nhiều động tác bằng tay trên màn hình cảm
ứng của các thiết bị của Apple.
Hệ điều hành này được tiết lộ tại Hội nghị và Triển lãm Macworld diễn ra vào tháng 1
năm 2007 và được phát hành vào tháng 9 năm đó. Khi đó, hệ điều hành này chưa có một
cái tên riêng nên chỉ đơn giản là “Iphone chạy OS X”. Ban đầu, ứng dụng của bên thứ ba
không được hổ trợ. Steve Job đã chỉ ra rằng những nhà phát triển có thể xây dựng các
ứng dụng web mà “sẽ cư xử như những ứng dụng ban đầu trên Iphone”. Vào ngày 17
tháng 10 năm 2007, Apple thông báo một bộ phát triền phần mềm đáng được xây dựng
và họ dự định sẽ đưa nó đến “tay các nhà phát triển vào tháng 2”. Ngày 6 tháng 3 năm
2008, Apple đã phát hành bản dùng thử đầu tiên, cùng với một cái tên mới cho hệ điều
hành đó là “Iphone OS”.
Tháng 6 năm 2010, Apple đổi cái tên Iphone OS thành IOS. Nhãn hiệu “IOS” đã
được Cisco dùng để đặt tên cho hệ điều hành của mình. Để tránh các vụ kiện cáo, Apple
đã xin giấy phép sử dụng nhãn hiệu IOS từ Cisco.
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
2

Công ty/ Nhà phát triển Apple Inc.
Programmed in C, C++, Objective-C
Họ HĐH Mac OS X/BSD/Unix-like
Tình trạng Hiện tại
Initial release 29 tháng 6, 2007
Available language(s) Đa ngôn ngữ
Nền tảng hỗ trợ ARM (iPhone, iPod touch, iPad, và Apple TV)
Giao diện người dùng Cocoa Touch (Multi-touch, GUI)
Giấy phép Quyền sở hữu EULA ngoại trừ các thành phần mã nguồn mở
Trang mạng
www.apple.com/ios

Bảng 1.1 Thông tin về hệ điều hành IOS
1.2 Môi trường phát triển ứng dụng
1.2.1 Cấu trúc của hệ điều hành IOS
Apple không cho phép người dùng tiếp cận trực tiếp với bất kì phần cứng nào của
Iphone, mọi tương tác phần cứng phải thông qua một số lớp khác nhau của phần mềm,
hoạt động như một trung gian giữa các ứng dụng và thiết bị phần cứng. Những lớp này
được hiểu như một hệ điều hành , cụ thể ở đây là hệ điều hành IOS.
Mỗi lớp của hệ điều hành cung cấp một mức độ ngày càng cao của sự trừu tượng
hóa với sự phức tạp của cách làm việc với phần cứng.
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
3
Hình 1.1 Phân lớp trong hệ điều hành IOS
1.2.2 Lớp Core OS (lớp nhân trong)
Là lớp dưới cùng của IOS, nó là nền tảng của hệ điều hành. Nó đảm nhiệm các
nhiệm vụ như quản lí bộ nhớ, file hệ thống, kiên kết mạng và một số chức năng khác, nó
tác động trực tiếp tới phần cứng. Lớp Core OS bao gồm một số thành phần sau:
• CFNetwork Framework: Cung cấp một giao diện dựa trên C tới các lớp giao
thức mạng TCP/IP và truy cập mức thấp tới socket BSD. Nó cho phép mã ứng
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
4
dụng được viết và làm việc với các dịch vụ HTTP, FTP và DNS, khởi tạo bảo
mật và mã hóa các kết nối sử dụng Secure Sockets Layer (SSL) hoặc Transport
Layer Security (TLS).
• External Accessory framework: Cung cấp khả năng kết nối với những phụ
kiện kết nối vật lý mở rộng tới Iphone thông qua 30-pin dock connector hoặc
qua Bluetooth.
• Security framework: Cung cấp các giao diện bảo mật khi chúng ta kết nối tới
mạng mở rộng bên ngoài như chứng thực, khóa công khai và khóa private, mã
hóa và xác thực sử dụng hàm băm (HMAC).
• System (LibSystem): IOS được xây dựng dựa trên nền tảng UNIX, vì thế

những thành phần hệ thống của Core OS cung cấp nhiều chức năng giống với
hệ điều hành UNIX. Nó bao gồm nhân hệ điều hành (Mach Kernel) và các
Driver của các thiết bị. Nhân là nền tảng của toàn bộ IOS được xây dựng và
cung cấp giao diện mức thấp cho các phần cứng lớp nằm dưới. Nhân chịu trách
nhiệm cấp phát bộ nhớ, quản lý chu kì sống của tiến trình, đầu vào/ đầu ra,
kiên lạc đa tiến trình, quản lý luồng, kết nối mạng mức thấp quản lý luồng và
truy cập hệ thống.
1.2.3 Lớp Core Service (lớp nhân dịch vụ)
Lớp Core Service cung cấp các dịch vụ dựa trên nền tảng của lớp Core OS. Nó cung
cấp những truy cập cơ bản tới các dịch vụ của IOS và nó bao gồm các thành phần sau:
• AddressBook framework: Cung cấp truy cập có thứ tự tới cơ sở dữ liệu về
danh bạ của Iphone, cho phép các ứng dụng có thể lưu trữ và sửa đổi các mục
danh bạ.
• Core Data Framework: Được cung cấp để dễ dàng tạo ra các mô hình dư liệu
và lưu trữ trong các ứng dụng dựa trên Model-View-Controller (MVC). Sử
dụng framework này giảm được số lượng mã cần phải viết để thực hiện những
công việc thông thường khi làm việc với cấu trúc dữ liệu trong ứng dụng.
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
5
• Core Foundation Framework: Cung cấp các thứ như kiểu dữ liệu, thao tác
trên chuỗi, quản lý khối dữ liệu có thứ tự, thao tác URL, các luồng và chạy các
vòng lặp, thời gian, thao tác XML cơ bản, các cổng và các kết nối socket.
• Foundation Framework: Là một framework chuẩn của Objective-C. Nó chứa
những gói Objective-C xung quanh Core Foundation Framework.
• Core Location Framework: Cho phép chúng ta lấy được thông tin về vị trí
hiện thời của thiết bị và cso khả năng định hướng. Phương thức dùng bởi thiết
bị để cung cấp tọa độ sẽ phụ thuộc trên dữ liệu có sẵn tại thời gian thông tin
được yêu cầu và phần cứng hỗ trợ được cung cấp bởi model Iphone cụ thể mà
ứng dụng chạy trên đó. Nó sẽ dựa trên việc phân tích GPS, dữ liệu mạng Wifi
hoặc phép đo tam giác cột thu phát sóng.

• Store Kit Framework: Mục đích của phần này là tạo sự dễ dàng trong việc
trao đổi thương mại giữa uwngsd ụng của chúng ta và Apple Store.
• SQLite library: Cho phép lưu trữ cơ sở dữ liệu nhỏ, SQL dựa trên cơ sở dữ
liệu để tạo và thao tác với những cơ sở dữ liệu bên trong ứng dụng.
1.2.4 Lớp Media Services (lớp liên kết)
Lớp Media Service của IOS cung cấp các khả năng về audio, video, animations và
graphics. Như các lớp khác trong ngăn xếp của IOS, lớp media bao gồm một số các
Framework cái mà có thể được sử dụng trong những ứng dụng Iphone:
• Core Graphics Framework: Cung cấp một máy dựng hai chiều nhẹ. Những
tính năng của Framework này bao gồm việc tạo và trình diễn những file PDF,
bản vẽ dựa trên Vector, các lớp trong suốt, đường dẫn dựa trên bản vẽ, thao tác
và quản lý màu sắc.
• Quartz Core Framework: Mục đích của Framework này là cung cấp khả
năng hoạt hình cho Iphone. Nó cung cấp nền tảng cho các hiệu ứng trực quan
và hoạt hình được sử dụng bởi Framework UIKit và cung cấp một giao diện
lập trình dựa trên Objective-C để tạo hoạt hình đặc biệt bên trong ứng dụng
Iphone.
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
6
• OpenGL ES Framework: OpenGL for Embedded System (ES) là một phiên
bản nhỏ của OpenGL đầy đủ được thiết kế đặc biệt để dành cho các thiết bị
nhỏ như Iphone.
• Iphone Audio Support: Cho phép IOS có khả năng hổ trợ các định dạng như
AAC, Apple Lossless (ALAC), A-law, IMA/ADPCM, Linear PCM,
DVI/IntelIMA…
• AV Foundation Framework: Là một Framework được thiết kế cho phép phát
lại, ghi âm, quản lý nội dung của âm thanh.
• Core Audio Frameworks (CoreAudio.Framework, Audio
Toolbox.framework và AudioUnit.framework): Cung cấp khả năng truy cập
tới các thiết bị được tích hợp trong các đơn vị xử lý âm thanh.

• Open Audio Library (OpenAL): OpenAL là 1 công nghệ nền tảng lai tạo
được sử dụng để cung cấp hiệu ứng âm thanh 3D chất lượng cao.
• Media Player Framework: Framework này có thể chạy các video trong các
định dạng .mov, mp4, .m4v, 3gp tại một loạt các tiêu chuẩn nén,các độ phân
giải và các tốc độ khung hình.
1.2.5 Lớp Cocoa Touch (lớp tiếp xúc)
Lớp này nằm ở trên cùng trong ngăn xếp của IOS và chứa những Framework cái mà
được sử dụng thường xuyên bởi các lập trình viên Iphone. Cocoa Touch dựa trên nền
tảng chuẩn của Cocoa API của MAC OS X và có phần mở rộng và sửa đổi để phù hợp
với Iphone. Lớp Cocoa Touch cung cấp các Framework cho việc phát triển ứng dụng
Iphone như sau:
• UIKit Framework: Đây là một Framework khổng lồ và một giao diện lập
trình dựa trên Objective-C giàu tính năng. Chúng ta sẽ phải tốn nhiều thời gian
làm việc để tìm hiểu về nó. Hầu hết các cuốn sách đều viết riêng về UIKit
Framework. Một số thành phần chính của UIKit là:
− Quản lý và tạo giao diện người dùng (text fields, buttons, labels, colors,
fonts…).
− Quản lý chu kì sống của ứng dụng.
− Điều khiển sự kiện ứng dụng (như chạm vào màn hình ứng dụng).
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
7
− Các chức năng Cut, Copy, Paste.
− Quản lý và tình diễn nội dung Web và văn bản.
− Điều khiển dữ liệu.
− Tích hợp nhiều ứng dụng.
− Đưa ra thông báo
− Bộ gia tốc, pin, cảm biến khoảng cách, camera và tương tác với thư
viện hình ảnh.
• Map Kit Framework: Cung cấp cho chúng ta một giao diện lập trình để cho
phép chúng ta xây dựng bản đồ dựa trên các ứng dụng riêng của chúng ta. Nó

cho phép chúng ta hiển thị bản đồ có thể cuộn tới bất kì vị trí nào, hiển thị bản
đồ tương ứng với vị trí địa lý hiện tại của thiết bị và chú thích theo nhiều cách
khác nhau.
• Push Notification Service: Cho phép những ứng dụng cảnh báo người dùng
về một sự kiện thậm chí khi ứng dụng hiện tại không được chạy trên thiết bị.
Nó rất phổ biến được sử dụng bởi các ứng dụng dựa trên tin tức. Thông thường
khi có tin tức mới thì dịch vụ sẽ tạo ra một tin nhắn trên thiết bị với tiêu đề của
tin tức và cung cấp cho người dùng tùy chọn đề tài các ứng dụng tin tưởng ứng
để đọc thêm chi tiết. Tính năng này lên được sử dụng tiết kiệm để tránh gây
phiền hà cho người sử dụng vì thương xuyên gián đoạn.
• Message UI Framework: Cung cấp mọi thứ mà chúng ta cần để cho phép
người sử dụng gửi email từ trong ứng dụng của chúng ta. Trên thực tế nó còn
cung cấp các thành phần giao diện thông qua đó người dùng có thể nhập các
thông tin địa chỉ email và nội dung tin nhắn. ngoài ra thông tin này có thể xác
định trước bên trong ứng dụng của chúng ta và sau đó được hiển thị cho người
sử dụng để chỉnh sửa và phên duyệt trước khi gửi.
• Address Book UI Framework: Đưa ra các chức năng chính cho IPhone như
là một thiết bị thông tin liên lạc và trợ giúp kỹ thuật số. Toàn bộ Framework là
giành riêng cho việc tích hợp các dữ liệu số địa chỉ vào trong ứng dụng riêng
của chúng ta. Cho phép chúng ta truy cập vào, hiển thị, chỉnh sửa và nhập
thông tin liên lạc từ sổ địa chỉ của IPhone từ bên trong ứng dụng riêng của
chúng ta.
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
8
• Game Kit Framework: Cung cấp kết nối ngang hàng (peer to peer) và kết nối
giọng nói giữa nhiều thiết bị và cho phép nhiều người sử dụng chạy cùng một
ứng dụng để tương tác.
CHƯƠNG 2: NGÔN NGỮ LẬP TRÌNH OBJECTIVE-C
Objective-C là ngôn ngữ lập trình hướng đối tượng. Nó thêm cách gởi thông báo của
ngôn ngữ Smaltalk vào ngôn ngữ C. Ngày nay Objective-C được dùng như ngôn ngữ

chính thức cho hệ điều hành Mac OS và IOS.
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
9
2.1 Lịch sử phát triển ngôn ngữ Objective-C
Vào đầu những năm 1980, Brad J. Cox đã thiết kế ra ngôn ngữ Objective-C dựa
trên ngôn ngữ SmallTalk-80. Có thể hình dung rằng Objective-C là ngôn ngữ lập trình
được đặt ở lớp trên của ngôn ngữ lập trình C truyền thống, điều này có nghĩa rằng ngôn
ngữ C được bổ sung thêm các thành phần mở rộng (extensions) để hình thành nên một
ngôn ngữ lập trình mới đó chính là Objective-C. Ngôn ngữ Objective-C này cho phép
chúng ta tạo và quản lý các đối tượng (Objects).
Từ năm 1988, Công ty NeXT Software nắm giữ bản quyền của ngôn ngữ
Objective-C này. Họ đã phát triển các bộ thư viện và cả môi trường phát triển cho nó có
tên là NEXTSTEP.
Năm 1994, NeXT Computer phối hợp với Sun Microsystems chuẩn hóa lại
NEXTSTEP trong bản đặc tả tên là OPENSTEP. Bản hiện thực của OPENSTEP chính là
GNUStep. Một hệ thống bao gồm cả Linux kenel và môi trường phát triển GNUStep lúc
đó được gọi là LinuxSTEP.
Đến năm cuối tháng 12 năm 1996, hãng Apple đã mua lại công ty NeXT Software
và môi trường NEXTSTEP/OPENSTEP đã trở thành thành phần cột lỗi của hệ điều hành
OS X mà Apple giới thiệu sau này. Phiên bản chính thức của môi trường phát triển này
do Apple giới thiệu ban đầu có tên là Cocoa. Bằng việc hỗ trợ sẵn ngôn ngữ Objective-C,
đồng thời tích hợp một số công cụ phát triển khác như Project Builder (đây chính là tiền
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
10
thân của Xcode) và Interface Builder, Apple đã tạo ra một môi trường mạnh mẽ để phát
triển ứng dụng trên MAC OS X.
Đến năm 2007, Apple tung ra bảng nâng cấp cho ngôn ngữ Objective-C và gọi đó
là Objective-C 2.0. Cho đến khi Apple chính thức giới thiệu iPhone vào năm 2007, các
rất rất nhiều các developers mong muốn được tham gia phát triển ứng dụng trên thiết bị
mang tính cách mạng về công nghệ này. Ban đầu, Apple không khuyến khích việc tham

gia phát triển ứng dụng từ bên thứ ba này mà chỉ cho phép các ứng dụng chạy trên nền
web được chạy thông qua ứng dụng dạng trình duyệt Safari mà họ cấy sẵn trong iPhone.
Điều này làm cho các ứng dụng khi muốn chạy phải yêu cầu kết nối tới máy chủ web
host ứng dụng của các developers tham gia phát triển. Rõ ràng động tác này của Apple
không thể đáp ứng nhu cầu của các developers cho có rất nhiều hạn chế trong việc phát
triển ứng dụng web-based như thế. Ngay sau đó, Apple đã trấn an giới phát triển ứng
dụng bằng việc chính thức thông báo rằng các developers sẽ có thể phát triển các ứng
dụng thuần iPhone. Tức là các ứng dụng nằm trong iPhone và chạy trên hệ điều hành của
iPhone giống như các ứng dụng có sẵn của Apple như Contacts, Stocks, Weather, chạy
trên thiết bị đặc biệt này.
Thật sự thì hệ điều hành iOS chính là 1 phiên bản đặc biệt của hệ điều hành MAC
OS X, điều này cho phép các developers có thể phát triển và kiểm thử ứng dụng của mình
trên các dòng máy tính như MacBook Pro, MacBook Air, Mac Mini, Và thực tế, Apple
đã nhanh chóng sau đó giới thiệu bộ công cụ phát triển ứng dụng mạnh mẽ (Software
Development Kit - SDK) cho phép phát triển và kiểm thử ứng dụng trên iPhone một cách
nhanh chóng. Bộ mô phỏng thiết bị iPhone của Apple, iPhone Simulator, cho phép
developers có thể debug các ứng dụng của họ ngay trong môi trường phát triển mà không
cần phải chạy thật trên các thiết bị iPhone và iPod Touch.
Đến năm 2010, với việc chính thức giới thiệu thêm thiết bị iPad, Apple chuyển
sang sử dụng thuật ngữ tổng quát hơn đó chính là iOS để chỉ hệ điều hành dùng trên các
thiết bị di động có thể có sự khác biệt về kích thước vật lý và độ phân giải như iPhone,
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
11
iPod, iPad và các phiên bản khác nhau của chúng. iOS SDK giờ đây sẽ cho phép các
developers phát triển ứng dụng trên bất cứ thiết bị iOS này. iOS 6 chính là phiên bản hiện
tại của hệ điều hành đầy thú vị này.
2.2 Tổng quan về Objective-C
Objective-C được thiết kế để phục vụ mục đích lập trình hướng đối tượng. Nó hoạt
động giống như là một tập hợp các thành phần mở rộng rất mạnh mẽ của ngôn ngữ C.
Objective-C kết hợp với đặc điểm ưu tú nhất của C và ngôn ngữ SmallTalk. Objective-C

khá đơn giản để học và có đầy đủ các khả năng của một ngôn ngữ lập trình hướng đối
tượng.
Objective-C đơn giản và nhỏ gọn nhưng lại là một thành phần mở rộng rất mạnh
mẽ của ngôn ngữ chuẩn ANSI C. Objective-C cung cấp đầy đủ các khả năng lập trình
hướng đối tượng nhưng lại được thực thi theo cách khá đơn giản và dễ dàng.
Hầu hết các ngôn ngữ lập trình hướng đối tượng cung cấp:
− Một thư viện các Objects.
− Các công cụ phát triển cần thiết.
− Hổ trợ hướng đối tượng và các thư viện liên quan.
Objective-C cũng cung cấp đầy đủ các thành phần trên. Chúng ta có thể sử dụng
Objective-C để phát triển một phần mềm hoàn thiện. Apple đã chọn Objective-C làm
ngôn ngữ lập trình chính cho hệ thống máy Mac và iphone.
Là ngôn ngữ hướng đối tượng nên Objective-C giải quyết các vấn đề lập trình dựa
trên khái niệm các Objet. Nó bao gồm 3 phần:
− Interface: Interface của một lớp (class) thông thường được định nghĩa
trong file header với đuôi .h. Nó chính là phần khai báo của một lớp.
− Implementation: Mã nguồn của chương trình được viết trong phần
implementation của một lớp và được định nghĩa trong một file có đuôi .m.
Đây là phần định dạng nghĩa của lớp.
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
12
− Instantiation: Sau khi khai báo và định nghĩa một lớp, chúng ta có thể thực
thể hóa lớp này bằng việc cấp phát bộ nhớ cho new object của lớp đó.
Tóm lại Objective-C là:
• Thành phần mở rộng của ngôn ngữ lập trình C.
• Là ngôn ngữ lập trình hướng đối tượng đơn giản nhưng mạnh mẽ.
• Là ngôn ngữ được Apple sử dụng để phát triển các ứng dụng cho hệ thống máy
Mac và Iphone.
Tại sao lại sử dụng Objective-C
Ngôn ngữ lập trình Objective-C được chọn cho Cocoa Framework vì một số lý do dau

đây:
• Nó là ngôn ngữ lập trình hướng đối tượng và các chức năng cung cấp bởi
Cocoa Framework chỉ có thể được mang lại bởi các kỹ thuật hướng đối tượng .
• Nó là thành phần mở rộng của chuẩn ANSI C vì vậy các chương trình viết bằng
C của Framework này sẽ không bị mất đi tính năng nào và người dùng được
hưởng các lợi thế của ngôn ngữ C.
• Với ngôn ngữ này, người dùng có thể lựa chọn cả lập trình hướng đối tượng và
lập trình thủ tục khi cần thiết.
• Nó đơn giản và dễ học bởi cú pháp của nó khá ngắn gọn nên có thể giúp cho lập
trình viên đạt được hiệu quả mong muốn mà không gặp nhiều khó khăn.
• Nó rất năng động nếu so sánh với các ngôn ngữ mở rộng khác dựa trên C. Trình
biên dịch đóng một vai trò rất quan trọng trong việc bảo vệ thông tin liên quan
đến các đối tượng để sử dụng lúc run time.
• Nó là một ngôn ngữ mạnh bởi vì các quyết định có thể được đưa ra lúc biên
dịch sẽ được trì hoãn cho tới khi chương trình chạy.
• Sự năng động của Objective-C có hai lợi thế đáng kể:
− Nó hổ trợ ràng buộc động và mở tạo ra một cấu trúc đơn giản đối với giao
diện tương tác người dùng.
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
13
− Nó cho phép phát triển các công cụ phức tạp. Một giao diện cho hệ thống
run time tạo điều kiện cho việc tiếp cận các thông tin run time giúp cho
việc monitor ứng dụng viết bằng Objective-C .
2.3 Các yếu tố căn bản của Ojective-C
2.3.1 Khai báo biến và cách sử dụng
2.3.1.1 Biến
Biến được sử dụng để lưu trữ các giá trị của ứng dụng. Biến gồm có: kiểu dữ
liệu, tên biến và giá trị của biến.
Cú pháp:
Kiểu_dữ_liệu tên_biến ;

hoặc
Kiểu_dữ_liệu tên_biến = giá_trị_của_biến;
Trong đó “=”: lệnh gán giá trị cho biến
VD: int x ; hoặc int x = 10;
2.3.1.2 Quy tắc đặt tên
Quy tắc đặt tên biến:
• Ngôn ngữ Objective-C có phân biệt hoa thường.
• Tên biến không có dấu tiếng việt.
• Tên biến không có khoảng trắng.
• Tên biến không được bắt đầu bằng số.
• Tên biến không được có các ký tự đặc biệt (ngoại trừ dấu gạch dưới _)
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
14
• Tên biến không được đặt trùng với các từ khoá của ngôn ngữ objective-
C. VD: void, if, static,
2.3.1.3 Kiểu dữ liệu
Kiểu dữ liệu sẽ giúp trình biên dịch xác định được loại dữ liệu (số nguyên,
số thực, chuỗi,…) mà chúng ta muốn lưu trữ là gì từ đó sẽ cấp phát lượng
bộ nhớ tương ứng với loại dữ liệu mà chúng ta cần lưu trữ. Objective-C hỗ
trợ các kiểu dữ liệu cơ bản như sau:
Loại dữ liệu Tên kiểu Số ô nhớ Miền giá trị
Kí tự
char 1 byte -128 … 127
unsigned char 1 byte 0 … 255
Số nguyên
int 4 bytes -2147483648 … 2147483647
unsigned int 4 bytes 0 … 4294967295
short 2 bytes -32768 32767
unsigned short 2 bytes 0 65535
long 4 bytes -2147483648 2147483647

unsigned long 4 bytes 0 … 4294967295
long long 8 bytes
-9,223,372,036,854,775,808
9,223,372,036,854,775,807
Số thực
float 4 bytes 0 3.4028235e+38
double 8 bytes 0 1.7976931E+308
Long double 16 bytes 0 1.1897315E+509
logic BOOL 1 byte 0, 1; True, False; Yes, No
Bảng 2.1 Kiểu dữ liệu trong Objectived-C
2.3.1.4 Phép toán
Phép toán Ký hiệu Ví dụ
Cộng + A + B
Trừ - A - B
Nhân * A * B
Chia / A / B
Lấy phần dư % A % B
Bảng 2.2 Các phép toán trong Objectived-C
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển
15
Lưu ý: phép lấy phần dư chỉ được dùng trên 2 toán hạng kiểu số nguyên (nếu không sẽ
sinh lỗi cú pháp)
Ví dụ: 9 % 5 = 4
2.3.2 Từ khóa
2.3.2.1 Khai báo class, category và protocol
Một số từ khóa thông dụng trong Objective-C
• @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.
• @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ộ
GVHD: ThS Trần Mạnh Hùng SVTH: Trương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển

×