i TRƯỜNG ĐẠI HỌC HẢI PHÒNG KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC TẬP NGHIỆP VỤ ĐỀ TÀI TÌM HIỂU ANDROID VÀ ỨNG DỤNG XÂY DỰNG PHẦN MỀM THI TRẮC NGHIỆM Sinh viên thực hiện Đào Trọng Huy Ngày sinh 17/10/2[.]
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
Trang 2LỜI CẢM ƠNTrước hết, em xin bày tỏ lòng biết ơn sâu sắc tới ThS Đỗ Quỳnh Anh, người đã
trực tiếp hướng dẫn và tận tình giúp đỡ em hoàn thành báo cáo thực tập này
Em xin chân thành cảm ơn sự giúp đỡ của toàn thể các giảng viên trong khoaCông Nghệ Thông Tin trường Đại học Hải Phòng, cũng như sự chỉ bảo của các anhchị trong Công ty TNHH Thương Mại Thế Giới Số Huy Hậu nơi em thực tập đã dìudắt, dạy dỗ em cả về kiến thức chuyên môn và tinh thần học tập, sáng tạo để em cóđược kiến thức thực hiện báo cáo của mình
Cuối cùng, em xin bày tỏ lòng biết ơn sâu đậm của mình tới gia đình, bạn bènhững người luôn sát cánh bên em, tạo mọi điều kiện tốt nhất để em có thể thực hiệnbáo cáo thực tập của mình
Trong quá trình thực hiện báo cáo thực tập, mặc dù đã cố gắng hết sức song dothời gian và khả năng có hạn nên em không thể tránh khỏi những thiếu sốt Vì vậy, emrất mong nhận được sự thông cảm, chỉ bảo và giúp đỡ của các thầy giáo, cô giáo vàcác bạn
Một lần nữa em xin chân thành cảm ơn!
Trang 3MỤC LỤC
LỜI CẢM ƠN i
MỤC LỤC ii
DANH MỤC CÁC BẢNG v
DANH SÁCH CÁC HÌNH ẢNH vi
LỜI MỞ ĐẦU 1
CHƯƠNG 1: KHẢO SÁT HỆ THỐNG 2
1.1.Mô tả hệ thống 2
1.1.1.Nhiệm vụ cơ bản 2
1.1.2.Cơ cấu tổ chức 2
1.1.3.Quy trình xử lý 2
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 3
2.1 Tổng quan về UML 3
2.1.1 UML là gì? 3
2.1.2 Các sơ đồ lớp 3
2.1.3 Kiến trúc của hệ thống 4
2.1.4 Sơ đồ Use Case ( Use Case diagram) 5
2.1.5 Sơ đồ lớp 6
2.1.6 Sơ đồ tuần tự 8
2.2 Môi trường phát triển 9
2.2.1 Lịch sử về hệ điều hành Android 9
2.2.2.Tổng quan cấu trúc của Android 10
2.2.3 Dalvik delving với máy ảo 12
2.2.4 Các thành phần trong ứng dụng Android 12
2.3 Ngôn ngữ lập trình java 14
2.3.1 Giới thiệu 14
Trang 42.3.2 Đặc trưng ngôn ngữ JAVA 15
2.4 SQLITE 16
2.4.1.sqlite là gì? 16
2.4.2 Tại sao lại sử dụng sqlite 16
2.4.3 Lịch sử của sqlite 17
2.4.4 Hạn chế của sqlite 17
2.4.5 Lệnh trong sqlite 18
CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 19
3.1.Phân tích hệ thống về chức năng 19
3.1.1 Biều đồ lớp 19
3.1.2.Biều đồ ca sử dụng 21
3.1.3.Biểu đồ tuần tự 23
3.1.4.Biểu đồ trạng thái 24
3.1.5.Biểu đồ hoạt động 25
3.1.6.Đặc tả ca sử dụng 27
3.2.Phân tích hệ thống về dữ liệu 31
3.3.Thiết kế tiến trình hệ thống 32
CHƯƠNG 4: CÀI ĐẶT HỆ THỐNG 33
4.1 Giao diện chính 33
4.2 Chọn đề thi 35
4.3 Làm bài 35
4.4 Danh sách câu trả lời và chưa trả lời 36
4.5 Kết thúc bài làm 36
4.6 Lưu điểm 37
4.7 Danh sách điểm 37
4.8 Tìm kiếm 38
Trang 54.9 Thoát 38
KẾT LUẬN 39
5.1 Đề tài đạt được một số kết quả sau: 39
5.2.Hạn chế 39
5.3.Hướng phát triển 39
TÀI LIỆU THAM KHẢO 40
Trang 6DANH MỤC CÁC BẢNG
Bảng2.1: Các ký hiệu cơ bản của sơ đồ Use Case 14
Bảng2.2: Các kiểu lớp 16
Bảng2.3: Hạn chế của sqlite 25
Bảng2.4: Lệnh nhóm DLL 26
Bảng2.5: Lệnh nhóm DML 26
Bảng2.6: Lệnh nhóm DQL 26
Bảng3 1: Đặc tả ca sử dụng cập nhật môn 27
Bảng3 2: Đặc tả ca sử dụng cập nhật đề thi 28
Bảng3 3: Đặc tả ca sử dụng cập nhật câu hỏi 29
Bảng3 4: Đặc tả ca sử dụng cập nhật đáp án 30
Bảng3 5: Đặc tả ca sử dụng tìm kiếm 31
Bảng3 6: Phân tích hệ thống về dữ liệu trắc nghiệm 31
Bảng3 7: Phân tích hệ thống về dữ liệu điểm số 32
Trang 7DANH SÁCH CÁC HÌNH ẢNH
Hình 2 1: Kiến trúc hệ thống 11
Hình 2 2: Ký hiệu cơ bản lớp 13
Hình 2 3: Ký hiệu cơ bản mối kết hợp 13
Hình 2 4: Các ký hiệu sơ đồ tuần tự 15
Hình 2 5: Các thành phần trong một Android project 19
Hình 2 6: Logo Java 20
Hình 3 1: Biểu đồ lớp tổng quát 25
Hình 3 2: Biểu đồ lớp hệ thống 25
Hình 3 3: Biểu đồ lớp chọn đề thi 26
Hình 3 4: Biểu đồ lớp môn học 26
Hình 3 5: Biểu đồ lớp cập nhật đề thi 26
Hình 3 6 Biểu đồ lớp làm bài thi 26
Hình 3 7: Biểu đồ ca sử dụng tổng quát 27
Hình 3 8: Biểu đồ ca sử dụng cập nhật môn 27
Hình 3 9: Biểu đồ ca sử dụng cập nhật đề thi 27
Hình 3 10: Biểu đồ ca sử dụng cập nhật câu hỏi 28
Hình 3 11: Biểu đồ ca sử dụng cập nhật đáp án 28
Hình 3 12: Biểu đồ ca sử dụng tìm kiếm 28
Hình 3 13: Biểu đồ tuần tự mở hệ thống 29
Hình 3 14: Biểu đồ tuần tự đóng hệ thống 29
Hình 3 15: Biểu đồ tuần tự thêm môn 29
Hình 3 16: Biểu đồ tuần tự đề thi 30
Hình 3 17: Biểu đồ tuần tự câu hỏi 30
Hình 3 18: Biểu đồ trạng thái hệ thống 30
Hình 3 19: Biểu đồ trạng thái tìm kiếm 31
Hình 3 20: Biểu đồ hoạt động mở hệ thống 31
Hình 3 21: Biểu đồ hoạt động đóng hệ thống 31
Hình 3 22: Biểu đồ hoạt động cập nhật môn 32
Hình 3 23: Biểu đồ hoạt động cập nhật đề thi 32
Hình 3 24: Biểu đồ hoạt động tìm kiếm 32
Trang 8Hình 3 25: Thiết kế tiến trình hệ thống 34
Hình 4 1: Màn hình giao diện chính 36
Hình 4 2: Màn hình chọn đề thi 38
Hình 4 3: Màn hình làm bài thi 38
Hình 4 4: Màn hình danh sách câu trả lời và chưa trả lời 39
Hình 4 5: Màn hình kết thúc bài làm 39
Hình 4 6: Màn hình lưu điểm 40
Hình 4 7: Màn hình danh sách điểm 40
Hình 4 8: Màn hình tìm kiếm 41
Hình 4 9: Màn hình thoát 41
Trang 10LỜI MỞ ĐẦU
Ngày nay, xu thế của xã hội thông tin đang chuyển dần sang lĩnh vực công nghệ
di động nói chung và điện thoại di động nói riêng Minh chứng cho điều đó là sự ra đờicủa hai dòng điện thoại smartphone Android và iPhone Tuy nhiên, hiện nay tiêu điểm gây chú ý nhất trong xã hội thông tin vẫn là nền tảng Android của Google
Android là một nền tảng phần mềm mở dựa trên nhân hệ điều hành Linux và đánh giá là một nền tảng công nghệ phổ biến trong nhiều lĩnh vực trong tương lai Hiện nay, Android đã thu hút được sự quan tâm của các nhà sản xuất điện thoại di động lớn trên thế giới và mức tăng trưởng của Android vượt lên dẫn đầu so với
iPhone, Nokia và nhiều hãng khác
Ở nước ta, Android thực sự là một mảnh đất màu mỡ mà các công ty phần mềmkhai thác Điều này cũng kéo theo việc cơ hội việc làm cho sinh viên mới ra trường cũng nhiều hơn Ngoài ra, Android là một nền tảng mở và được viết bằng ngôn ngữ Java nên đây là một điểm rất thuận lợi để cho nhiều người có thể dễ dàng bắt tay vào nghiên cứu cũng như dễ dàng tiếp cận công nghệ
Với sự phát triển nhanh chóng của khoa học công nghệ và đặc biệt là ngành công nghệ thông tin, làm từng bước thay đổi cuộc sống của con người bởi các ứng dụng sản phẩm của công nghệ Đi cùng với sự phát triển của ngành công nghệ thông tin là sự ra đời ngày càng nhiều thiết bị cầm tay, smartphone Nhu cầu của con người
về việc sử dụng và giải trí trên các thiết bị di động cũng ngày càng cao và đa dạng Một trong những bộ phận ứng dụng công nghệ thông tin chính là thay đổi và giúp đỡ việc sinh hoạt hàng ngày của mọi người trong cuộc sống Vì vậy em đã lựa chọn đề tài
“Ứng dụng phần mềm thi trắc nghiệm” để làm đồ án với ý nghĩa mang tính thực tế Với mong muốn người dùng có thể ôn lại những kiến thức mình đã học một cách tốtnhất, những kiến thức quan trọng và sẽ làm bài đạt kết quả cao trong các kỳ thi…vv!
Trang 11CHƯƠNG 1: KHẢO SÁT HỆ THỐNG
1.1.Mô tả hệ thống
1.1.1.Nhiệm vụ cơ bản
- Xây dựng giao diện Menu, giao diện test bài trắc nghiệm
- Thiết kế giao diện cho phép xử lý các chức năng chính
- Thiết kế giao diện chương trình chính thực hiện các công việc:
+ Tổng hợp các câu hỏi (chia ra làm nhiều đề với từng môn cụ thể như:Toán, Sinh, english….) với các mốc thời gian 30 -45 phút…
+ Kiểm tra những câu đã trả lời – chưa trả lời
+ Tự chấm điểm khi thời gian kết thúc -> Hiển thị kết quả
+ Người làm bài xem bài mình làm, thay đổi đáp án nếu mình thấy là sai -> Xem kết quả -> Lưu điểm -> Xóa điểm -> Thoát
+ Xem danh sách điểm những người làm bài có lưu điểm lại (các bài Test qua)
+ Tìm kiếm câu hỏi
1.1.2.Cơ cấu tổ chức
Hệ thống
Đăng nhập vào hệ thống sử dụng chương trình
Quản lý các đề thi các môn học, thêm các đề thi, sửa, xóa, thay đổi các câu hỏi trong từng đề thi
Xem danh sách điểm
Thoát khỏi người dùng hiện tại: Thoát khỏi hệ thống chương trình
Giao diện với người dùng:
Hiển thị tất cả các môn học
Hiển thị tất cả các đề thi của từng môn học
Hiển thị các câu hỏi cho từng đề thi: Có kết thúc giờ làm bài, kiểm tra kết quả cho từng đề thi
Có chức năng tìm kiếm các câu trong trong đề thi
Hiển thị danh sách điểm (nếu lưu điểm làm bài)
1.1.3.Quy trình xử lý
Làm bài test
Bước 1: Vào giao diện chính
Bước 2: Tìm đến môn học mình cần kiểm tra, chọn đề thi làm bài test
Trang 12Bước 3: Làm bài kiểm tra và kiểm tra kết qủa
Bước 4: Có thể lưu kết quả (điểm) hoặc không
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Tổng quan về UML
2.1.1 UML là gì?
UML là ngôn ngữ mô hình hóa,ngôn ngữ đặc tả và ngôn ngữ xây dựng mô
hình trong quá trình phát triển phần mềm- đặc biệt là phân tích,thiết kế hệ thống hướng đối tượng
2.1.2 Các sơ đồ lớp
Sơ đồ lớp ( Class Diagram)
Mô tả cấu trúc tĩnh, mô tả mô hình khái niệm bao gồm các lớp đối tượng và cácmối quan hệ của chúng trong hệ thống hướng đối tượng Nó được sử dụng để hiện thị các lớp và gói các lớp cùng các mối quan hệ của chúng Sơ đồ lớp giúp người phát triển phần mềm quan sát và lập kế hoạch cấu trúc hệ thống trước khi lập trình
Nó đảm bảo rằng hệ thống được thiết kế tốt ngay từ đầu
Sơ đồ lớp có thể chứa nhiều loại lớp khác nhau, chúng có thể là những lớp thông thường, lớp tham số hóa, lớp hiện thực, lớp tiện ích, và lớp metaclass ( siêu lớp)
Sơ đồ đối tượng (Object Diagram)
Bao gồm một tập hợp các đối tượng và mối quan hệ giữa chúng Đối tượng là một thể hiện của lớp, sơ đồ đối tượng là một thể hiện của sơ đồ lớp
Sơ đồ Use Case ( Use Case Diagram)
Khái niệm actor: là những người dùng(tác nhân) hay hệ thống khác ở bên ngoài phạm vi của hệ thống mà có tương tác với hệ thống
Sơ đồ Use case bao gồm một tập hợp các Use case, các actor và thể hiện mối quan hệ tương tác giữa actor và Use case Nó rất quan trọng trong việc tổ chức và mô hình hóa hành vi của hệ thống
Sơ đồ tuần tự (Sequence Diagram)
Trang 13Là một dạng biểu đồ tương tác (interaction), biểu diễn sự tương tác giữa các đối tượng theo thứ tự thời gian Nó mô tả các đối tượng liên quan trong một tình huống cụ thể và các bước tuần tự trong việc trao đổi các thông báo(message) giữa các đối tượng
đó để thực hiện một chức năng nào đó của hệ thống
Sơ đồ cộng tác (Collaboration)
Gần giống như sơ đồ Sequence, sơ đồ hợp tác là một cách khác để thể hiện một tình huống có thể xảy ra trong hệ thống Nhưng nó tập trung vào việc thể hiện việc traođổi qua lại các thông báo giữa các đối tượng chứ không quan tâm đến thứ tự của các thông báo đó Có nghĩa là qua đó chúng ta sẽ biết được nhanh chóng giữa 2 đối tượng
cụ thể nào đó có trao đổi những thông báo gì cho nhau
Sơ đồ trạng thái (Statechart)
Chỉ ra một máy chuyển trạng thái, bao gồm các trạng thái, các bước chuyển trạngthái và các hoạt động Nó đặc biệt quan trọng trong việc mô hình hóa hành vi của một lớp giao diện(interface class) hay hợp tác và nó nhấn mạnh vào các đáp ứng theo sự kiện của một đối tượng, điều này rất hữu ích khi mô hình hóa một hệ thống phản ứng(reactive)
Sơ đồ triển khai
Chỉ ra cách bố trí vật lý các thành phần theo kiến trúc được thiết kế của hệ thống.2.1.3 Kiến trúc của hệ thống
Khi xem xét một hệ thống, chúng ta cần xây dựng các mô hình từ những khía cạnh khác nhau, xuất phát từ thực tế là những người làm việc với hệ thống với những vai trò khác nhau sẽ nhìn hệ thống từ những khía cạnh khác nhau
UML xét hệ thống trên 5 khía cạnh:
Trang 14Hình 2 1: Kiến trúc hệ thống
Use Case view: Mô tả cách ứng xử của hệ thống.
Logical view: Mô tả các đối tượng.
Process view: Mô tả việc đồng bộ hoá và các xử lý đồng thời.
Implementation view: Mô tả sự phụ thuộc và kết hợp giữa các
component
Deployment view: Chỉ ra cấu hình phần cứng.
2.1.4 Sơ đồ Use Case ( Use Case diagram)
Mô tả toàn cảnh hệ thống, đơn giản và ít ký hiệu
Mục đích của sơ đồ Use Case
a Mô hình hoá chuỗi hành động
b Cung cấp tổng thể hệ thống
c Đưa ra cơ sở để xác định giao tiếp giữa người, máy đối với hệ thống
d Mô hình hoá cho một Use Case
e Cho người dùng hiểu và giao tiếp với hệ thống
f Làm cơ sở cho phát thảo các đặc tả kiểm tra
Các ký hiệu cơ bản
Trang 15Khái niệm Ký hiệu Ý nghĩa
Actor Người dùng hệ thống, một hệ thống khác hoặc một
sự kiện thời gian
Actor có thể: Chỉ cung cấp thông tin cho hệ thống, chỉ lấy thông tin từ hệ thống, hoặc nhận thông tin từ
hệ thống và cung cấp thông tin cho hệ thống
Use Case Là một khối chức năng được thực hiện bởi hệ thống
để mang lại một kết quả có giá trị đối với một Actor nào đó
Quy ước đặt tên Use Case: động từ đi trước, danh từ hoặc cụm từ theo sau
Relationship Quan hệ giữa các phần tử trong mô hình, bao gồm
kết hợp (association), tổng quát hoá (generalization).Include Một Use Case có thể có chức năng của một Use Case
khácExtend Dùng để chỉ các hành vi tự chọn (có thể hoặc không),
các hành vi theo điều kiện nhất định
Bảng2.1: Các ký hiệu cơ bản của sơ đồ Use Case
2.1.5 Sơ đồ lớp
Khái niệm
Đối tượng (Object)
Mô hình hoá một vật hoặc một khái niệm trong thế giới thực
Một đối tượng có các đặc điểm như: Trạng thái (state), ứng xử(behavior), định danh (indentity)
Lớp (class)
Là tập hợp các đối tượng có chung các thuộc tính, các ứng xử vàngữ nghĩa
Là một khuôn mẫu để tạo ra đối tượng
Đối tượng là một thể hiện của một lớp
Gói ( package)
Là tập hợp các lớp hay các gói có liên quan với nhau
Sơ đồ lớp ( Class diagram)
Cung cấp một bức tranh mô tả một số hoặc tất cả các lớp trong môhình
Thể hiện cấu trúc và ứng xử của một hay nhiều lớp
Trang 16 Thể hiện mối quan hệ thừa kế giữa các lớp.
Trang 17 Lập mô hình tương tác đối tượng.
Hiện thực hoá Use Case
Lập mô hình các kịch bản sử dụng của Use Case
Khám phá tính logic của một phép toán, hàm hay thủ tục phức tạp
Trang 18 Các ký hiệu
Hình 2 4: Các ký hiệu sơ đồ tuần tự
2.2 Môi trường phát triển
2.2.1 Lịch sử về hệ điều hành Android
Android là hệ điều hành trên các thiết bị số di động như smartphone và tablet (vàhiện nay là cả trên một số đầu tư phát HD, HD Player) phát triển bởi Google và dựa trên nền tảng Linux Trước đây, Android được phát triển bởi công ty liên hợp Android.Vào năm 2005, Google đã mua lại Android nằm trong chiến lược tiến vào thị trường diđộng Google muốn Android trở thành nền tảng”mở” và miễn phí Do vậy hầu hết mã nguồn của Android được phát hành theo giấy phép mã nguồn mở Apache nên bất cứ aimuốn sử dụng Android có thể dowload toàn bộ mã nguồn Hơn nữa các nhà sản xuất phần cứng có thể thêm các thành phần mở rộng độc quyền của hãng để tạo ra các sản phẩm khác nhau Chính mô hình phát triển đơn giản này khiến Android trở nên hấp dẫn 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
Hiện tại có khoảng 250,000 ứng dụng cho Android OS và vào khoảng 375,000 ứngdụng đã được đệ trình, điều này khiến Android trở thành hệ điều hành di động có môi trường phát triển lớn thứ 2 Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành
Trang 19mềm và viễn thông nhằm mục đích tạo nên một chuẩn mở cho điện thoại di động trongtương lai Google công bố hầu hết các mã nguồn 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 mã Java và 1.75 triệu dòng mã C++.
Các nhà sản xuất liên tục cho ra những mẫu điện thoại cực kỳ tối tân, mạnh mẽ TuySymbian chỉ mới được biết đến từ cuối thập niên 90, nhưng tuổi đời phát triển chẳngthua kém vòng đời phát triển của hệ điều hành Windows đang sử dụng là bao Tháng6/1998, Symbian ra đời tại London (Anh), tiền thân của sản phẩm này là một phầnmềm của Psion Sau đó, lần lượt Nokia, Motorola, Ericsson đều mua cổ phần chung sởhữu sử dụng nền tảng này
a Windows Phone 7
Windows Phone 7 là một hệ điều hành di động được phát triển bởi Microsoft, và
là sự kế thừa để bởi nền tảng Windows Mobile Ra mắt tại châu Âu, Singapore và Úcvào ngày 21 Tháng Mười năm 2010, tại Mỹ và Canada vào ngày 08 Tháng Mười Mộtnăm 2010, với châu Á có thể trong năm 2011.Với Windows Phone 7, Microsoft cungcấp một Metro giao diện người dùng mới, tích hợp các hệ điều hành với các dịch vụkhác của Microsoft và kế hoạch kiểm soát chặt chẽ phần cứng mà chạy trên nền tảngnày
b IOS
IOS là hệ điều hành của Apple Ban đầu được cài trên điện thoại Iphone, sau đóphát triển và trở thành hệ điều hành trên ipod touch, ipad và Apple tv Apple không cóphép hệ điều hành này chạy trên phần cứng của bên thứ 3
c BlackBerry
Giống như Windows Mobile, những chiếc BlackBerry của RIM được chỉ định làthiết bị dành cho doanh nhân, nhưng gần đây đã có những thay đổi để hướng tới ngườidùng bình dân Nền tảng này tương đối trực quan và dễ sử dụng, cung cấp cho ngườidùng một server e-mail, hỗ trợ việc gửi và nhận tin nhắn nhanh
2.2.2.Tổng quan cấu trúc của Android
Nói một cách đơn giản thì Android bao gồm ba thành phần:
1.Một hệ điều hành mở, miễn phí cho các thiết bị di động
2.Một nền tảng mã nguồn mở cho phát triển các ứng dụng
3.Thiết bị chạy hệ điều hành Android và các ứng dụng Adroid
Android software development kit (SDK):
Bộ SDK của Android bao gồm mọi thứ cần thiết để có thể lập trình, debug, test ứng dụng Android
Trang 20Android API: Cốt lõi của bộ SDK là thư viện các hàm API và Google cũng chỉ sử
dụng bộ API này để xây dựng các ứng dụng có sẵn cho Android
Development tool: SDK bao gồm rất nhiều công cụ để giúp biên dịch, sửa lỗi và hỗ
trợ trong việc lập trình ứng dụng
Android Emulator: Trình giả lập thiết bị chạy Android thực sự với nhiều Skin thay
thế, cực kì tiện lợi cho việc test ứng dụng Android ngay trên máy tính mà không cần phải thông qua một thiết bị chạy Android thực
Tài liệu: SDK bao gồm một bộ tài liệu rất chi tiết, giải thích cặn kẽ chính xác những gì
bao gồm trong mỗi page, class cùng với cách sử dụng Ngoài tài liệu về “code”, còn cónhững tài liệu dùng để “getting started” và giải thích các nguyên tắc và cơ chế hoạt động của ứng dụng trong Android
Code mẫu: SDK bao gồm các ứng dụng mẫu đơn giản minh họa cho các tính năng nổi
bật trên android, cũng như các ứng dụng demo cách sử dụng các tính năng của bộ API
Kiến trúc ứng dụng:
Ý tưởng của Android là việc khuyến khích tái sử dụng lại các thành phần đã có,cho phép ứng dụng có thể chia sẻ Activity, Service, dữ liệu với các ứng dụng khác nhau trong giới hạn đặt ra
Sau đây là kiến trúc của mọi ứng dụng Android:
Activity Manager: Kiểm soát vòng đời của Activity.
View: Xây dựng giao diện người dùng cho Activity.
Notification Manager: Cung cấp một cơ chế thống nhất và an toàn để ứng dụng có thể
đưa ra các thông báo cho người dùng
Content Provider: Giúp trao đổi và chia sẽ dữ liệu giữa các ứng dụng với nhau.
Resource Manager: Hỗ trợ quản lý các tài nguyên không là code như các chuỗi, hình
ảnh, và âm thanh…
Các thư viện của Android:
Android cung cấp các gói API để phát triển ứng dụng Sau đây là các API mà tất cả các thiết bị Android đều tối thiểu phải hỗ trợ để giúp cho chúng ta một cái nhìn tổng quát về thư viện này
Android.util: Gói API lõi, chứa các class cấp thấp như container, string formatter, XML parsing
Android.os: Truy cập tới chức năng của hệ điều hành như gửi và nhận tin nhắn, giao tiếp nội bộ giữa các ứng dụng, thời gian…
Android.graphics: Cung cấp các lớp liên quan tới xử lý đồ họa ở mức thấp Hỗ trợ các hàm cơ bản như vẽ điểm, vẽ miền, tô màu, trên khung canvas
Android.text: Cung cấp các hàm phân tích và xử lý chuỗi
Trang 21Android.database: Cung cấp các lớp cấp thấp cần thiết để làm việc với database.
Android.content: Dùng để quản lý các tài nguyên, các nội dung và các gói
Android.view: Views là lớp cha của mọi lớp giao diện người dùng
Android.widget: Được thừa kế từ lớp View, bao gồm các lớp cơ bản để xây dựng giao diện widget như: list, button, layout
Android.map: Gói API cấp cao, dùng để truy cập tới các chức năng của GoogleMap.Android.app: Gói API cấp cao, bao gồm các Activity và Service – hai lớp cơ sở cho mọi ứng dụng Android
Android.telephony: Cung cấp khả năng tương tác trực tiếp với các chức năng cơ bản của một điện thoại như nghe, gọi, tin nhắn
Android.webkit: Cung cấp một webView control trên nền webkit để có thể nhúng ứng dụng, cùng với các API điều khiển cơ bản như stop, refresh, cookieManager…
2.2.3 Dalvik delving với máy ảo
Dalvik là máy ảo giúp các ứng dụng Java chạy được trên các thiết bị di động Android Chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex) Định dạng phù hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc độ xử lý Dalvik đã được thiết kế và viết bởi Dan Bornstein, người đã đặt tên sau khi đến thăm một ngôi làng đánh cá nhỏ có tên là Dalvík ở đảo Eyjafjörður, nơi mà tổ tiên của ông sinh sống
Từ góc nhìn của một nhà phát triển thì Dalvik trông giống như máy ảo java (Java Virtual Machine) nhưng thực tế thì hoàn toàn khác Khi nhà phát triển viết một ứng dụng dành cho android, sẽ thực hiện các đoạn mã trong môi trường Java Sau đó,
sẽ được biên dịch sang các byteCode của Java, tuy nhiên để thực thi được ứng dụng này trên Android thì nhà phát triển phải thực thi một công cụ có tên là dex Đây là công cụ dùng để chuyển đổi byteCode sang một dạng gọi là dex bytecode Dex là từ viết tắc của “Dalvik executable” đóng vai trò như cơ chế thực thi các ứng dụng Java.2.2.4 Các thành phần trong ứng dụng Android
Android project là một hệ thống thư mục file chứa toàn bộ source code, tài nguyên… mà mục đích cuối cùng là để đóng gói thành một file apk duy nhất
Trong một thư mục project, có một số thành phần (file, thư mục con) được tạo
ra mặc định, còn lại phần lớn sẽ được tạo ra sau nếu cần trong phát triển ứng dụng
Trang 22Hình 2 5: Các thành phần trong một Android project
Src/: Chứa toàn bộ source code (file java hoặc aidl)
Bin/: Thư mục chứa file Output sau khi build Đây là nơi có thể tìm thấy file apk
Gen/: Chứa file java tạo ra bởi ADT plug-in, như là file R.java hoặc các giao diện
tạo ra từ file AIDL
Res/: Chứa các tài nguyên (resource) cho ứng dụng chẳng hạn như file hình ảnh,
file layout, các chuỗi (string)…Dưới đây là các thư mục con của nó
- Anim/: Chứa các file xml dùng cho việc thiết lập các hiệu ứng động (animation).
- Color/: Chứa các file xml dùng định nghĩa màu sắc.
- Drawable/: Chứa hình ảnh (png, jpeg, gif), file xml định nghĩa cách vẽ các loại
hình dạng khác nhau (shape)
- Layout/: Chứa file xml dùng để xây dựng giao diện người dùng.
- Menu/: Chứa file xml quy định application menu.
- Raw/: Chứa các file media, chẳng hạn như mp3, ogg
Trang 23- Values/: Chứa file xml định nghĩa các giá trị Khác với các resource trong thư mục
khác, resource ở thư mục này khi định danh trong lớp R thì sẽ không sử dụng filename để định danh mà sẽ được định danh theo quy định bên trong file xml đó
- Xml/: Dùng chứa các file xml khác, chẳng hạn như file xml quy định app widget,
search metadata,…
Libs/: Chứa các thư viện riêng.
AndroidManifest.xml/: File kiểm soát các thành phần trong ứng dụng như: activity,
service, intent, receiver… tương tác với nhau, cách ứng dụng tương tác với ứng dụngkhác, cũng như đăng kí các quyền hạn về sử dụng tài nguyên trong máy
Build.properties/: Tùy chỉnh các thiết lập cho hệ thống build, nếu bạn sử dụng
Eclipse thì file này không cần thiết
Build.xml/: Chỉ sử dụng khi dùng dòng lệnh để kiến tạo project.
Default.properties/: File này chứa các thiết lập cho project, chẳng hạn như build
target, min SDK
2.3 Ngôn ngữ lập trình java
2.3.1 Giới thiệu
Hình 2 6: Logo Java Java là một ngôn ngữ lập trình dạng lập trình hướng đối tượng(OOP) Khác với
phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi chạy Bằng cách này, Java thường chạy chậm hơn những ngôn ngữ lập trình thông dịch khác như C++, PHP, 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
Trang 24hỏ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.
2.3.2 Đặc trưng ngôn ngữ 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 loại bỏ các đặc trưng phức tạp của
C và C++ như:
Loại bỏ thao tác con trỏ, thao tác định nghĩa chồng toán tử
Không cho phép đa kế thừa mà sử dụng các giao diện
Không sử dụng lệnh “goto” cũng như file header
Loại bỏ cấu trúc “struct” và “union”
Hướng đối tượng:
Java là ngôn ngữ lập trình thuần hướng đối tượng, mọi chương trình viết trên Java đều phải được xây dựng trên các đối tượng Nếu trong C/C++ ta có thể tạo các hàm (chương trình con không gắn với đối tượng nào) thì trong Java ta chỉ
có thể tạo ra các phương thức Trong Java không cho phép các đối tượng có tính năng kế thừa mà được thay thế bằng các giao diện
Độc lập với hệ nền
Mục tiêu chính của các nhà thiết kế java là độc lập với hệ nền hay còn gọi là độclậ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ộtmáy nhưng có thể chạy được bất kỳ đâu Các chương trình viết bằng java có thể chạytrên hầu hết các hệ nền mà không cần phải thay đổi gì, điều này đã được những ngườilập trình đặt cho nó một khẩu hiệu ‘viết một lần, chạy mọi nơi’, điều này là không thể
có với các ngôn ngữ lập trình khác Xây dựng ứng dụng quản lí sổ tiêm chủng của trẻem
Hỗ trợ lập trình đa tuyến
Đây là tính năng cho phép viết một chương trình có nhiều đoạn mã lệnh được chạysong song với nhau Với java ta có thể viết các chương trình có khả năng chạy songsong một cách dễ dàng, hơn thế nữa việc đồng bộ tài nguyên dùng chung trong Javacũng rất đơng giản Điều này là không thể có đối với một số ngôn ngữ lập trình khácnhư C/C++, pascal …