HÀ NỘI 05-2011
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Thông tin về sinh viên
Họ và tên sinh viên: Nguyễn Quốc Huy
Điện thoại liên lạc : 01692348486 Email:
Lớp: CNPM Hệ đào tạo: Đại học chính quy
Đồ án tốt nghiệp được thực hiện tại: Đại học Bách Khoa – Hà Nội
Thời gian làm ĐATN: Từ ngày 28 / 02 /2011 đến 28 / 05 /2011
2. Mục đích nội dung của ĐATN
• Tìm hiểu môi trường lập trình trên điện thoại iPhone
• Xây dựng ứng dụng cung cấp dịch vụ thông tin , hỗ trợ người dùng trên đi thoại di
động iPhone (phía client)
• Xây dựng Server cung cấp cổng thông tin phục vụ ứng dụng phía client
3. Các nhiệm vụ cụ thể của ĐATN
Từ các mục đích nội dụng, các nhiệm vụ cụ thể của đồ án sẽ thực hiện
• Tim hiểu về lập trình trên điện thoại di động
• Tìm hiểu về iPhone
• Tìm hiểu về công cụ, ngôn ngữ , nền tảng lập trình cho điện thoại iPhone
• Tìm hiểu về thiết kế và lập trình Server , mô hình hệ thống Mobile Portal
• Thiết kế và xây dựng ứng dụng cung cấp dịch vụ thông tin trên điện thoại iPhone
4. Lời cam đoan của sinh viên:
Tôi – Nguyễn Quốc Huy - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự
hướng dẫn của ThS Lương Mạnh Bá và ThS Nguyễn Tiến Thành
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ
công trình nào khác.
Hà Nội, ngày tháng năm
Tác giả ĐATN
Nguyễn Quốc Huy
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 1
5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo
vệ:
Hà Nội, ngày tháng năm
Giáo viên hướng dẫn
ThS Lương Mạnh Bá
Hà Nội, ngày tháng năm
Giáo viên hướng dẫn
ThS Nguyễn Tiến Thành
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 2
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Nhận thức được xu hướng phát triển của các ứng dụng di động hiện nay cũng như
trong tương lai gần sẽ tiếp tục tăng và dựa trên những nền tảng di động của các năm trước .
Đặc biệt trong năm nay được dự đoán sẽ là sự bùng nổ của 1 loạt các ứng dụng di động
được tung ra thị trường . Các công ty phát triển phần mềm cũng như cá nhân các lập trình
viên đang tìm kiếm cho mình 1 ứng dụng đáp ứng được hầu hết các tầng lớp khách hàng
trong nhu cầu sử dụng riêng . Từ đó hệ thống cổng thông tin di động Mobile Portal đã ra
đời và đi vào hoạt động , với đặc tính “chỉ 1 kết nối” hay “tất cả trong 1” sẽ là đầu mối
thông tin cho nhiều vấn đề , giúp người dùng định hướng trong hành trình khám phá kho
báu internet rộng rãi .
Trọng tâm của đồ án sinh viên xin trình bày việc xây dựng 1 phần server của hệ thống
mobile portal – và xây dựng thành phần client - ứng dụng trên nền iPhone giao tiếp với
server qua hệ thống mobile portal này . Các phần chính của báo cáo :
• Phần 1 : Nền tảng công nghệ
o Chương 1 : Tìm hiểu môi trường lập trình trên di động , tổng quan về
lập trình iPhone . Giới thiệu Ngôn ngữ , công cụ lập trình .
o Chương 2 : Mô hình tổng quan về mobile portal .
• Phần 2 : Xây dựng thành phần Server
o Chương 3 : Xây dựng 1 phần thành phần server trong hệ thống mobile
portal
• Phần 3 : Xây dựng thành phần Client
o Chương 4 : Xây dựng thành phần client cung cấp các dịch vụ truy cập
thông tin đa phương tiện . Phân tích thiết kế ứng dụng .
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 3
Lời nói đầu
Đồ án tốt nghiệp này đã được hoàn thành sau một thời tìm hiểu, xây dựng tại Công ty
Cổ phần dịch vụ công nghệ thông tin Naiscorp. Ngoài sự cố gắng và nỗ lực của bản
thân, còn có sự giúp đỡ của nhiều người để em có thể hoàn thành được đồ án như ngày
nay.
Trước hết, em xin được gửi lời cảm ơn sâu sắc đến ThS Lương Mạnh Bá và ThS
Nguyễn Tiến Thành - Bộ môn Công nghệ phần mềm, Viện Công nghệ Thông tin và
Truyền thông, trường Đại học Bách Khoa Hà Nội đã hết lòng giúp đỡ, định hướng và chỉ
dạy tận tình giúp em vượt qua những khó khăn trong quá trình em làm đồ án tốt nghiệp.
Em xin được gửi lời cảm ơn tới các thầy cô giáo trong trường Đại học Bách Khoa Hà
Nội nói chung và các thầy cô trong viện Công nghệ Thông tin và Truyền thông, Bộ môn
Công nghệ phần mềm nói riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức,
những kinh nghiệm quý báu trong suốt 5 năm học tập và rèn luyện tại trường Đại học Bách
Khoa Hà Nội.
Ngoài ra, em cũng xin gửi lời cảm ơn đến chị An Thị Hồng , anh Mai Đình Thắng và
các anh chị em công ty Naiscorp đã tạo điều kiện để em có thể hoàn thành sản phẩm và
cũng là đồ án của mình.
Nguyễn Quốc Huy
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 4
Phần 1 : Nền tảng công nghệ
1. Chương 1 : Tìm hiểu môi trường lập trình trên iPhone
1.1. Tổng quan về lập trình trên di động
1.1.1. Thị trường lập trình trên di động :
Số lượng thiết bị di động ngày càng tăng ở Việt Nam, nhiều người đã coi điện thọai
di động như một vật không thể thiếu trong cuộc sống hằng ngày. Cùng với sự phát triển
mạnh mẽ của công nghệ thông tin trong thời đại mới, người sử dụng di động bắt đầu
hướng tới những nhu cầu cao cấp hơn. Không chỉ nghe-gọi, nhắn tin mà giờ đây họ
còn muốn sở hữu một chiếc điện thoại có khả năng truy cập mạng và thực hiện
mọi ứng dụng như một chiếc máy tính bỏ túi.
Để có thể thực hiện được các tính năng cao cấp như đọc báo, tiểu thuyết, tra từ
điển, bản đồ và nhất là thế giới giải trí với ca nhạc, xem phim, chơi game… thì ngoài
nền tảng phần cứng do nhà sản xuất điện thoại cung cấp còn cân phải có các phần mềm
chuyên dụng cài đặt trên di động để thực hiện các chức năng trên.
Tuy nhiên, thị trường di động là một thị trường rất sôi động với đủ loại thiết bị di
động của các nhà sản xuất có kiểu dáng, tính năng, tốc độ xử lý, bộ nhớ trong, màn
hình giao diện…. khác nhau. Và cũng vì có nhiều nhà sản xuất mà lại không có một
chuẩn công nghệ (về mặt phần mềm) nào được áp dụng chung cho tất cả các máy điện
thoại di động nên công việc lập trình cho điện thoại di động đúng là một bài toán khó
cho các lập trình viên.
Việc lựa chọn một nền tảng phát triển cho điện thoại di động cũng là một vấn đề
nan giải. Hiện nay có thể kể tên các nền tảng di động phổ biến: iPhone, Window
Mobile, Android, J2ME, Symbian. Nhìn vào hình dưới đây có thể thấy được phần nào
sự phong phú của thị trường này.
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 5
Hình 1.1 : Các nền tảng lập trình di động
1.1.2. Thị trường lập trình trên di động :
1. Những ưu điểm , thuận lợi :
Đi theo sự phát triển như vũ bão của mạng internet là nhu cầu truy cập thông tin
của người sử dụng mọi lúc mọi nơi khiến cho các thiết bị mobile là một thiết bị lí
tưởng để đáp ứng bởi sự nhỏ gọn cũng như tính năng di động của nó .
Ngày nay khi mà sự phát triển về phần cứng của các thiết bị di động đã đáp ứng
được những xử lí phức tạp của các thiết bị di động , thì chức năng của chiếc điện thoại
không còn bó hẹp trong việc nghe gọi và nhận các thông tin đơn giản nữa . Chiếc điện
thoại ngày nay gần giống với 1 chiếc PC , hỗ trợ người dùng trong các công việc hàng
ngày , đáp ứng nhu cầu giải trí , thông tin .
Người sử dụng sẵn sàng bỏ ra 1 khoản tiền để mua những ứng dụng đáp ứng nhu
cầu của mình . Nguồn lợi to lớn này là 1 trong những động lực thúc đẩy sự phát triển
của các ứng dụng di động .
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 6
Nhu cầu người dùng tăng cao , khiến cho sự phát triển của các nền tảng di động
tăng trưởng 1 cách mạnh mẽ , đặc biệt được dự đoán sẽ bùng nổ trong năm 2011 , đã
thu hút một lượng lớn các lập trình viên chuyển từ các lĩnh vực khác sang . Nó gián
tiếp tạo ra 1 cộng đồng lớn , mà trong đó có sự giúp đỡ , hỗ trợ lẫn nhau ; tạo ra 1 cộng
đồng thư viện lập trình API rộng rãi khiến cho việc lập trình trở nên đơn giản hơn .
Sự hỗ trở của các hãng lớn cho các nền tảng phát triển của mình tạo điều kiện thuận
lợi cho các lập trình viên trong việc thiết kế, xây dựng cũng như quảng bá sản phẩm tới
mọi đối tượng người dùng .
2. Những ưu điểm , thuận lợi :
Tuy phần cứng di dộng ngày càng phát triển nhưng nó cũng không thể hoàn toàn
thay thế được những chiêc PC bởi hạn chế về kích thước cũng như công nghệ phát triển
. So với chiếc máy tính để bàn hay laptop, chỉ với bộ nhớ trong vài GB, RAM cao nhất
là 256 MB, bộ nhớ của chiếc điện thoại di động quả là quá nhỏ. Hơn nữa, một phần bộ
nhớ này lại đã được sử dụng để chạy hệ điều hành, xử lý đồ họa… Do đó khi viết ứng
dụng, lập trình viên phải chú ý nhiều đến bộ nhớ. Có thể nói rằng lập trình cho di động
giống như việc đẩy các lập trình viên về với thời kỳ đầu của lập trình cho máy tính cá
nhân, phải tiết kiệm từng KB bộ nhớ một nếu không muốn xảy ra tình trạng tràn bộ
nhớ.
Người sử dụng ứng dụng trên di động đòi hỏi tốc độ phải nhanh, ví như mở một
game, người ta không thể ngồi chờ cả chục phút để game load xong. Do đó, quá trình
đóng, mở ứng dụng phải diễn ra nhanh chóng. Hơn nữa, dù có thông minh đến mấy,
nhiều chức năng đến mấy, chiếc điện thoại di động cũng phải là “chiếc điện thoại”
trước đã. Vậy khi đang chạy ứng dụng, bất thình lình có một tin nhắn hay một cuộc gọi
đến thì sao? Ứng dụng phải được đóng tạm thời một cách nhanh chóng, lưu trữ lại
trạng thái trước khi đóng, cho người dùng nhận tin nhắn, cuộc gọi (nếu người dùng lựa
chọn nhận), sau đó lại cho phép người dùng trở lại ứng dụng với trạng thái trước đó.
Sức hấp dẫn của Internet là không thể chối cãi. Người dùng muốn truy cập internet
mọi lúc mọi nơi, người lập trình thì muốn tạo ra các ứng dụng có khả năng khai thác
nguồn tài nguyên vô tận của internet. Tuy nhiên không phải thiết bị di động nào cũng
có khả năng truy nhập internet. Vì vậy, cần phải hiểu về các dịch vụ phần cứng của
thiết bị đó hỗ trợ.
Tư tưởng “code một chỗ, dùng ở mọi nơi” khó mà áp dụng được cho lĩnh vực lập
trình di động. Ví dụ như với các dòng máy cho phép cài đặt các ứng dụng viết bằng
ngôn ngữ Java. Về lý thuyết, chương trình Java được xây dựng xong có thể đem đi mọi
nơi có máy ảo Java để chạy. Nhưng các thiết bị di động của các hãng khác nhau lại có
bộ nhớ cùng với tốc độ xử lý khác nhau, phải hiểu rõ sự khác nhau này thì mới có thể
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 7
điều chỉnh cho ứng dụng có thể chạy trên các dòng máy khác nhau. Hơn nữa, màn hình
hiển thị của các thiết bị di động cũng “trăm hoa đua nở” với kích thước, độ phân giải
màn hình… không theo một chuẩn nhất định nên chắc chắc sẽ không ra kết quả như
mong muốn khi cài đặt cùng một ứng dụng lên các thiết bị khác nhau mà không có sự
sửa đổi hiển thị đầu ra cho phù hợp. Mặt khác, các thiết bị di động cũng tiếp nhận
tương tác của người dùng rất khác nhau: qua bàn phím, chuột, bút, cảm ứng… nên lập
trình viên cũng cần phải lưu ý đến điều này.
Màn hình của các thiết bị di động rất bé so với máy tính để bàn hay máy tính xách
tay nên các ứng dụng cũng không thể có giao diện quá phức tạp bởi như thế sẽ làm rối
mắt người sử dụng.
Năm 2011 , tiếp tục chứng kiện sự phân mảnh của thị trường di động khi ứng dụng
ngày càng được phát triển . Điều này gián tiếp bắt người lập trình phải lựa chọn những
nền tảng thích hợp cho ứng dụng của mình , khó khăn trong việc chuyển đổi giữa các
nền tảng trong cùng một ứng dụng .
1.1.3. Các nền tảng phát triển di động hứa hẹn trong năm 2011 :
Năm 2011 tiếp tục là cuộc cạnh tranh của các nền tảng di động cũ đã xuất hiện
trước đó như iOS , Symbian , WindowsPhone , Blackberry và Android . Đồng thời
cộng đồng cũng đón chờ những nền tảng mới sắp được đưa ra hứa hẹn sẽ là đối thủ
nặng kí cho các nền tảng trên bởi sự hậu thuẫn từ các hãng lớn như : WebOS ( do HP ) ,
MeeGo ( từ Nokia và các đồng mình ) , Blackberry OS7 ( phát triển hoàn toàn mới so
với OS6 ) .
• iPhone
Có thể nói iPhone là nền tảng đem lại lợi nhuận cao nhất cho lập trình viên cũng
như các hãng cung cấp dịch vụ . Sự thay đổi về đa nhiệm ở các phiên bản mới ( 4.x ) so
với các phiên bản trước đó là sự cải tiến đáng kể nhất . Sự thành công của iPhone
không chỉ bởi nền tảng có giao diện đơn giản, những chiếc di động thiết kế đẹp, mà
Apple đã xây dựng một "hệ sinh thái" với vô số ứng dụng trong App Store.
• Symbian
Sự thay đổi chậm chạp khiến cho nền tảng này của Nokia đang mất đi vị thế độc
tôn vốn có trước đây của nó . Sức thu hút lập trình viên cũng không còn được như
trước . Tuy nhiên nó vẫn giữ được thị phần trong mảng điện thoại phổ thông bởi tính
đơn giản và nhẹ nhàng của nó .
• WindowsPhone 7
WindowsPhone 7 là sự thay đổi thực sự chứ không phải là 1 bản cải tiến của
Windows Mobile 6.5 trước đó . Microsoft hứa hẹn sẽ mang lại những trải nghiệm mới
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 8
cho người dùng và lập trình viên , đơn giản , dễ dùng . Mới ra đời nên Microsoft cũng
đang tích cực phát triển gian ứng dụng Market Place và hoàn thiện các công cụ lập
trình liên quan . Hi vọng đây cũng sẽ là nền tảng thành công giống như Windows 7 của
Microsoft .
• Blackberry OS
Cho ra mắt liền 2 phiên bản OS 6 và 7 trong khoảng thời gian ngắn , RIM cho thấy
vòng đời của các hệ điều hành ngày càng rút ngắn dần , điều này tích cực mang lại sự
phong phú cho người dùng và lập trình viên . Hệ điều hành này của RIM có khả năng
tướng thích với HTML 5 và hỗ trợ đa điểm tốt hơn .
• Samsung Bada
Samsung từng sản xuất di động chạy Windows Mobile, Android Bada là nền tảng
của hãng phát triển riêng, với giao diện có nhiều đường nét của TouchWiz. Bada dành
cho màn hình cảm ứng, nhấn mạnh vào các yếu tố như giải trí, kết nối. Samsung Wave
S8500 là model đầu tiên chạy nền tảng này, máy sẽ bán ra trong quý này.
Hiện tại, Bada đang được Samsung hoàn thiện, hãng cũng đã giới thiệu công cụ lập
trình, các nhà phát triển có thể viết các ứng dụng về giao diện Flash, điều khiển web,
điều khiển chuyển động, nhận dạng khuôn mặt, thời tiết và các ứng dụng nhập vai,
tương tác.
1.2. Tổng quan về lập trình trên nền tảng iPhone
1.2.1. Giới thiệu về iPhone
1. Cuộc cách mạng về công nghệ trên di động mang tên iPhone
Tháng 6 năm 2007, chiếc iPhone thế hệ đầu tiên ra mắt và mở đầu cho cơn sốt
iPhone trên toàn thế giới. Không hổ danh là công ty luôn đi đầu về công nghệ, Apple
đã tạo ra thay đổi mang tính cách mạng với chiếc điện thoại di động khi giới thiệu một
giao diện người dùng hoàn toàn mới trên nền tảng màn hình cảm ứng đa điểm và phần
mềm mới có tính tiên phong. Hệ điều hành của iPhone giúp người dùng có thể điều
khiển chiếc điện thoại của họ chỉ bằng một thao tác nhấn, gảy hoặc chụm tay.
Đến năm 2008, Apple lại cho ra mắt iPhone 3G cùng với App Store - một “cửa
hàng” các ứng dụng cho iPhone.
iPhone có màn hình cảm ứng đa điểm, bàn phím ảo hoàn toàn thay thế bàn phím
thật và có một gia tốc kế bên trong. Màn hình cảm ứng đa điểm tận dụng xúc giác tự
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 9
nhiên của khách hàng mà không thông qua bút stylus. Các thao tác trên máy được thực
hiện dễ dàng chỉ bằng cách đặt ngón tay lên màn hình nhấn, kéo, thả… iPhone loại bỏ
hoàn toàn sự xuất hiện của bàn phím thật, thay vào đó là bàn phím thông minh hoạt
động trên cơ sở phần mềm. Bàn phím ảo này cho phép người dùng chuyển đổi qua lại
giữa 40 dạng bàn phím quốc tế và có phần mềm nhận dạng ký tự cho phép người dùng
viết các ký tự Trung Hoa bằng ngón tay rồi nhấn chọn kết quả thích hợp.
iPhone phản ứng với các chuyển động bằng một gia tốc kế lắp bên trong. Khi người
dùng quay iPhone từ phương đứng sang phương ngang, gia tốc kế phát hiện ra chuyển
động này và thay đổi màn hình, cho xem toàn bộ chiều rộng của trang web, hình ảnh,
tin nhắn, hoặc bản ghi chú gia tốc kế cũng được sử dụng để kiểm soát việc chơi game
hay đảo ngược hành động trước đó (như lệnh “Shake to Undo”).
Với iPhone 3GS, người dùng có thể tự điều chỉnh và sắp xếp các biểu tượng trên
màn hình Chủ (Home screen), kể cả các biểu tượng trên Thanh Công Cụ theo ý muốn
của mình.
iPhone phân tích các cú gõ để đề nghị các từ mà người dùng gõ vào, và học được
những từ người dùng thường hay gõ nhất – kể cả tên riêng và thông tin trong sổ liên lạc
(contact list) của họ.
Nhấn và giữ nút Home để mở chế độ Voice Control (Điều Khiển Bằng Khẩu Lệnh),
rồi đọc vào tên hay số điện thoại của một người liên lạc để gọi điện. iPhone cũng mở
nhạc và tạo ra các danh mục mở (playlist), bằng cách chỉ việc dùng khẩu lệnh. Đây là
một trong các tính năng mới được thêm vào sau này của iPhone .
iPhone 3GS được chuẩn hóa bằng các tính năng tiếp cận sử dụng (accessibility) hỗ
trợ cho người khuyết tật.
iPhone cung cấp các dữ liệu vị trí để tìm đến các ứng dụng cài đặt sẵn và Cửa
Hàng Ứng Dụng (App Store). Khi chụp ảnh bằng camera iPhone có thể gắn thẻ địa lý
(geotag), ghi các thông tin về địa điểm GPS (Hệ Thống Định Vị Toàn Cầu) cho nó.
Nhờ vậy, khi người dùng chia sẻ hình ảnh trên mạng, bạn bè và gia đình có thể biết
được địa điểm của hình chụp.
2. Hạn chế của iPhone :
Cũng như các thiết bị di động khác, iPhone cũng có những hạn chế nhất định mang
tính đặc thù chung cũng như riêng cho thiết bị di động
Bộ nhớ và tốc độ xử lý : Bộ nhớ ít so với các thiết bị PC . Tốc độ xử lí đạt mức PC
ở các thế hệ trước .
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 10
Màn hình nhỏ : màn hình của iPhone có độ phân giải 480 x 320 pixel . Không có
nhiều không gian để làm việc cùng. Kích thước màn hình nhỏ cũng dẫn tới việc chỉ có
duy nhất 1 cửa sổ có thể hiển thị tại một thời điểm . Tuy nhiên màn hình của iPhone
vẫn được coi là có số điểm anh cao trong các thiết bị hiện nay .
Bảo mật : chỉ có thể đọc và ghi vào thư mục là một phần của gói ứng dụng. Vùng
có thể truy nhập trong một ứng dụng được gọi là sandbox. Không thể đọc file được tạo
bởi ứng dụng khác. Không thể ghi vào bất cứ nơi nào ngoài sandbox của ứng dụng.
Ứng dụng có vòng đời ngắn : các ứng dụng iPhone không thể thường trú trong bộ
nhớ. Các ứng dụng thường trú trong bộ nhớ là ứng dụng có thể chạy ẩn trong khi người
dùng chạy ứng dụng khác. iPhone chỉ cho phép 1 chương trình chạy tại một thời điểm
đo đó cần lưu ý tới các trường hợp như đang chạy ứng dụng thì có tin nhắn, điện
thoại… Tuy nhiên, hạn chế này sẽ sớm được khắc phục khi Apple đang dự kiến cho ra
mắt iPhone 4.0 với hệ điều hành đa nhiệm trong năm nay.
Người lập trình viên phải tự quản lý bộ nhớ do iPhone không có bộ gom rác
(garbage collection).
1.2.2. Yêu cầu tối thiểu của lập trình iPhone
Hệ điều hành MacOS các phiên bản từ 10.5 trở lên .
Công cụ iPhone SDK. iPhone SDK có thể download miễn phí từ trang
.
IDE Xcode
Ngôn ngữ Objective - C
1.2.3. Công cụ lập trình :
Bao gồm 3 thành phần chính :
1. Bộ công cụ Xcode :
Sau khi mở Xcode, chọn File/New Project. Một cửa sổ xuất hiện nhắc người dùng
chọn template cho project của mình. Bên dưới tiêu đề iPhone OS, chọn mục
Application, phía bên phải sẽ hiện ra một số template để chọn.
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 11
Hình 1.2 : thành phần Xcode
• Các template sẵn có trong Xcode :
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 12
Template Ứng dụng
View - based application Áp dụng với những ứng dụng chỉ có một view (cảnh). Một
controller quản lý view chính của ứng dụng.
Navigation - based
application
Áp dụng với những ứng dụng phải sử dụng nhiều view và
cần một navigation trung gian giữa chúng.
Utility application
OpenGL ES application Áp dụng với những ứng dụng sử dụng tới đồ họa, 3D game.
Tab bar application Cung cấp một controller đặc biệt hiển thị một nút bên dưới
màn hình. Đây là template thích hợp cho các ứng dụng kiểu
cho iPod hay là Mobile Phone.
Window-based
application
Framework cơ bản nhất. Áp dụng với những ứng dụng
không thích hợp với bất kỳ template nào ở trên
Bảng 1.3 : các Template thường dùng
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 13
• Sự bố trí của 1 project trong Xcode :
Sau khi tạo một project mới, màn hình project sẽ mở ra:
Hình 1.4 : Xcode Editor
Một project đóng gói nguồn, framework và các tài nguyên của ứng dụng. Trong
một project bao gồm:
• Classes : Chứa các lớp Objective-C mà ứng dụng cần sử dụng: đối tượng
delegate, view controller, và các đối tượng khác người dùng tạo ra. Khi
muốn thêm một lớp mới vào ứng dụng của mình, lập trình viên sẽ thêm lớp
mới của mình vào đây
• Other sources: các nguồn khác được biên dịch vào ứng dụng. Mặc định,
Other sources sẽ chứa các header tiền biên dịch và hàm main.
• Resources: Các tài nguyên của ứng dụng mà không được biên dịch vào
trong source code nhưng được sao chép vào thư mục chương trình khi ứng
dụng build lên. Các tài nguyên này bao gồm: ảnh, âm thanh, game level hay
các file quan trọng khác.
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 14
• Frameworks: chứa các framework mà ứng dụng có liên kết. Các thư viện
này được liên kết lúc build.
• Products: build target cho ứng dụng
2. Thành phần Interface builder :
Cũng giống các SDK lập trình cao cấp hiện nay, nền tảng iPhone cũng hỗ trợ lập
trình đơn giản trong thao tác thiết kế giao diện , cung cấp khả năng kéo thả và tùy biến
tương đối mạnh mẽ .
• Tạo file Interface builder :
Khi tạo một project, Xcode sử dụng project template, trong project mới được tạo ra
sẽ chứa một tập file Interface Builder cơ bản. Khi muốn tạo thêm các file Interface
Builder, trong hộp thoại Xcode chọn New File, hoặc trong giao diện Builder chọn
File> New. Cửa sô “Choose a Template” được mở ra:
Hình 1.5 : Interface Builder – New file
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 15
Đối với mỗi một file mới được tạo ra, Interface Builder cho phép người dùng chọn
một template bắt đầu. Các template này xác định tập các đối tượng khởi tạo ban đầu sử
dụng trong file giao diện mới được tạo ra. Interface Builder cung cấp một số template
khác nhau được liệt kê trong bảng sau. Mỗi template hướng tới một mục tiêu khác
nhau. Người dùng cũng có thể sử dụng template rỗng nếu muốn tự thêm các đối tượng
cho tài liệu của mình. Đối với bất kỳ template có sẵn nào, người dùng cũng có thể loại
bỏ các đối tượng không muốn.
Platform Sản phẩm Template Mô tả
iPhone
OS
iPhone Application Tạo một file giao diện sử dụng để thiết kế giao
diện cho ứng dụng Cocoa Touch. File giao
diện này chứa 1 cửa sổ.
View Dùng để thiết kế một view trong ưng dụng
Cocoa Touch
Window Dùng để thiết kế một cửa sổ trong ứng dụng
Cocoa Touch
Empty Tạo một file rỗng mà người dùng có thể tùy ý
thêm các đối tượng
iPad Application Tạo ra file thích hợp để tạo ứng dụng cho
iPad, gồm một delegate và một cửa sổ của ứng
dụng
View Tạo một file để thiết kế view cho ứng dụng
iPad
Window Dùng dể thiết kế một cửa sổ cho ứng dụng
iPad
Empty
Mac OS
X
Cocoa Application Tạo một file giao diện sử dụng để thiết kế giao
diện cho ứng dụng Cocoa. File giao diện này
chứa 1 cửa sổ.
Main Menu Tạo tài liệu để thiết kế thanh thực đơn cho ứng
dụng Cocoa
View Dùng để thiết kế một view trong ưng dụng
Cocoa
Window Dùng để thiết kế một cửa sổ trong ứng dụng
Cocoa
Empty Tạo một file rỗng mà người dùng có thể tùy ý
thêm các đối tượng
Carrbon Application Tạo một file giao diện sử dụng để thiết kế giao
diện cho ứng dụng Carbon. File giao diện này
chứa 1 cửa sổ.
Dialog Tạo tài liệu để thiết kế hộp thoại cho ứng dụng
Carbon
Main Menu Tạo tài liệu để thiết kế thanh thực đơn cho ứng
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 16
dụng Carbon
Window Dùng để thiết kế một cửa sổ trong ứng dụng
Carbon
Empty Tạo một file rỗng mà người dùng có thể tùy ý
thêm các đối tượng
Interface
Builder
Kit
- Inspector
Tạo tài liệu để thiết kế một Inspector cho
Interface Builder plug-in
- Library Dùng để thiết kế các phần tử thư viện cho
Interface Builder plug-in
Bảng 1.6 : Các template của interface builder
• Cửa sổ tài liệu :
Interface Builder cung cấp một số cửa sổ cho phép người dùng hiển thị và chỉnh
sửa các đối tượng trong giao diện sử dụng của ứng dụng: cửa sổ tài liệu, cửa sổ thư
viện, cửa sổ Inspector, bảng kết nối .
o Cửa sổ tài liệu: Mỗi tài liệu Interface Builder lưu trữ thông tin về
một hoặc nhiều đối tượng người sử dụng muốn tạo ra tại thời gian
chạy trong ứng dụng của mình. Hầu hết các đối tượng tương ứng với
các phần tử hiển thị trên màn hình, chẳng hạn như cửa sổ, view, điều
khiển, và thực đơn. Một số đối tượng không tương ứng với các phần
tử hiển thị, chẳng hạn như các đối tượng điều khiển được chương
trình sử dụng để quản lý các cửa sổ và view của mình.
Ví dụ một cửa sổ tài liệu:
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 17
Hình 1.7 : Cửa sổ tài liệu Interface Builder
o Cửa sổ thư viện: Cửa sổ thư viện chứa các đối tượng và các tài
nguyên được thêm vào tài liệu Interface Builder. Hình sau cho thấy
cửa sổ thư viện với một tập các đối tượng nút Cocoa. Người dùng có
thể kéo một đối tượng nút lên mặt thiết kế như một cửa sổ hoặc
view.
Hình 1.8 : Cửa sổ thư viện Interface Builder
o Cửa sổ Inspector: Cửa sổ Inspector giúp dễ dàng hiển thị và điều
chỉnh các cài đặt cho đối tượng hiện đang được chọn. Sử dụng các
biểu tượng chế độ dọc theo phía trên cửa sổ để lựa chọn một pane và
hiển thị các cài đặt tương ứng. Hình sau cho thấy cửa sổ thuộc tính
cho một nút Cocoa .
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 18
Hình 1.9 : cửa sổ thuộc tính Interface Builder
o Bảng điều khiển kết nối: Một kết nối là cách để các thành phần giao
diện kết hợp với mã nguồn. Đối với tài liệu được sử dụng nền tảng
Cocoa và Cocoa Touch, bảng điều khiển kết nối là một cách nhanh
chóng để tạo và quản lý các kết nối cho một đối tượng cụ thể.
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 19
Hình 1.9 : Bảng kết nối của Interface Builder
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 20
3. Thành phần iPhone Simulator :
iPhone Simulator là giả lập của iPhone cho phép người dùng triền khai và kiểm thử
các ứng dụng iPhone trên máy tính để bàn. Simulator cung cấp môi trường giống với
iPhone với tùy chọn menu để giả lập khóa, xoay màn hình… Tuy nhiên nó cũng có một
số giới hạn nhất định do desktop không có các phần cứng cần thiết để thực hiện các tác
vụ đó.
Một số chức năng quan trọng không có trong simulator:
Không có API đo gia tốc
Chỉ giới hạn với một số cử chỉ tương tác với màn hình cảm ứng, và không hỗ trợ
nhiều hơn 2 ngón tương tác lên màn hình cảm ứng.
Ứng dụng sẽ không nhận điện thoại gọi đến.
Không thể truy nhập mạng EDGE/3G
Không có chức năng ghi hình và ghi âm.
Chỉ có sẵn một số ứng dụng của iPhone: Contacts, Safari, Photos và Settings.
Không thể thấy tác động của ứng dụng lên CPU và bộ nhớ của iPhone bởi máy
desktop có nhiều tài nguyên hơn để chạy ứng dụng. Đồ họa chậm hay các vấn đề khác
chỉ có thể phát hiện ra khi kiểm thử trên máy thật.
Hình 1.10 : iPhone Simulator
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 21
1.2.4. Ngôn ngữ lập trình Objective - C :
1. Lịch sử ra đời của ngôn ngữ Objective – C :
Đầu những năm 70 của thế kỷ trước, Dennis Ritchie của phòng thí nghiệm AT&T
Bell giới thiệu ngôn ngữ lập trình C. Tuy nhiên phải đến cuối những năm 70, ngôn ngữ
C mới trở nên phổ biến do trước đó bộ biên dịch cho C chưa phải là sản phẩm thương
mại bên ngoài phòng thí nghiệm Bell.
Đến đầu những năm 80 của thế kỷ trước, Brad J.Cox thiết kế nên ngôn ngữ
Objective-C. Ngôn ngữ này dựa trên một ngôn ngữ tên là SmallTalk-80. Objective-C ở
tầng trên của ngôn ngữ C với ý nghĩa là những phần mở rộng đã được bổ sung vào C
để tạo thành một ngôn ngữ lập trình mới có thể tạo ra và quản lý đối tượng.
NeXT Software đăng ký ngôn ngữ Objective-C vào năm 1988 và phát triển thư
viện và một môi trường phát triển cho nó tên là NEXTSTEP.
Năm 1994, NeXT Computer và Sun Microsystem phát hành bản đặc tả kỹ thuật
chuẩn của hệ thống NEXTSTEP gọi là OPENSTEP.
20/12/1996, hãng máy tính Apple công bố đã giành được NeXT Software, và
NEXTSTEP/OPENSTEP trở thành nền móng cơ bản cho OS X, hệ điều hành thế hệ
tiếp theo của Apple. Phiên bản môi trường phát triển này của Apple được gọi là Cocoa.
Nhiều hỗ trợ cho ngôn ngữ Objective-C được tích hợp sẵn, cùng với Xcode và
Interface Builder, Apple đã tạo ra một môi trường phát triển rất mạnh cho phát triển
ứng dụng trên hệ điều hành Mac OS X.
Năm 2007, Apple phát hành bản cập nhật của Objective-C gọi là Objective-C 2.0.
Năm 2007 cũng là năm Apple phát hành iPhone. Ban đầu, Apple không cho phép
các ứng dụng của bên thứ 3 chạy trên thiết bị này. Nhưng sau một thời gian khi một số
hacker bẻ khóa được iPhone và viết các phần mềm có thể chạy trên iPhone, Apple đã
thay đổi chiến lược. Apple đã thuê chính các hacker này để viết nên iPhone SDK cho
phép các nhà phát triển có thể viết ứng dụng cho iPhone.
2. Lớp , đối tượng và thông điệp :
a) Runtime :
Ngôn ngữ Objective-C giảm nhẹ tới mức tối thiểu những việc cần làm tại thời gian
biên dịch (compile time) và liên kết (link time) để đẩy hết cho lúc chạy (runtime). Bất
cứ khi nào có thể, nó tự động thực hiện các hoạt động như tạo các đối tượng và xác
định xem sẽ gọi phương thức nào. Điều này có nghĩa rằng ngôn ngữ không chỉ đòi hỏi
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 22
một trình biên dịch, mà còn cần một runtime system để thực thi mã biên dịch. Runtime
system hoạt động như một loại hệ điều hành cho ngôn ngữ Objective-C vì nhờ nó mà
ngôn ngữ này mới có thể làm việc. Tuy nhiên, các lập trình viên không nhất thiết phải
tương tác trực tiếp với runtime.
b) Đối tượng
Khái niệm đối tượng trong Objective-C không khác so với trong các ngôn ngữ lập
trình hướng đối tượng khác như là Java , C++ hay C#. Đối tượng bao gồm các thuộc
tính và các phương thức.
• id: Trong Objective-C, định danh của đối tượng là một loại dữ liệu đặc biệt:
id. Đây là kiểu chung cho bất kỳ loại đối tượng nào kể cả lớp. (Nó có thể
được sử dụng cho cả thể hiện của lớp và chính bản thân đối tượng lớp) . id
là con trỏ tới cấu trúc dữ liệu đối tượng:
typedef struct objc_object {
Class isa;
} *id;
Do đó, tất cả các đối tượng đều chứa biến thành phần isa để xác định xem
nó là thể hiện của lớp nào.
Giống như một hàm hay màng của C, một đối tượng được xác định bởi địa
chỉ của nó. Tất cả các đối tượng, bất kể biến và phương thức thành phần của
nó là gì, đều thuộc loại id.
id anObject;
• Xác định kiểu dữ liệu động: Kiểu dữ liệu id có thể đại diện cho tất cả các
đối tượng tuy nhiên bản thân nó lại không chứa bất kỳ thông tin nào về đối
tượng, ngoài việc chỉ ra rằng đó là một đối tượng. Nhưng các đối tượng
không hề giống nhau. Khi cần thiết, chương trình cần phải tìm thêm thông
tin cụ thể về đối tượng: chứa các dữ liệu kiểu gì, có các phương thức nào.
Bởi vì kiểu dữ liệu id không thể cung cấp thông tin này cho trình biên dịch
nên các đối tượng phải có khả năng cung cấp các thông tin này khi chạy.
Thuộc tính isa xác định lớp của đối tượng nghĩa là xác định xem đối tượng
đó thuộc loại gì. Các đối tượng có cùng các phương thức và các biến thành
phần là thành viên của cùng một lớp.
Do đó các đối tượng được xác định kiểu dữ liệu động khi chạy. Bất cứ khi
nào nó cần, runtime system có thể tìm thấy chính xác lớp của một đối
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 23
tượng. Xác định kiểu dữ liệu động là nền tảng cho ràng buộc động (dynamic
binding), được trình bày sau đây.
Biến isa cũng cho phép các đối tượng tự tìm hiểu về bản thân mình. Trình
biên dịch ghi lại các thông tin về định nghĩa lớp trong cấu trúc dữ liệu được
dùng cho runtime system. Các hàm của runtime system sử dụng isa để tìm
thông tin này khi chạy.
• Quản lý bộ nhớ: Trong một chương trình Objective-C, việc đảm bảo rằng
các đối tượng được giải phóng khỏi bộ nhớ khi không còn cần thiết nữa hết
sức quan trọng nếu không bộ nhớ ứng dụng sẽ trở nên lớn hơn mức cần
thiết. Cũng quan trọng để đảm bảo rằng không giải phóng các đối tượng
trong khi nó vẫn còn đang được sử dụng.
Objective-C cung cấp hai môi trường quản lý bộ nhớ để đạt được các mục
tiêu này:
- Reference counting
- Garabge collection (không có trên iPhone).
c) Thông điệp (Message)
• Cú pháp: Để khiến một đối tượng làm gì, cần phải gửi cho nó một thông
điệp để nó thực hiện một phương thức nào đó của mình. Trong Objective-C,
biểu thức thông điệp được đặt trong dấu ngoặc vuông:
[đối_tượng_nhận thông_điệp]
Trong mã nguồn, thông điệp chính là tên của một phương thức và các tham
số được truyền vào cho nó. Khi một thông điệp được gửi đi, runtime
system lựa chọn phương thức thích hợp từ các phương thức của đối tượng
nhận và chạy nó.
Tên phương thức trong một thông điệp dùng để chọn phương thức thực thi.
Vì lý do này, tên phương thức trong thông điệp còn được gọi là “selector”.
Các phương thức có thể nhận số tham số truyền vào tùy ý, cách nhau bởi
dấu “:”. Và để tránh nhầm lẫn có thể đặt tên cho các tham số.
Ví dụ:
[myRectangle setOriginX: 30.0 y: 50.0]
Một thông điệp có thể được lồng trong thông điệp khác. Ví dụ :
[myRectangle setPrimaryColor:[otherRect primaryColor]];
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 24
• Gửi thông điệp tới đối tượng nil: trong Objective-C, điều này hoàn toàn
hợp lệ, nó chỉ đơn giản không gây hiệu ứng gì trong khi chạy.
• Ràng buộc động (Dynamic Binding): Một khác biệt quan trọng giữa lời
gọi hàm và thông điệp là một hàm và các tham số của nó được liên kết với
nhau trong mã biên dịch, nhưng thông điệp và đối tượng tiếp nhận không
thống nhất cho đến khi chương trình đang chạy và tin nhắn được gửi đi. Vì
vậy, phương thức chính xác được gọi để trả lời một phương thức chỉ có thể
được xác định tại thời gian chạy, không phải khi mã được biên dịch.
Phương thức chính xác mà một thông điệp gọi sẽ phụ thuộc vào đối tượng
nhận. Các đối tượng khác nhau có thể có các phương thức khác nhau thực
thi cùng một lời gọi hàm (tính đa hình). Đối với trình biên dịch, để tìm ra
phương thức thực thi đúng thông điệp, nó cần phải biết đối tượng đó thuộc
lớp nào. Những thông tin này chỉ được đối tượng tiết lộ tại thời gian chạy
khi nó nhận được thông điệp (xác định kiểu động).
Việc lựa chọn một phương thức thực hiện sẽ xảy ra khi chạy. Khi một thông
điệp được gửi, một runtime messaging rountine sẽ tìm kiếm đối tượng nhận
và phương thức có tên trong thông điệp.
Tính ràng buộc động của phương thức (dynamic binding) với các thông
điệp kết hợp chặt chẽ với tính đa hình đa hình tạo nên tính linh hoạt và sức
mạnh của ngôn ngữ lập trình hướng đối tượng.
d) Lớp
Lớp định nghĩa một nguyên mẫu cho một loại đối tượng, nó khai báo các biến và
định nghĩa một tập hợp các phương thức thành phần.
Mỗi lớp được tạo ra đều phải là lớp con của một lớp khác và nó kế thừa các phương
thức cũng như biến thành phần của lớp này. Để thực thi các tác vụ của mình, lớp mới sẽ
bổ sung các biến và phương thức mới hay sửa các phương thức mà nó được kế thừa.
• Lớp NSObjects: NSObject là lớp gốc, nên nó không có lớp cha. Nó định
nghĩa framework cơ bản cho các đối tượng và tương tác giữa các đối tượng
của Objective-C. Những lớp không cần kế thừa các phương thức đặc biệt từ
lớp khác có thể là đặt là lớp con của lớp NSObject.
• Đối tượng lớp: Một định nghĩa lớp chứa nhiều thông loại thông tin, chủ
yếu là các thành phần của lớp:
Sinh viên thực hiện: Nguyễn Quốc Huy - 20061391 Khóa K51 Lớp Công nghệ phần mềm Page 25