TRƯỜNG ĐẠI HỌC HÙNG VƯƠNG
KHOA KỸ THUẬT – CÔNG NGHỆ
-----------------------
LÊ KHƯƠNG DUY
XÂY DỰNG ỨNG DỤNG HỖ TRỢ HỌC
LẬP TRÌNH ASP.NET TRÊN THIẾT BỊ DI ĐỘNG
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Ngành Công Nghệ Thông Tin
Phú Thọ, (2017)
TRƯỜNG ĐẠI HỌC HÙNG VƯƠNG
KHOA KỸ THUẬT – CÔNG NGHỆ
-----------------------
LÊ KHƯƠNG DUY
XÂY DỰNG ỨNG DỤNG HỖ TRỢ HỌC
LẬP TRÌNH ASP.NET TRÊN THIẾT BỊ DI ĐỘNG
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Ngành: Công Nghệ Thông Tin
NGƯỜI HƯỚNG DẪN: ThS. NGUYỄN THỊ THU HƯƠNG
Phú Thọ, 2017
i
LỜI CẢM ƠN
Sau quá trình tìm hiểu đề tài “Xây dựng ứng dụng hỗ trợ học Lập trình
ASP.NET trên thiết bị di động”, em đã hoàn thành đúng tiến độ dự kiến. Để đạt
được kết quả này, em đã nỗ lực thực hiện và đồng thời cũng nhận được rất
nhiều sự giúp đỡ từ thầy cơ, gia đình và bạn bè.
Em xin chân thành cảm ơn các thầy, cô trường Đại học Hùng Vương đã
tạo điều kiện về cơ sở vật chất, chỉ bảo, đóng góp ý kiến giúp khóa luận của em
thêm hồn thiện về hình thức cũng như nội dung.
Em xin gửi lời cảm ơn chân thành tới giáo viên hướng dẫn cô giáo
Nguyễn Thị Thu Hương - Bộ môn Công nghệ phần mềm - Khoa Kỹ thuật Công nghệ - Trường Đại Học Hùng Vương đã tận tình giúp đỡ em trong suốt
q trình làm khóa luận tốt nghiệp. Trong thời gian làm việc cùng cô giáo, em
khơng ngừng tiếp thu thêm nhiều kiến thức bổ ích mà còn học tập được tinh
thần làm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu quả, đó là những
điều rất cần thiết cho em trong quá trình học tập và làm việc sau này.
Trong thời gian nghiên cứu và hồn thành khóa luận khơng tránh khỏi
những thiếu sót, em rất mong được sự đóng góp ý kiến từ q thầy cơ và các
bạn để đề tài được hồn thiện hơn.
Em xin chân thành cảm ơn!
Việt Trì, tháng 5 năm 2017
Sinh viên
Lê Khương Duy
ii
DANH MỤC ẢNH
Hình 1.1. Biểu tượng Android 5.1 Lollipop ...................................................... 5
Hình 1.2. Q trình thực thi .............................................................................. 9
Hình 1.3. Mơ hình xử lý ASP.NET. ................................................................. 12
Hình 1.4. Vịng đời của một activity ............................................................... 16
Hình 1.5. Sơ đồ chuyển trạng thái của service ............................................... 18
Hình 2.1. Biểu đồ UserCase về chức năng ..................................................... 24
Hình 2.2. Mơ hình xử lý đăng ký ..................................................................... 25
Hình 2.3. Mơ hình xử lý đăng nhập ................................................................ 25
Hình 2.4. Mơ hình xử lý học bằng video ......................................................... 26
Hình 2.5. Mơ hình xử lý học lý thuyết ............................................................. 27
Hình 2.6. Mơ hình xử lý bài tập minh họa ...................................................... 27
Hình 2.7. Mơ hình xử lý chức năng tìm kiếm câu hỏi ..................................... 28
Hình 2.8. Mơ hình xử lý chấm điểm và lưu bài thi ......................................... 29
Hình 2.9. Mơ hình lớp của chương trình ........................................................ 32
Hình 3.1. Màn hình giới thiệu đầu .................................................................. 35
Hình 3.2. Màn hình đăng nhập ....................................................................... 36
Hình 3.3. Màn hình đăng ký ............................................................................ 37
Hình 3.4. Màn hình chính ............................................................................... 38
Hình 3.5. Màn hình bài giảng ......................................................................... 39
Hình 3.6. Màn hình nội dung bài giảng .......................................................... 40
Hình 3.7. Màn hình chọn bài tập .................................................................... 41
Hình 3.8. Màn hình hiển thị nội dung bài tập ................................................. 42
Hình 3.9. Màn hình chọn video ....................................................................... 43
Hình 3.10. Màn hình chọn video ..................................................................... 44
Hình 3.11. Màn hình lựa chọn bộ câu hỏi trắc nghiệm .................................. 45
Hình 3.12. Màn hình hiển thị câu hỏi trắc nghiệm ......................................... 46
Hình 3.13. Màn hình hiển thị điểm ................................................................. 47
Hình 3.13. Màn hình hiển thị điểm ................................................................. 48
iii
Hình 3.14. Màn hình giới thiệu ....................................................................... 49
Hình 3.15. Điện thoại Samsung Galaxy S7 Edge ........................................... 50
Hình 3.16. Điện thoại Sony Xperia Z3 ............................................................ 50
Hình 3.17. Icon ứng dụng trên điện thoại Samsung Galaxy S7 Edge ............ 51
Hình 3.18. Màm hình menu chính trên điện thoại .......................................... 52
Hình 3.19. Menu trái của ứng dụng ................................................................ 52
iv
DANH MỤC BẢNG
Bảng 2.1. Danh sách các thực thể................................................................... 30
Bảng 2.2. Bảng Account .................................................................................. 30
Bảng 2.3. Bảng câu hỏi ................................................................................... 31
Bảng 2.4. Bảng Điểm ...................................................................................... 31
Bảng 3.1. Danh sách các màn hình ................................................................ 34
Bảng 3.2. Mơ tả chi tiết màn hình giới thiệu .................................................. 35
Bảng 3.3. Mơ tả chi tiết màn hình đăng nhập ................................................. 36
Bảng 3.4. Mơ tả chi tiết màn hình đăng ký ..................................................... 37
Bảng 3.5. Mơ tả chi tiết màn hình chính ......................................................... 38
Bảng 3.6. Mơ tả chi tiết màn hình bài giảng................................................... 39
Bảng 3.7. Mơ tả chi tiết màn hình hiển thị nội dung bài giảng ...................... 40
Bảng 3.8. Mơ tả chi tiết màn hình hiển thị bài tập ......................................... 41
Bảng 3.9. Mô tả chi tiết màn hình hiển thị nội dung bài tập .......................... 42
Bảng 3.10. Mơ tả chi tiết màn hình chọn video .............................................. 43
Bảng 3.11. Mơ tả chi tiết màn hình hiển thị video .......................................... 44
Bảng 3.12. Mơ tả chi tiết màn hình chọn bộ đề thi ......................................... 45
Bảng 3.13. Mô tả chi tiết màn hình câu hỏi trắc nghiệm................................ 46
Bảng 3.14. Mơ tả chi tiết màn hình hiển thị điểm ........................................... 47
v
MỤC LỤC
LỜI CẢM ƠN ................................................................................................... i
DANH MỤC ẢNH........................................................................................... ii
DANH MỤC BẢNG ....................................................................................... iv
MỤC LỤC ........................................................................................................ v
MỞ ĐẦU .......................................................................................................... 1
CHƯƠNG I: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID, NGƠN
NGỮ LẬP TRÌNH JAVA, HỌC PHẦN LẬP TRÌNH ASP.NET .............. 4
1.1. Khái niệm, lịch sử hình thành và phát triển hệ điều hành Android ........... 4
1.1.1. Khái niệm hệ điều hành Android .................................................. 4
1.1.2. Lịch sử hình thành và phát triển của hệ điều hành Android ......... 5
1.2. Tổng quan về ngôn ngữ Java ..................................................................... 8
1.2.1. Giới thiệu ngôn ngữ Java .............................................................. 8
1.2.2. Các đặc trưng của Java ................................................................. 9
1.3. Tổng quan về học phần lập trình ASP.NET ............................................ 11
1.3.1. Ưu điểm của ASP.NET ............................................................... 12
1.3.2. Nội dung của học phần lập trình ASP.NET ................................ 13
1.4. Lập trình ứng dụng trên hệ điều hành Android........................................ 14
1.4.1. Cơng cụ lập trình ứng dụng trên Android ................................... 14
1.4.2. Các thành phần của một ứng dụng Android ............................... 15
CHƯƠNG II: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG CỦA ỨNG
DỤNG HỖ TRỢ HỌC LẬP TRÌNH ASP.NET ......................................... 23
2.1. Xác định yêu cầu ...................................................................................... 23
2.1.1. Các chức năng của chương trình................................................. 23
2.1.2. Biểu đồ Usercase......................................................................... 23
2.2. Phân tích và thiết kế ................................................................................. 24
2.2.1. Phân tích mơ hình xử lý các chức năng ...................................... 24
2.2.2. Thiết kế cơ sở dữ liệu.................................................................. 30
2.2.3. Thiết kế mơ hình lớp ................................................................... 32
vi
CHƯƠNG III: XÂY DỰNG ỨNG DỤNG HỖ TRỢ HỌC LẬP TRÌNH
ASP.NET ........................................................................................................ 34
3.1. Giao diện ứng dụng .................................................................................. 34
3.1.1. Danh sách các màn hình ............................................................. 34
3.1.2. Chi tiết các màn hình .................................................................. 35
3.2. Cài đặt ứng dụng thử nghiệm ................................................................... 49
3.3. Hướng dẫn sử dụng .................................................................................. 51
KẾT LUẬN CHUNG .................................................................................... 53
1. Kết quả đạt được ......................................................................................... 53
2. Hạn chế ........................................................................................................ 53
3. Hướng phát triển ......................................................................................... 53
TÀI LIỆU THAM KHẢO ............................................................................ 54
PHỤ LỤC ....................................................................................................... 55
Phụ lục A: Chi tiết MainActivity.java ........................................................ 55
Phụ lục B: Chi tiết HomeFragment.java ..................................................... 62
1
MỞ ĐẦU
1. Tính cấp thiết của đề tài khóa luận
ASP.NET là một nền tảng ứng dụng web (Web Applicationframework)
được xây dựng, phát triển bởi tập đoàn Microsoft, cho phép các lập trình viên
tạo ra những trang web động, những ứng dụng web và những dịch vụ web. Vào
tháng 2 năm 2002, phiên bản đầu tiên được đưa ra thị trường cùng với phiên
bản 1.0 của .NET framework, ASP.NET là công nghệ nối tiếp của công nghệ
Microsoft's Active Server Pages (ASP) trước đó, được biên dịch dưới dạng
Common Language Runtime (CLR), cho phép những người lập trình viết mã
ASP.NET với bất kỳ ngôn ngữ nào (C#, VB.NET,..) được hỗ trợ bởi .NET
framework.
Với xu hướng các ứng dụng web được phát triển mạnh mẽ, ngày càng có
nhiều ứng dụng viết bằng ASP.NET, rất nhiều công ty đang chọn ASP.NET
làm ngôn ngữ phát triển website cho khách hàng cũng như sản phẩm của riêng
họ nên việc nắm vững và sử dụng thành thạo về cơng nghệ web nói chung và
chun sâu về ASP.NET nói riêng sẽ là một lợi thế cho các sinh viên và các lập
trình viên ứng dụng web.
Cùng với đó, sự phát triển của công nghệ di động đã bùng nổ trong vài
năm qua. Các thiết bị di động đã trở nên mạnh mẽ và phổ biến. Trong vài năm
trở lại đây, hệ điều hành Android ra đời và trở thành nền tảng điện thoại thông
minh phổ biến mất thế giới, với sự kế thừa những ưu việt của các hệ điều hành
ra đời trước và sự kết hợp của nhiều công nghệ tiên tiến nhất hiện nay.
Những ưu điểm dễ thấy nhất của Android chính là khả năng tùy biến
nhanh chóng, dễ làm quen, ứng dụng hỗ trợ phong phú, tương thích với đa cấu
hình phần cứng cả các nhà sản xuất. Đồng thời Android có mã nguồn mở đã
cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên được
điều chỉnh và phân phối Android một cách tự do.
Vấn đề đặt ra có được một ứng dụng hỗ trợ học tập là không hề đơn giản
vì đa số các ứng dụng hỗ trợ học đều phải mất phí hoặc việc sử dụng cịn một
2
số hạn chế. Bởi vậy trước nhu cầu về môn học Lập trình ASP.NET và những
ưu điểm của hệ điều hành Android, em đã chọn đề tài “Xây dựng ứng dụng hỗ
trợ học Lập trình ASP.NET trên thiết bị di động” làm khóa luận tốt nghiệp cho
mình. Để tạo ra một ứng dụng cho sinh viên ngành công nghệ thông tin có một
ứng dụng học lập trình ASP.NET trên thiết bị động chạy hệ điều hành Android.
2. Ý nghĩa khoa học và thực tiễn
Ứng dụng lý thuyết, phương pháp, kỹ thuật lập trình trên hệ điều hành
Android để xây dựng ứng dụng hỗ trợ học tập học phần Lập trình ASP.NET
trên thiết bị di động.
3. Mục tiêu khóa luận
Xây dựng thành công ứng dụng hỗ trợ học phần Lập trình ASP.NET trên
thiết bị đi động.
4. Nhiệm vụ nghiên cứu
Tìm hiểu về hệ điều hành Android bằng cách thu thập, đọc tài liệu, nghiên
cứu sử dụng ngôn ngữ Java và các thư viện trong Android để lập trình ứng dụng.
Nghiên cứu các thuật toán được sử dụng trong ứng dụng học lập trình
ASP.NET.
Lập trình, cài đặt hồn thiện ứng dụng hỗ trợ học lập trình ASP.NET.
5. Phương pháp nghiên cứu
Phương pháp nghiên cứu tự luận: đọc và nghiên cứu tài liệu, giáo trình có
liên quan đến việc lập trình game Android rồi phân hóa, hệ thống các kiến thức.
Phương pháp tổng kết kinh nghiệm: qua việc nghiên cứu, tham khảo tài liệu,
giáo trình từ đó rút ra kinh nghiệm để áp dụng vào việc nghiên cứu.
Phương pháp lấy ý kiến chuyên gia: lấy ý kiến của giảng viên trực tiếp
hướng dẫn, các giảng viên khác để hoàn thiện về mặt nội dung và hình thức
của khóa luận.
3
6. Đối tượng và phạm vi nghiên cứu
Đối tượng: Ứng dụng hỗ trợ học Lập trình ASP.NET trên thiết bị di động.
Phạm vi: Dùng ngơn ngữ lập trình Java dành cho hệ điều hành Android.
7. Bố cục khóa luận
Ngoài phần mục lục, mở đầu, kết luận và phụ lục thì báo cáo được chia
làm ba chương như sau:
Chương I: Tổng quan về hệ điều hành Android, ngôn ngữ lập trình
Java, học phần lập trình ASP.NET
Chương II: Phân tích và thiết kế hệ thống ứng dụng hỗ trợ học lập trình
ASP.NET.
Chương III: Xây dựng ứng dụng hỗ trợ học lập trình ASP.NET.
4
CHƯƠNG I
TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID, NGÔN NGỮ LẬP
TRÌNH JAVA, HỌC PHẦN LẬP TRÌNH ASP.NET
1.1. Khái niệm, lịch sử hình thành và phát triển hệ điều hành Android
1.1.1. Khái niệm hệ điều hành Android
Android là hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho
các thiết bị di động có màn hình cảm ứng như điện thoại di động và máy tính
bảng. Ban đầu Android được phát triển bởi tổng công ty Android, với sự hỗ trợ
tài chính từ Google, sau này được chính Google mua lại vào năm 2005. Android
dựa trên nền tảng Linux phiên bản 2.6 cho hệ thống dịch vụ cốt lõi như security,
memory management, process management, network stack, and driver model.
Android có một cộng đồng những nhà phát triển rất lớn viết các ứng dụng
cho hệ điều hành của mình. Tính đến tháng 8 năm 2013, có hơn 975.000 ứng
dụng dành cho Android trên cửa hàng Google Play, và số lượng ứng dụng tải
về từ Cửa hàng Play ước tính đạt gần 30 tỷ. Các ứng dụng cho Android được
phát triển bằng ngôn ngữ Java sử dụng bộ công cụ phát triển phần mềm Android
Software Development Kit (SDK).
Google công bố hầu hết các mã nguồn mở của Android theo bản cấp
phép Apache. Hệ điều hành Android bao gồm 12 triệu dòng mã, 3 triệu dòng
XML, 2.8 triệu dòng mã C, 2.1 triệu dòng mã Java và 1.75 triệu dòng mã C++.
Bất kỳ một hãng sản xuất phần cứng nào cũng có thể sử dụng hệ điều
hành Android cho thiết bị của mình, miễn là các thiết bị ấy đáp ứng được các
tiêu chuẩn cơ bản do Google đặt ra (có cảm ứng chạm, GPS, 3G,…). Ra đời
tháng 11/2007, hệ điều hành Android đã trải qua nhiều lần cập nhật với phiên
bản gần đây nhất là Android 5.1 Lollipop như hình 1.1 nhằm giúp cải thiện tính
ổn định và bổ sung một số tính năng mới như hỗ trợ các thiết bị nhiều thẻ sim,
hỗ trợ khả năng thoại HD trên điện thoại, tính năng bảo mật cho phép bảo vệ
thiết bị bằng cách chỉ cho đăng nhập bằng tài khoản Google, kết nối nhanh
chóng với mạng WiFi hay thiết bị Bluetooth từ menu Quick Settings, hỗ trợ
5
hình động mới cho ứng dụng đồng hồ,…
Hình 1.1. Biểu tượng Android 5.1 Lollipop
Bộ công cụ Android SDK cung cấp các công cụ và bộ thư viện các
hàm giao diện chương trình ứng dụng (Application Programming Interface
hay API) cần thiết để phát triển ứng dụng cho nền tảng Android sử dụng
ngơn ngữ lập trình Java.
1.1.2. Lịch sử hình thành và phát triển của hệ điều hành Android
Tổng công ty Android (Android, Inc.) được thành lập tại Palo Alto,
California vào tháng 10 năm 2003 bởi Andy Rubin (đồng sáng lập công ty
Danger), Rich Miner (đồng sáng lập Tổng công ty Viễn thơng Wildfire), Nick
Sears (từng là Phó giám đốc T-Mobile), và Chris White (trưởng thiết kế và giao
diện tại WebTV) để phát triển, theo lời của Rubin, “các thiết bị di động thơng
minh hơn có thể biết được vị trí và sở thích của người dùng” [9]. Dù những
người thành lập và nhân viên đều là những người có tiếng tăm, tổng công ty
Android hoạt động một cách âm thầm, chỉ tiết lộ rằng họ đang làm phần mềm
dành cho điện thoại di động. Cơng ty này sau đó được Google mua lại vào ngày
17 tháng 8 năm 2005 và bắt đầu xây dựng Android Platform. Các thành viên
chủ chốt tại Android Inc. gồm có: Andy Rubin, Rich Miner, Nick Sears, and
Chris White.
Đến cuối năm 2007, thuộc về Liên minh Thiết bị Cầm tay Mã Nguồn mở
(Open Handset Alliance) gồm các thành viên nổi bật trong ngành viễn thông và
thiết bị cầm tay như: Texas Instrument, Broadcom Corporation, Google, HTC,
Intel, LG, Marvell Technology Group, Motorola, Nvidia…
6
Electronics, Sprint Nextel, T-Mobile, ARM Holdings, Atheros Communications,
Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp and
Vodafone Group,…
Mục tiêu của liên minh này là nhanh chóng đổi mới để đáp ứng tốt hơn
cho nhu cầu của người tiêu dùng và kết quả đầu tiên của nó chính là nền tảng
Android. Android được thiết kế để phục vụ nhu cầu của các nhà sản xuất, các
nhà khai thác và các lập trình viên thiết bị cầm tay. Android là hệ thống nền
tảng các phần mềm dành cho điện thoại di động bao gồm hệ điều hành, các
phần tử giao tiếp trung gian (midleware) và các ứng dụng chính (key application).
Nền tảng di động Android của Google ngày càng trở nên hiện thực và
đang là một đối thủ nặng ký cho những gã khổng lồ như Microsoft, Apple,
RIM,…Cuộc chiến đã rõ ràng hơn khi mà Google tung ra bộ công cụ phát triển
phần mềm cho Android (SDK). Bộ SDK sẽ giúp các nhà phát triển phần mềm
hiểu rõ hơn về Android và tạo nên các sản phẩm phần mềm cho dòng thiết bị
này. Bộ SDK được thiết kế để cho phép các nhà phát triển “mở rộng, thay thế,
tái sử dụng” các thành phần phần mềm, có nhiều cơng cụ debug, thư viện, dự
án mẫu. Có một plug-in tích hợp SDK với nền tảng để phát triển Eclipse (từ
Eclipse 3.2 trở về sau).
Phiên bản SDK đầu tiên ra phát hành vào tháng 11 năm 2007, hãng
TMobile cũng công bố chiếc điện thoại Android đầu tiên đó là chiếc TMobile
G1, chiếc smartphone đầu tiên dựa trên nền tảng Android. Một vài ngày sau đó,
Google lại tiếp tục cơng bố sự ra mắt phiên bản Android SDK release Candidate
1.0. Trong tháng 10 năm 2008, Google được cấp giấy phép mã nguồn mở cho
Android Platform.
Khi Android được phát hành thì một trong số các mục tiêu trong kiến
trúc của nó là cho phép các ứng dụng có thể tương tác được với nhau và có thể
sử dụng lại các thành phần từ những ứng dụng khác. Việc tái sử dụng không
chỉ cho các dịch vụ mà nó cịn được áp dụng cho cả các thành phần dữ liệu và
giao diện người dùng.
7
Vào cuối năm 2008, Google cho phát hành một thiết bị cầm tay được gọi
là Android Dev Phone 1 có thể chạy được các ứng dụng Android mà không bị
ràng buộc vào các nhà cung cấp mạng điện thoại di động. Mục tiêu của thiết bị
này là cho phép các nhà phát triển thực hiện các cuộc thí nghiệm trên một thiết
bị có thể chạy hệ điều hành Android mà không phải ký một bản hợp đồng nào.
Vào khoảng cùng thời gian đó thì Google cũng cho phát hành một phiên bản
vá lỗi 1.1 của hệ điều hành này. Ở cả hai phiên bản 1.0 và 1.1 Android chưa hỗ
trợ soft-keyboard mà đòi hỏi các thiết bị phải sử dụng bàn phím vật lý. Android
cố định vấn đề này bằng cách phát hành SDK 1.5 vào tháng Tư năm 2009, cùng
với một số tính năng khác. Chẳng hạn như nâng cao khả năng ghi âm truyền
thông, vận dụng và các thư mục hiện tại (live folder). Chiếc điện thoại chạy
Android đầu tiên được bán ra là HTC Dream, phát hành ngày 22 tháng 10 năm
2008. Biểu trưng của hệ điều hành Android mới là một con rôbốt màu xanh lá
cây do hãng thiết kế Irina Blok tại California vẽ.
Từ năm 2008, Android đã trải qua nhiều lần cập nhật để dần dần cải tiến
hệ điều hành, bổ sung các tính năng mới và sửa các lỗi trong những lần phát
hành trước. Mỗi bản nâng cấp được đặt tên lần lượt theo thứ tự bảng chữ cái,
theo tên của một món ăn tráng miệng; Ví dụ như phiên bản 1.5 Cupcake (bánh
bơng lan nhỏ có kem) tiếp nối bằng phiên bản 1.6 Donut (bánh vòng). Phiên
bản mới nhất hiện nay là 5.1 Lollipop. Vào năm 2010, Google ra mắt loạt thiết
bị Nexus một dịng sản phẩm bao gồm điện thoại thơng minh và máy tính bảng
chạy hệ điều hành Android, do các đối tác phần cứng sản xuất. HTC đã hợp tác
với Google trong chiếc điện thoại thông minh Nexus đầu tiên, Nexus One. Kể
từ đó nhiều thiết bị mới hơn đã gia nhập vào dòng sản phẩm này, như điện thoại
Nexus 4 và máy tính bảng Nexus 10, lần lượt do LG và Samsung sản xuất.
Google xem điện thoại và máy tính bảng Nexus là những thiết bị Android chủ
lực của mình, với những tính năng phần cứng và phần mềm mới nhất của Android.
8
1.2. Tổng quan về ngôn ngữ Java
1.2.1. Giới thiệu ngôn ngữ Java
Java là một ngơn ngữ lập trình được Sun Microsystems giới thiệu vào
tháng 6 năm 1995. Từ đó, nó đã trở thành một cơng cụ lập trình của các lập
trình viên chuyên nghiệp. Java được xây dựng trên nền tảng của C và C++. Do
vậy nó sử dụng các cú pháp của C và các đặc trưng hướng đối tượng của C++.
Vào năm 1991, một nhóm các kỹ sư của Sun Microsystems có ý định
thiết kế một ngơn ngữ lập trình để điều khiển các thiết bị điện tử như Tivi, máy
giặt, lò nướng, … Mặc dù C và C++ có khả năng làm việc này nhưng trình biên
dịch lại phụ thuộc vào từng loại CPU.
Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên rất đắt.
Vì vậy để mỗi loại CPU có một trình biên dịch riêng là rất tốn kém. Do đó nhu
cầu thực tế địi hỏi một ngơn ngữ chạy nhanh, gọn, hiệu quả và độc lập thiết bị
tức là có thể chạy trên nhiều loại CPU khác nhau, dưới các môi trường khác
nhau. “Oak” đã ra đời và vào năm 1995 được đổi tên thành Java. Mặc dù mục
tiêu ban đầu không phải cho Internet nhưng do đặc trưng không phụ thuộc thiết
bị nên Java đã trở thành ngơn ngữ lập trình cho Internet.
Java là ngơn ngữ lập trình hướng đối tượng, do vậy khơng thể dùng Java
để viết một chương trình hướng chức năng.
Java là ngôn ngữ vừa biên dịch vừa thông dịch. Đầu tiên mã nguồn được
biên dịch bằng công cụ JAVAC để chuyển thành dạng ByteCode. Sau đó được
thực thi trên từng loại máy cụ thể nhờ chương trình thông dịch. Mục tiêu của
các nhà thiết kế Java là cho phép người lập trình viết chương trình một lần
nhưng có thể chạy trên bất cứ phần cứng cụ thể.
Ngày nay, Java được sử dụng rộng rãi để viết chương trình chạy trên
Internet. Nó là ngơn ngữ lập trình hướng đối tượng độc lập thiết bị, không phụ
thuộc vào hệ điều hành. Nó khơng chỉ dùng để viết các ứng dụng chạy đơn lẻ
hay trong mạng mà còn để xây dựng các trình điều khiển thiết bị cho điện thoại
di động, PDA,..
9
1.2.2. Các đặc trưng của Java
Đơn giản:
Những người thiết kế mong muốn phát triển một ngôn ngữ dễ học và
quen thuộc với đa số người lập trình. Do vậy Java được loại bỏ các đặc trưng
phức tạp của C và C++ như thao tác con trỏ, thao tác nạp đè (overload),… Java
không sử dụng lệnh “goto” cũng như file header (.h). Cấu trúc “struct” và
“union” cũng được loại bỏ khỏi Java.
Hướng đối tượng
Java được thiết kế xoay quanh mơ hình hướng đối tượng. Vì vậy trong
Java, tiêu điểm là dữ liệu và các phương pháp thao tác lên dữ liệu đó. Dữ liệu
và các phương pháp mơ tả trạng thái và cách ứng xử của một đối tượng trong Java.
Độc lập phần cứng và hệ điều hành
Đây là khả năng một chương trình được viết tại một máy nhưng có thể
chạy được bất kỳ đâu. Chúng được thể hiện ở mức mã nguồn và mức nhị phân.
Ở mức mã nguồn, người lập trình cần mơ tả kiểu cho mỗi biến. Kiểu dữ
liệu trong Java nhất quán cho tất cả các hệ điều hành và phần cứng khác nhau.
Java có riêng một thư viện các lớp cơ sở. Vì vậy chương trình Java được viết
trên một máy có thể dịch và chạy trơn tru trên các loại máy khác mà không cần
viết lại.
Ở mức nhị phân, một chương trình đã biên dịch có thể chạy trên nền khác
mà khơng cần dịch lại mã nguồn. Tuy vậy cần có phần mềm máy ảo Java (sẽ
đề cập đến ở phần sau) hoạt động như một trình thơng dịch tại máy thực thi.
Hình 1.2. Quá trình thực thi
Trình biên dịch sẽ chuyển các chương trình viết bằng C, C++ hay ngơn
ngữ khác thành mã máy nhưng phụ thuộc vào CPU. Nên khi muốn chạy trên
10
loại CPU khác, chúng ta phải biên dịch lại chương trình.
Mơi trường phát triển của Java được chia làm hai phần: Trình biên dịch
và trình thơng dịch. Khơng như C hay C++, trình biên dịch của Java chuyển mã
nguồn thành dạng bytecode độc lập với phần cứng mà có thể chạy trên bất kỳ
CPU nào.
Nhưng để thực thi chương trình dưới dạng bytecode, tại mỗi máy cần
phải có trình thơng dịch của Java hay còn gọi là máy ảo Java. Máy ảo Java
chuyển bytecode thành mã lệnh mà CPU thực thi được.
Mạnh mẽ
Java yêu cầu chặt chẽ về kiểu dữ liệu và phải mô tả rõ ràng khi viết
chương trình. Chúng sẽ kiểm tra lúc biên dịch và cả trong thời gian thơng dịch
vì vậy Java loại bỏ các kiểu dữ liệu dễ gây ra lỗi.
Bảo mật
Java cung cấp một số lớp để kiểm tra bảo mật: Ở lớp đầu tiên, dữ liệu và
các phương pháp được đóng gói bên trong lớp. Chúng chỉ được truy xuất thơng
qua các giao diện mà lớp cung cấp. Java không hỗ trợ con trỏ vì vậy khơng cho
phép truy xuất bộ nhớ trực tiếp. Nó cũng ngăn chặn khơng cho truy xuất thơng
tin bên ngồi của mảng bằng kỹ thuật tràn và cũng cung cấp kỹ thuật dọn rác
trong bộ nhớ. Các đặc trưng này tạo cho Java an toàn và có khả năng cơ động cao.
Trong lớp thứ hai, trình biên dịch kiểm sốt để đảm bảo mã an tồn. Lớp
thứ ba được đảm bảo bởi trình thơng dịch. Chúng kiểm tra xem bytecode có
đảm bảo các qui tắc an tồn trước khi thực thi. Lớp thứ tư kiểm sốt việc nạp
các lớp lên bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp
vào hệ thống.
Phân tán
Java có thể dùng để xây dựng các ứng dụng có thể làm việc trên nhiều
phần cứng, hệ điều hành và giao diện đồ họa. Java được thiết kế cho các ứng
dụng chạy trên mạng. Vì vậy chúng được sử dụng rộng rãi trên Internet.
11
Đa luồng
Chương trình Java sử dụng kỹ thuật đa tiến trình (Multithread) để thực
thi các cơng việc đồng thời. Chúng cũng cung cấp giải pháp đồng bộ giữa các
tiến trình. Đặc tính hỗ trợ đa tiến trình này cho phép xây dựng các ứng dụng
trên mạng chạy uyển chuyển.
Động
Java được thiết kế như một ngôn ngữ động để đáp ứng cho những mơi
trường mở. Các chương trình Java bổ sung các thông tin cho các đối tượng tại
thời gian thực thi. Điều này cho phép khả năng liên kết động các mã.
1.3. Tổng quan về học phần lập trình ASP.NET
Từ khoảng cuối thập niên 90, ASP (Active Server Page) đã được nhiều
lập trình viên lựa chọn để xây dựng và phát triển ứng dụng Web động trên máy
chủ sử dụng hệ điều hành Windown. ASP đã thể hiện được những ưu nhược
điểm của mình với mơ hình lập trình thủ tục đơn giản, sử dụng hiệu quả các đối
tượng COM: ADO (ActiveX Data Object) – xử lý dữ liệu, FSO (File System
Object) làm việc với hệ thống tập tin.., đồng thời, ASP cũng hỗ trợ nhiều ngôn
ngữ: VBScript, JavaScript. Chính những ưu điểm đấy, ASP đã được yêu thích
trong một thời gian.
Đầu năm 2002 Microsoft giới thiệu một kỹ thuật lập trình Web khá mới
mẻ với tên gọi ban đầu là ASP+, tên chính thức sau này là ASP.NET. Với
ASP.NET, khơng những khơng cần địi hỏi người dùng phải biết các tag
HTML, thiết kết Web, mà nó cịn hỗ trợ mạnh lập trình hướng đối tượng trong
quá trình xây dựng và phát triển ứng dụng Web.
ASP.NET là kỹ thuật lập trình và phát triển ứng dụng Web ở phía Server
dựa trên nền tảng của Microsoft .NET Framework.
Hầu hết những người mới đến với lập trình Web đều bắt đầu tìm hiểu
những kỹ thuật ở phía Client như: HTML, Java Script, CSS. Khi Web browser
yêu cầu một trang web, Web Server tìm trang web mà Client yêu cầu, sau đó gửi
về cho Client. Client nhận kết quả trả về từ Server và hiển thị lên màn hình.
ASP.NET sử dụng kỹ thuật lập trình ở phía Server thì hồn tồn khác,
12
mã lệnh ở phía Server sẽ được biên dịch và thi hành tại Web Server. Sau khi
được Server đọc, biên dịch và thi hành, kết quả tự động được chuyển sang
HTML/JavaScript/CSS và trả về cho Client. Tất cả các sử lý lệnh ASP.NET
đều được thực hiện tại Server và do đó, gọi là kỹ thuật lập trình ở phía Server.
1.3.1. Ưu điểm của ASP.NET
ASP.NET cho phép người dùng lựa chọn một trong các ngơn ngữ lập
trình mà người dùng yêu thích: Visual Basic.Net, J#,C#,…
Trang ASP.NET được biên dịch trước. Thay vì phải đọc và thơng dịch
mỗi khi trang Web được yêu cầu, ASP.NET biên dịch những trang Web
động thành những tập tin DLL mà Server có thể thi hành nhanh chóng
và hiệu quả. Yếu tố này là một bước nhảy vọt đáng kể so với kỹ thuật
thông dịch của ASP.
Hình 1.3. Mơ hình xử lý ASP.NET.
ASP.NET hỗ trợ mạnh mẽ bộ thư viện phong phú và đa dạng của .NET
Framework, làm việc với XML, Web Service, truy cập cơ sở dữ liệu
qua ADO.Net,…
ASPX và ASP có thể cùng hoạt động trong 1 ứng dụng.
ASP.NET sử dụng phong cách lập trình mới: Code behind. Tách code
riêng, giao diện riêng dễ đọc, dễ quản lý và bảo trì.
Kiến trúc lập trình giống như ứng dụng trên Windows.
13
1.3.2. Nội dung của học phần lập trình ASP.NET
CHƯƠNG 1: Tổng quan về ASP.NET
1.1. Tìm hiểu về ASP.NET
1.2. Những ưu điểm của ASP.NET
1.3. Tìm hiểu về .NET Platform và .NET Framework
1.4. Cách thức web server thực thi ứng dụng asp.net
1.5. Tạo ứng dụng ASP.NET đầu tiên
CHƯƠNG 2: ASP.NET Server Controls
2.1. Điều khiển Label
2.2. Điều khiển TextBox
2.3. Điều khiển Image
2.4. Điều khiển Button, ImageButton, LinkButton
2.5. Điều khiển HyperLink
2.6. Điều khiển CheckBox và RadioButton
CHƯƠNG 3: Các điều khiển liên kết dữ liệu
3.1. Điều khiển GridView
3.2. Điều khiển DataList
3.3. Điều khiển Repeater
3.4. Điều khiển DataGrid
3.5. Điều khiển DetailView và FormView
CHƯƠNG 4: Xử lý dữ liệu với ADO.NET
4.1. Tìm hiểu về ADO.NET
4.2. Các namespace của ADO.NET
4.3. Các đối tượng trong ADO.NET
4.3. Các đối tượng trong ADO.NET
CHƯƠNG 5: Quản lý trạng thái
14
5.1. Vấn đề trạng thái
5.2. Xem trạng thái và chuyển thông tin giữa các trang
5.3. Đối tượng Cookies và Session
5.4. Đối tượng Application
5.5. Tập tin Global.asax và Web.config
1.4. Lập trình ứng dụng trên hệ điều hành Android
1.4.1. Công cụ lập trình ứng dụng trên Android
Android SDK(Android Software Development Kit): Bộ công cụ phát triển
Android bao gồm các công cụ riêng lẻ như: debugger, các thư viện, trình giả
lập điện thoại Android, các tài liệu hỗ trợ và code mẫu. Hiện Android cung
cấp bộ công cụ này trên nhiều nền tảng hệ điều hành khác nhau (Windows,
Linux, Mac,...) yêu cầu cài sẵn Java Development Kit, Apache Ant và
Python2.2 trở lên.
IDE (Integrated Development Environment): Mơi trường phát triển tích
hợp Eclipse phiên bản 3.2 trở lên với plugin ADT (Android Development
Tools), Netbeans. Tuy nhiên, người lập trình có thể sử dụng bất kỳ 1 IDE
hay trình soạn thảo văn bản nào để viết code Java và XML rồi biên dịch nên
ứng dụng hồn chỉnh bằng cách sử dụng dịng lệnh (command lines- dòng
lệnh). Eclipse hỗ trợ tốt hơn Netbeans nên được sử dụng làm cơng cụ phát
triển chính thức.
Một số cơng cụ hỗ trợ lập trình Android tiêu biểu:
- SQLite Manager: là một addon của Firefox giúp quản lí SQLite.
- DroidDraw: giúp thiết kế file XML giao diện ứng dụng.
- Balsamiq Mockups và AdobeFireworks: giúp nhanh chóng phác thảo ý
tưởng và giao diện sơ bộ của ứng dụng.
- StarUML: vẽ các lược đồ UML hỗ trợ phân tích thiết kế.
15
1.4.2. Các thành phần của một ứng dụng Android
Một ứng dụng trên Android được cấu thành từ bốn thành phần cơ bản sau:
Activities.
Services.
Broadcast Receivers.
Content Provider.
Các thành phần này khơng nhất thiết phải có mặt đầy đủ trong ứng dụng.
Chúng ta có thể xem các thành phần nào được sử dụng trong ứng dụng bằng
việc xem khai báo trong file AndroidManifest.xml.
Activity
- Khái niệm:
Một hoạt động là một giao diện người dùng trực quan mà người dùng có
thể thực hiện trên đó mỗi khi được kích hoạt. Một ứng dụng có thể có nhiều
hoạt động và chúng có thể gọi qua lại lẫn nhau. Mỗi Activity là một dẫn xuất
của lớp android.app.Activity.
Mỗi hoạt động có một cửa sổ để vẽ lên. Thông thường cửa sổ này phủ
đầy màn hình, ngồi ra nó cũng có thể có thêm các cửa sổ con khác như là hộp
thoại…Nội dung của cửa sổ của hoạt động được cung cấp bởi một hệ thống cấp
bậc các View (là đối tượng của lớp Views).
- Vòng đời hoạt động (circle activities)
Các hoạt động trong hệ thống được quản lý bởi một cấu trúc dữ liệu ngăn
xếp. Khi có một hoạt động được khởi tạo, nó được đẩy vào trong ngăn xếp,
chuyển sang trạng thái thực thi và hoạt trộng trước đó sẽ chuyển sang trạng thái
chờ. Hoạt động này chỉ trở lại trang thái kích hoạt khi mà hoạt động vừa khởi
tạo kết thúc việc thực thi.
Một Activity có 3 trạng thái chính:
- Active hoặc running khi nó ở trên nhất màn hình và nhận tương tác người dùng.
- Paused khi Activity khơng cịn là trọng tâm trên màn hình nhưng vẫn hiện
thị trước người dùng.
- Stopped khi một Activity hoàn toàn bị che khuất, nó sẽ rơi vào trạng thái
16
Stopped. Tuy nhiên, nó vẫn cịn lưu trữ tồn bộ thơng tin trạng thái. Và
nó thường bị hệ thống đóng lại khi có tình trạng thiếu bộ nhớ.
Khi chuyển giữa các trạng thái, ứng dụng sẽ gọi các hàm callback ứng
với các bước chuyển:
- void onCreate(Bundle savedInstanceState)
- void onStart()
- void onResume()
- void onPause()
- void onStop()
- void onDestroy()
Biểu đồ sau mô tả trạng thái trong vòng đời của một hoạt động. Hình chữ
nhật thể hiện các phương thức Callback mà chúng ta có thể khai báo để gọi
thực thi một số thao tác khi hoạt động chuyển sang trạng thái khác (phương
thức Callback là phương thức được gọi lại bởi một phương thức khác khi có
một sự kiện xảy ra). Các trạng thái chính của một hoạt động được thể hiện bởi
các hình viên thuốc.
Vịng đời của một hoạt động có thể được thể hiện trong những quá trình sau:
Hình 1.4. Vòng đời của một activity
17
Toàn bộ thời gian sống của một hoạt động bắt đầu từ lời gọi đầu tiên tới
phương thức onCreate(Bundle) tới lời gọi phương thức onDestroy(). Trong quá
trình này, một hoạt động sẽ khởi tạo lại tất cả các tài nguyên cần sử dụng trong
phương thức onCreate() và giải phóng chúng khi phương thức onDestroy()
được thực thi.
Thời gian sống có thể nhìn thấy của một hoạt động bắt đầu từ lời gọi tới
phương thức onStart(), cho tới khi phương thức onStop() của nó được thực thi.
Tồn bộ các tài ngun đang được sử dụng bởi hoạt động vẫn tiếp tục được lưu
giữ, người dùng có thể thấy giao diện nhưng khơng tương tác được với hoạt động
do trong qua trình này hoạt động không ở trạng thái chạy tiền cảnh.
Thời gian sống tiền cảnh của một hoạt động là quá trình bắt dầu từ khi
có lời gọi tới phương thức onResume() và kết thúc bằng lời gọi tới phương thức
onPause(). Trong thời gian này, hoạt động chạy ở tiền cảnh và có thể tương tác
với người dùng.
Service
Một dịch vụ (Service) là các đoạn mã được thực thi ngầm bởi hệ thống
mà người sử dụng không thấy được. Mỗi service đều được mở rộng từ lớp cơ
sở là service trong gói android.app. Có thể kết nối tới hoặc kích hoạt một
Service thơng qua interface mà Service đưa ra.Ví dụ như một chương trình chơi
nhạc, sẽ có vài hoạt động cho phép người dùng duyệt danh sách các bài hát và
lựa chọn bài nào để phát. Tuy nhiên, chức năng chơi nhạc không được thiết kế
như một hoạt động bởi chúng ta sẽ muốn chuyển qua cửa sổ khác, như khi soạn
tin nhắn thì bài nhạc vẫn tiếp tục được chơi. Trong trường hợp này, ứng dụng
chơi nhạc sẽ khởi tạo một dịch vụ bằng cách sử dụng phương thức:
Context.startService().
Một ứng dụng có thể dễ dàng thực hiện liên kết tới một dịch vụ đang
chạy (thậm chí khởi động nếu nó chưa thực thi) bằng phương thức
Context.bindService(). Khi đó dịch vụ này sẽ cung cấp cho ứng dụng cơ chế để
giao tiếp với chúng thông qua giao diện gọi là IBinder (đối với dịch vụ chơi
nhạc có thể cho phép dừng hoặc chuyển qua bài nhạc kế tiếp).