1. Trang chủ
  2. » Công Nghệ Thông Tin

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

78 1,9K 32

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 78
Dung lượng 4,06 MB

Nội dung

Bảng 1.1 Thông tin về hệ điều hành IOSBả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

Trang 1

KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG

Giáo viên hướng dẫn: THS TRẦN MẠNH HÙNG

Sinh viên thực hiện:

Trang 2

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óngtrên thế giới nói chung và Việt Nam nói riêng, trong đó Việt Nam hiện đang đứng thứ haithế 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ínhbảng phổ biến nhất thế giới: Android 75%, iOS 17,3%, Windows Phone 3,2% Tại ViệtNam, 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à WindowsPhone

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

Trang 3

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ựctiế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 emkhô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ànhtố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ệnTrương Nhựt Bình – Trần Phúc Duy – Tạ Văn Tuyển

Trang 4

(Của giáo viên hướng dẫn)

Trang 5

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.1 Hệ điều hành IOS 1

1.2 Môi trường phát triển ứng dụng 2

1.2.1 Cấu trúc của hệ điều hành IOS 2

1.2.2 Lớp Core OS (lớp nhân trong) 3

1.2.3 Lớp Core Service (lớp nhân dịch vụ) 4

1.2.4 Lớp Media Services (lớp liên kết) 5

1.2.5 Lớp Cocoa Touch (lớp tiếp xúc) 6

CHƯƠNG 2: NGÔN NGỮ LẬP TRÌNH OBJECTIVE-C 9

2.1 Lịch sử phát triển ngôn ngữ Objective-C 9

2.2 Tổng quan về Objective-C 11

2.3 Các yếu tố căn bản của Ojective-C 13

2.3.1 Khai báo biến và cách sử dụng 13

2.3.1.1 Biến 13

2.3.1.2 Quy tắc đặt tên 13

2.3.1.3 Kiểu dữ liệu 14

2.3.1.4 Phép toán 15

2.3.2 Từ khóa 15

2.3.2.1 Khai báo class, category và protocol 15

Trang 6

2.3.2.3 Xử lý ngoại lệ 16

2.3.3 Câu lệnh trong Objective-C 17

2.3.4 Mảng 20

2.3.4.1 Định nghĩa 20

2.3.4.2 Mảng NSArray 20

2.3.5 Chuỗi – Đối tượng NSString 21

2.3.5.1 Khởi tạo chuỗi 21

2.3.5.2 Đối tượng NSString 21

2.3.6 Đối tượng 22

2.3.6.1 ID 22

2.3.6.2 Ép kiểu động 22

2.3.6.3 Quản lý bộ nhớ 22

2.3.7 Lớp 23

2.3.7.1 Định nghĩa lớp 23

2.3.7.2 Phương thức 24

2.3.7.3 Kế thừa 26

2.3.8 Properties 27

2.3.9 Category 28

2.3.10 Protocol 29

2.3.11 Selector 29

2.3.12 Association References 31

CHƯƠNG 3 BỘ CÔNG CỤ HỖ TRỢ LẬP TRÌNH XCODE 32

3.1 Iphone SDK-Iphone Software Development Kit 32

3.2 Các thành phần của Iphone SDK 33

3.3 Xcode 33

Trang 7

3.4 Các mẫu ứng dụng trong Xcode 37

3.5 Tổng quan về XCode Project 39

3.6 Thêm các Framewok và project 41

3.7 IPhone Simulator 42

3.8 Interface Builder 45

3.9 Instrument 46

3.10 Xây dựng và cài đặt ứng dụng 47

3.11 Mô hình MVC (Model-View-Controller) 47

CHƯƠNG 4: MỘT SỐ THAO TÁC CƠ BẢN 52

4.1 App Icon – Loading Screen 52

4.1.1 App Icon 52

4.1.2 Loading Screen 52

4.2 Thay đổi App Name 52

4.3 Ẩn Status Bar 54

4.4 Background 55

4.4.1 Background Image 55

4.4.2 Background Color 55

4.5 Thêm Framework 56

CHƯƠNG 5: MỘT SỐ ĐỐI TƯỢNG CƠ BẢN 59

5.1 Đối tượng Label – Button – Text Field 59

5.1.1 Đối tượng Label 59

5.1.2 Đối tượng Button 60

5.1.3 Đối tượng Text Field 61

5.2 Kết nối cơ sở dữ liệu với Sqlite 62

5.2.1 Giới thiệu 62

5.2.2 Cài đặt Sqlite Manager cho Firefox 62

Trang 8

CHƯƠNG 6: XÂY DỰNG PHẦN MỀM XEM THÔNG TIN THỜI TIẾT 64

6.1 Ứng dụng xem thông tin thời tiết 64

6.1.1 Giới Thiệu 64

6.1.2 Chuẩn Bị 64

6.1.3 Cấu trúc phần mềm 64

6.1.4 Cơ chế vận hành 65

6.1.5 Tính Năng 67

CHƯƠNG 7: TỔNG KẾT 68

Trang 9

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

Trang 10

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

Trang 11

CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH IOS1.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 Sotrecủ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ànhIOS, 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 1nă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ộtcá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ứ bakhô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 17thá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ềuhà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” đã đượcCisco 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 đã xingiấy phép sử dụng nhãn hiệu IOS từ Cisco

Trang 12

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ủaIphone, 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ượnghóa với sự phức tạp của cách làm việc với phần cứng

Trang 13

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ácnhiệ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

Trang 14

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ảomật và mã hóa các kết nối sử dụng Secure Sockets Layer (SSL) hoặc TransportLayer 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ặcqua 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ácDriver 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áchnhiệ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ó cungcấ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ụcdanh 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ữngcô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

Trang 15

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ácvò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 Wifihoặ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ácFramework 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ệnlập trình dựa trên Objective-C để tạo hoạt hình đặc biệt bên trong ứng dụngIphone

Trang 16

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ângiả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ềntả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ợpvới Iphone Lớp Cocoa Touch cung cấp các Framework cho việc phát triển ứng dụngIphone 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 gianlà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ề UIKitFramework 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…)

Trang 17

 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)

 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áchkhá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ườngkhi 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ủatin 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âyphiề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òncung cấp các thành phần giao diện thông qua đó người dùng có thể nhập cácthô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à

Trang 18

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êngcủa chúng ta Cho phép chúng ta truy cập vào, hiển thị, chỉnh sửa và nhậpthông tin liên lạc từ sổ địa chỉ của IPhone từ bên trong ứng dụng riêng củachúng ta.

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

Trang 19

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ủangô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

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ựatrê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ônngữ C được bổ sung thêm các thành phần mở rộng (extensions) để hình thành nên mộtngôn ngữ lập trình mới đó chính là Objective-C Ngôn ngữ Objective-C này cho phépchú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ạiNEXTSTEP 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

Trang 20

Đế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ềnthân của Xcode) và Interface Builder, Apple đã tạo ra một môi trường mạnh mẽ để pháttriể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ácrấ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 thamgia 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ềnweb đượ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ủ webhost ứng dụng của các developers tham gia phát triển Rõ ràng động tác này của Applekhô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áttriển ứng dụng web-based như thế Ngay sau đó, Apple đã trấn an giới phát triển ứngdụ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 ứngdụ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ủaiPhone giống như các ứng dụng có sẵn của Apple như Contacts, Stocks, Weather, chạytrê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ìnhtrê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ẽ (SoftwareDevelopment Kit - SDK) cho phép phát triển và kiểm thử ứng dụng trên iPhone một cáchnhanh chóng Bộ mô phỏng thiết bị iPhone của Apple, iPhone Simulator, cho phép

Trang 21

developers có thể debug các ứng dụng của họ ngay trong môi trường phát triển mà khôngcầ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ểnsang 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ácthiế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,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ácdevelopers 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ệntạ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-Ckhá đơ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 đốitượ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ìnhhướ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ụngObjective-C để phát triển một phần mềm hoàn thiện Apple đã chọn Objective-C làmngô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ựatrên khái niệm các Objet Nó bao gồm 3 phần:

Trang 22

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

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áyMac 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 đượchưở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ậptrì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ìnhbiê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

Trang 23

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êndị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 giaodiện tương tác người dùng

 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ốngrun time tạo điều kiện cho việc tiếp cận các thông tin run time giúp choviệ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

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

Trang 24

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 _)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ị

long long 8 bytes -9,223,372,036,854,775,808 9,223,372,036,854,775,807

Số thực

double 8 bytes 0 1.7976931E+308Long double 16 bytes 0 1.1897315E+509

Bảng 2.1 Kiểu dữ liệu trong Objectived-C

2.3.1.4 Phép toán

Trang 25

Nhân * A * B

Bảng 2.2 Các phép toán trong Objectived-C

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

Trang 26

@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++.

2.3.2.2 Phạm vi truy xuất các biến

@private: Giới hạn phạm vi trong lớp mà biến thể hiện được khai báo

@protected (default): 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.

2.3.2.3 Xử lý ngoại lệ

Ngôn ngữ cũng hỗ trợ các cấu trúc try – catch – throw - finally giống như C++

@try - @catch - @throw - @finally cách thức sử dụng cũng hoàn toàn tương tự.

2.3.3 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

Lệnh If

Lệnh if

if (<condition>) {

Trang 29

Trong đó

- Expression và constant là kiểu số nguyên

- Lệnh “break” thoát khỏi “switch”

Trang 30

2.3.5.1 Khởi tạo chuỗi

Đối với chuỗi trong Objective-C phải bắt đầu bằng @ VD: @“UIT”

Để kiểm tra giá trị của chuỗi ta dung hàm NSLog VD: NSLog(@“%@”,@“UIT”);

2.3.5.2 Đối tượng NSString

Cách khai báo:

NSString *Chuoi1;

Các hàm xử lý chuỗi đối với NSString:

length: lấy độ dài của chuỗi

characterAtIndex: Lấy ra kỹ tự ở vị trí chỉ định

componentsSeparatedByString: Cắt chuỗi thành nhiều phần

Trang 31

substringFromIndex: Lấy ra chuỗi con tính từ vị trí chỉ định đến cuối

chuỗi

substringToIndex: Lấy ra chuỗi con tính từ vị trí chỉ định đến đầu chuỗi

rangeOfString: Tìm xem một chuỗi nào có có tồn tại trong chuỗi cho

trước hay không

stringByReplacingOccurrencesOfString:withString: Thay thế một

chuỗi bằng một chuỗi mới trong chuỗi cho trước

compare: So sánh hai chuỗi với nhau

intValue: Lấy số nguyên ra từ chuỗi.

2.3.6 Đối tượng

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

2.3.6.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ộtcon 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ốngnhư 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;

2.3.6.2 Ép kiểu động

Những phương thức dưới đây dùng để kiểm tra kiểu

(BOOL) isKingOfClass: classObj >> đối tượng là hậu duệ hoặc thểhiện của classObj

Trang 32

(BOOL) isMemberOfClass:classObj >> là một thành phần củaobjClass

(BOOL) respondsToSelector: selector >> đối tượng có phương thứcbởi selector

(BOOL) instancesRespondToSelector: selector >> đối tượng được tạobởi lớp có đáp ứng selector

(id) performSelector >> triệu gọi chính sách selector trên đối tượng

2.3.6.3 Quản lý bộ nhớ

Nguyên tắc cơ bản

Khi chúng ta nắm quyền sở hữu một đối tượng, khởi tạo đối tượng bằngcác phương thức mà trong tên bắt đầu với với alloc hoặc new hoặc copy(ví dụ, alloc, newObject hoặc mutableCopy…) hoặc gửi một thông điệpretain, chúng ta phải có trách nhiệm giải phóng quyền sở hữu đối tượng đóbằng cách sử dụng release hoặc autorelease Bất kỳ khi nào chúng ta nhậnđược một đối tượng (không phải tự mình khởi tạo), chúng ta không đượcrelease nó

Các object trong Objective-C là reference counted (tham chiếu đếm)

Các object bắt đầu với reference là 1.

Tăng reference với method retain.

Giảm reference với method release, autorelease.

Khi số lượng reference là 0, runtime (trình biên dịch) sẽ gọi method dealloc.

Khi chúng ta nắm quyền sở hữu một object, khởi tạo object bằng các method

mà trong tên bắt đầu với “alloc”, “new” hoặc “copy” (ví dụ, alloc,

allocWithZone, newObject hoặc mutableCopy…) hoặc gửi một message retain, chúng ta phải có trách nhiệm giải phóng quyền sở hữu object đó bằng

Trang 33

cách sử dụng release hoặc autorelease Bất kỳ khi nào chúng ta nhận được

một object (không phải tự mình khởi tạo), chúng ta không được release nó

Từ iOS 4.3 về sau đã hỗ trợ quản lý bộ nhớ tự động (ARC) với garbage collector ARC thực sự giúp developer dễ dàng loại bỏ memory leaks(thất thoát bộ nhớ)

2.3.7 Lớp

2.3.7.1 Định nghĩa lớp

Một lớp trong Objective-C được định nghĩa gồm 2 file thành phần tương tự C,C++ Một file *.h định nghĩa trước các biến thành phần và tên các phương thức,file *.m định nghĩa phần thực thi cho các phương thức trong file *.h

File ClassName.h

#import <headerFile.h>

@interface ClassName {variable1 declaration;

variable2 declaration;

}method1 declaration;

method2 declaration;

@end

Objective-C sử dụng từ khóa @interface để khai báo một tên lớp trong file

h Từ khóa @end được sử dụng ở cuối phần khai báo

File ClassName.m

#import “ClassName.h”

@implementation ClassName-method 1 //triển khai phương thức 1

Trang 34

-method 2 // triển khai phương thức 2

@end

Objective-C sử dụng từ khóa @implementation để khai báo phần thực thi

thực sự của lớp trong file m Từ khóa @end được sử dụng ở cuối phần khaibáo

2.3.7.2 Phương thức

Class method

 Ký hiệu dấu +

 Truy xuất thông qua tên lớp

 Không thể truy cập vào các biến thể hiện (Instance variables)

Instance method

 Ký hiệu dấu

- Truy xuất thông qua đối tượng

Khai báo phương thức

-/+ (return_type) method;

-/+ (return_type) methodPara1 : (type) para1;

-/+ (return_type) methodPara1 : (type) para1 andPara2: (type) para2;

Gọi phương thức

// Class method

MyClass *myClass = [MyClass method];

// Instance method

Trang 35

var2 = b;

} return self;

}

Lời gọi phương thức như sau

[myClassObject constructor: 100 : 200];

2.3.7.3 Kế thừa

Tương tự như các ngôn ngữ khác như C++,…

Trong Objective-C, root class của tất cả các class là NSObject

Ví dụ: Class Teacher kế thừa từ lớp Person

Trang 36

2.3.8 Properties

Trong Objective-C hỗ trợ tính năng Properties, cho phép chúng ta định nghĩacác bộ truy xuất (setter/getter) vì vậy sẽ có nhiều lợi ích sử dụng khi truy xuấtđến các biến thể hiện của đối tượng

Định nghĩa trong file.h: @property (<attributes>) type propertyName;

Thực thi trong file.m: @synthesize propertyName;

retain: Thường được sử dụng cho đối tượng

copy: Tạo một bản sao của đối tượng, được sử dụng cho đối tượng chỉ

định

atomic (default): Thực hiện đồng bộ hoá

nonatomic: Ngược với atomic

Trang 37

Hình 2.1 So sánh atomic và noautomic

2.3.9 Category

Khi ta muốn thêm một số phương thức vào một lớp có sẵn, thông thường ta sẽ mởrộng lớp đó bằng cách viết lại mã nguồn Objective-C cung cấp tính năng Categorycho phép:

 Mở rộng lớp mà không cần phải viết lại mã nguồn của lớp cũ

 Mở rộng lớp cũ trong một bộ thực thi khác

 Thêm một phương thức newMethod cho lớp MyClass thông qua Category

Trang 38

Chú ý:

 Tên của Category là duy nhất (Không được trùng)

 Trong Category không cho phép thêm các biển thể hiện

 Có thể sử dụng category tạo ra các phương thức private nếu cần

2.3.10 Protocol

Protocol định nghĩa một danh sách các phương thức bắt buộc hoặc tùy chọn màcác lớp chấp nhận (adopt) protocol bắt buộc phải thực thi

Các method khai báo trong protocol cũng có thể là các khai báo property Các

từ khóa @optional và @required thể hiện theo đúng ý nghĩa của nó, nếu không

sử dụng từ khóa thì mặc định là @required

Protocol được sử dụng trong các trường hợp:

 Khai báo các method dự kiến sẽ được thực thi

 Khai báo một interface cho một object trong khi ẩn đi class của nó

 Khảo sát tương đồng giữa các class mà không phải liên quan đến cấu trúcthứ bậc

2.3.11 Selector

Selector trong Objective-C có 02 ý nghĩa:

Trang 39

 Chỉ đến tên của một phương thức khi nó được sử dụng trong mã nguồn mộtthông điệp gởi đến một đối tượng

 Chỉ đến một định danh duy nhất mà thay thế cho một tên khi mã nguồnđược biên dịch

Selector khi được biên dịch có kiểu là SEL Tất cả các phương thức có cùng tên

thì có cùng selector Ta có thể sử dụng một selector để triệu gọi một phươngthức trên một đối tượng, điều này thể hiện khá căn bản mẫu thiết kế target-actiontrong Cocoa

SEL setWidthHeight;

setWidthHeight = @selector(setWidth:Height:);

Chỉ thị @selector cho phép ta tham chiếu đến một selector được biên dịch

hơn là tên một phương thức đầy đủ Đoạn mã trên là một selector cho

phương thức setWidth:Height được assign cho biến SEL là

setWidthHeight

Ba phương thức performSelector:, performSelector:withObject:, và performSelector:withObject:withObject:, định nghĩa trong protocol NSObject lấy các định danh SEL như là các tham số khởi tạo Tất cả các

phương thức này ánh xạ trực tiếp vào thông điệp phương thức

Ví dụ:

[friend performSelector:@selector(gossipAbout:) withObject:aNeighbor];

Tương đương với

[friend gossipAbout:aNeighbor];

2.3.12 Association References

Sử dụng tham chiếu liên kết để giả lập việc bổ sung các biến thể hiện đối tượngvào một đối tượng khác

Ngày đăng: 11/03/2015, 18:47

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w