Tải bản đầy đủ (.pdf) (64 trang)

Xây dựng phần mềm học tiếng anh cho học sinh cấp 3 trên hệ điều hành android

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.59 MB, 64 trang )

LỜI CẢM ƠN
Trong phạm vi khả năng cho phép, em đã rất cố gắng để hoàn thành đề tài
một cách tốt nhất. Song, chắc chắn sẽ không tránh khỏi những thiếu sót. Em kính
mong nhận được sự thông cảm và đóng góp ý kiến của thầy cô và các bạn .
Em xin chân thành cảm ơn các thầy cô giáo trong Khoa Công Nghệ Thông
Tin, trường đại học Công nghệ thông tin và truyền thông – Thái Nguyên, đặc biệt là
cô giáo Đào Thị Thu đã tận tình giúp đỡ, góp ý giúp em hoàn thành đồ án.
Em xin chân thành cảm ơn!
Thái Nguyên, tháng 5 năm 2016
Sinh viên thực hiện

Nguyễn Thị Ngà

1


LỜI CAM ĐOAN
Tôi xin cam đoan đây là phần nghiên cứu và thể hiện đồ án tốt nghiệp của
tôi, không sao chép các đồ án khác, nếu sai tôi xin chịu hoàn toàn trách nhiệm và
chịu mọi kỷ luật của khoa và nhà trường đề ra.
Thái Nguyên, tháng 5 năm 2016
Sinh viên thực hiện

Nguyễn Thị Ngà

2


MỤC LỤC
LỜI CẢM ƠN .........................................................................................................1
LỜI CAM ĐOAN....................................................................................................2


MỤC LỤC ..............................................................................................................3
DANH MỤC HÌNH ẢNH .......................................................................................5
LỜI NÓI ĐẦU ........................................................................................................7
CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID VÀ LẬP TRÌNH
ANDROID ..............................................................................................................8
1.1 Tổng quan về android .....................................................................................8
1.1.1 Giới thiệu Android....................................................................................8
1.1.2 Kiến trúc của Android.............................................................................10
1.1.3 Chu kỳ ứng dụng của Android ...............................................................12
1.2.Lập trình Android cơ bản..............................................................................16
1.2.1 Tổng quan về Java ..................................................................................16
1.2.2 Những khái niệm và vấn đề cơ bản trong Android ..................................17
CHƯƠNG 2: KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG..................27
2.1 Khảo sát thực trạng.......................................................................................27
2.2 Ý tưởng và bài toán ......................................................................................30
2.3 Phân tích và thiết kế ứng dụng. .....................................................................31
2.3.1 Đặc tả hệ thống .......................................................................................31
2.3.2 Chức năng làm bài thi thử.......................................................................32
2.3.3 Chức năng Học ngữ pháp........................................................................35
2.3.4 Chức năng Học phát âm..........................................................................37
2.3.5 Chức năng Học từ vựng ..........................................................................39
2.3.6 Chức năng Xem tài liệu ..........................................................................41
2.3.7 Chức năng Xem thông tin .......................................................................42
2.3.8 Chức năng thoát......................................................................................44
2.3.9 Biểu đồ lớp .............................................................................................45
2.3.9Biểu đồ thành phần ..................................................................................48
2.3.11 Một số bảng cơ sở dữ liệu .....................................................................49

3



CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG HỌC TIẾNG ANH CHO HỌC SINH
CẤP 3....................................................................................................................50
3.1 Mô tả bài toán...............................................................................................50
3.2. Các bước cơ bản xây dựng chương trình......................................................50
3.2.1 Res/Layout .............................................................................................50
3.2.2 SRC ........................................................................................................52
3.3. Yêu cầu môi trường cài đặt. .........................................................................53
3.4. Thử nghiệm .................................................................................................54
KẾT LUẬN...........................................................................................................62
TÀI LIỆU THAM KHẢO .....................................................................................63
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN....................................................64

4


DANH MỤC HÌNH ẢNH
Hình 1.1 -Cấu trúc stack hệ thống Android............................................................10
Hình 1.2 Activity stack..........................................................................................13
Hình 1.3 – Các trạng thái chu kỳ sống ...................................................................14
Hình 1.4- Các sự kiện trong activity ......................................................................19
Hình 1.5- Service...................................................................................................20
Hình 2.1: Biểu đồ Use Case...................................................................................31
Hình 2.2: Biểu đồ tuần tự Thi thử ..........................................................................33
Hình 2.3: Biểu đồ tuần tự tính điểm.......................................................................34
Hình 2.4: Biểu đồ hoạt động Thi thử......................................................................35
Hình 2.5: Biểu đồ tuần tự Học ngữ pháp................................................................36
Hình 2.6: Biểu đồ hoạt động Học ngữ pháp ...........................................................37
Hình 2.7: Biểu đồ tuần tự Học phát âm..................................................................38
Hình 2.8: Biểu đồ hoạt động Học phát âm .............................................................39

Hình 2.9: Biểu đồ tuần tự Học từ vựng ..................................................................40
Hình 2.10: Biểu đồ hoạt động Học từ vựng............................................................41
Hình 2.11: Biểu đồ tuần tự Xem tài liệu. ...............................................................42
Hình 2.12: Biểu đồ hoạt động Xem tài liệu............................................................42
Hình 2.13: Biểu đồ tuần tự Xem thông tin. ............................................................43
Hình 2.14: Biểu đồ hoạt động Xem thông tin.........................................................44
Hình 2.15: Biểu đồ tuần tự thoát............................................................................45
Hình 2.16: Biểu đồ hoạt động thoát .......................................................................45
Hình 2.17: Biểu đồ lớp tổng quát...........................................................................46
Hình 2.18: Biểu đồ lớp thi thử ...............................................................................47
Hình 2.19: Biểu đồ lớp tài liệu...............................................................................47
Hình 2.20: Biểu đồ lớp phát âm .............................................................................47
Hình 2.21: Biểu đồ lớp từ vựng .............................................................................47
Hình 2.22: Biểu đồ lớp thông tin ...........................................................................48
Hình 2.23: Biểu đồ lớp ngữ pháp...........................................................................48
Hình 2.24: Biểu đồ lớp thoát..................................................................................48
Hình 2.25: Biểu đồ thành phần ..............................................................................48

5


Hình 3.1 Giao diện chính.......................................................................................54
Hình 3.2 Giao diện thi thử .....................................................................................55
Hình 3.3 Giao diện ngữ pháp.................................................................................56
Hình 3.4 Giao diện tài liệu.....................................................................................57
Hình 3.5 Giao diện phát âm ...................................................................................58
Hình 3.6 Giao diện từ vựng ...................................................................................59
Hình 3.7 Giao diện chủ đề động vật.......................................................................60
Hình 3.8 Giao diện thông tin .................................................................................61


6


LỜI NÓI ĐẦU
Hiện nay, Tiếng Anh được coi là ngôn ngữ quốc tế số một trên thế giới. Hàng
triệu người từ các nền văn hóa khác nhau đều nỗ lực học Tiếng Anh mỗi ngày.
Ở Việt Nam, Tiếng Anh cũng đã chiếm được vị trí quan trọng kể từ khi đất
nước bắt đầu thực hiện chính sách mở cửa hội nhập ra khu vực và thế giới. Ở nhiều
lĩnh vực khác nhau trong xã hội như kinh tế, chính trị, khoa học, du lịch,... đều rất
cần những người có trình độ Tiếng Anh giỏi. Bởi thế, nhu cầu học ngoại ngữ ngày
càng gia tăng trên khắp cả nước.
Nhằm giúp các em hứng thú hơn trong việc học tập tiếng anh nên em đã quyết
định xây dựng ứng dụng học tiếng anh trên điện thoại di động, nền tảng android,
phần mềm ứng dụng cụ thể đối với đối tượng học sinh cấp 3.
Trong thời gian hơn 2 tháng, cùng với sự nỗ lực của bản thân và sự giúp đỡ
tận tình của thầy cô, bạn bè ứng dụng của em đã hoàn thành..
Mục tiêu nghiên cứu: Tổng hợp, vận dụng các kiến thức đã học, tìm hiểu để
khảo sát, phân tích, thiết kế và xây dựng ứng dụng học tiếng anh cho học sinh cấp 3
Công việc cần giải quyết:


Tìm hiểu và khảo sát thực tế để thu thập thông tin, tài liệu… lấy cơ sở để

thiết kế phần mềm.


Dựa vào các kiến thức chuyên ngành để xây dựng phần mềm đảm bảo đủ

các yêu cầu đặt ra.
Nội dung chính của đề tài bao gồm:



Chương 1: Tổng quan hệ điều hành Android và lập trình Android.



Chương 2: Khảo sát và phân tích thiết kế hệ thống



Chương 3:Xây dựng chương trình

7


CHƯƠNG 1:
TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID VÀ LẬP TRÌNH ANDROID
1.1 Tổng quan về android
1.1.1 Giới thiệu Android
1.1.1.1 Sơ lược về Android
Android là một hệ điều hành di động dựa trên một phiên bản sửa đổi của
linux. Được phát triển vào năm 2005 với một dự án cùng tên “Android”. Như một
phần chiến lược của mình để lấn sâu vào lĩnh vực di động Google Android đã mua
về toàn bộ quá trình phát triển cũng như đội phát triển nó.
Google Android muốn mở và miễn phí, vì vậy hầu hết các mã android được
được đưa ra dưới dạng mã nguồn mở Apache License, điều này có nghĩa là bất cứ ai
muốn sử dụng android đều có thể phát triển bằng cách tải về mã nguồn android đầy
đủ. Hơn nữa các nhà cung cấp (thường là những nhà phát triển phần cứng) có thể
thêm phần mở rộng và tùy biến cho android để phân biệt sản phẩm của họ với sản
phẩm của những người khác. Điều này đơn giản là làm cho mô hình phát triển

android rất hấp dẫn và do đó khơi dậy sự quan tâm của nhiều nhà cung cấp.
Ưu điểm chính của việc áp dụng android là nó cung cấp một cách tiếp cận
thống nhất để phát triển ứng dụng. Các nhà phát triển chỉ cần phát triển cho android
và các ứng dụng của họ có thể chạy trên nhiều thiết bị khác nhau, miễn là các thiết
bị được hỗ trợ bằng cách sử dụng android. Trong thế giới smartphone ứng dụng là
một phần quan trọng nhất của chuỗi thành công. Do đó các nhà sản xuất thiết bị coi
android như là hy vọng tốt nhất để thách thức sự tấn công của Iphone.
1.1.1.2 Android SDK
Một công cụ không thể thiếu đó là Android Software Development Kit, được
viết tắt là SDK. Đây là một công cụ phát triển phần mềm mà cụ thể phát triển ứng
dụng cho Android OS, được Google xây dựng đi kèm với hệ điều hành Android.
Vào tháng 10 năm 2008, cùng với việc công khai mã nguồn của Android OS,
Google cũng giới thiệu và hướng dẫn cụ thể về SDK cho toàn bộ các nhà phát triển
trên toàn thế giới với mục đích khuyến khích và hỗ trợ họ cùng tham gia phát triển
các ứng dụng trên Android. Để download Android SDK bạn có thể truy cập địa chỉ

8


sau: , tại đây Google cũng đưa ra nhiều mã nguồn mẫu
và những project có sẵn để người dùng có thể nghiên cứu dễ dàng hơn.
Tương ứng với mỗi phiên bản của hệ điều hành Android thì cũng có một
phiên bản SDK đi kèm.
Hiện nay thì đã có thêm các phiên bản cao 4.3, 4.4
Phiên bản

Thời gian

Tên gọi


Cấp API

1.6

09/2008

Donut

4

2.0-2.1

10/2009

Eclair

7

2.2

05/2010

Froyo

8

2.3-2.3.2

12/2010


Gingerbread

9

2.3.3-2.3.7

02/2011

Gingerbread

10

3.1

05/2011

Honeycomb

12

3.1

7/2011

Honeycomb

13

4.0


12/2011

Ice cream sandwich

15

4.1

07/2012

Jelly bean

16

4.2

11/2012

Jelly bean

17

4.3

7/2013

Jelly bean

18


4.4

10/2013

Kitkat

19

5.0

10/2014

Lollipop

20

Bảng 1.1- Lịch sử các bản SDK

9


1.1.2 Kiến trúc của Android
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành
Android. Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây.

Hình 1.1 -Cấu trúc stack hệ thống Android
1.1.2.1 Applications (tầng ứng dụng)
Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như: contacts,
browser, camera, Phone,… Tất cả các ứng dụng chạy trên hệ điều hành Android đều
được viết bằng Java.

1.1.2.2 Application framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các
nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo. Nhà
phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập,
các dịch vụ chạy nền, thiết lập hệ thống báo động, thêm các thông báo để các thanh
trạng thái, và nhiều, nhiều hơn nữa.
Nhà phát triển có thể truy cập vào các API cùng một khuôn khổ được sử
dụng bởi các ứng dụng lõi. Các kiến trúc ứng dụng được thiết kế để đơn giản hóa
việc sử dụng lại các thành phần; bất kỳ ứng dụng có thể xuất bản khả năng của mình
và ứng dụng nào khác sau đó có thể sử dụng những khả năng (có thể hạn chế bảo
mật được thực thi bởi khuôn khổ). Cơ chế này cho phép các thành phần tương tự sẽ
được thay thế bởi người sử dụng.
Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao gồm:

10


Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để thiết
kế phần giao diện ứng dụng như: gridview, tableview, linearlayout,…
Một “Content Provider” cho phép các ứng dụng có thể truy xuất dữ liệu từ
các ứng dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa các ứng
dụng đó.
Một “Resource Manager” cung cấp truy xuất tới các tài nguyên không phải
là mã nguồn, chẳng hạn như: localized strings, graphics, and layout files.
Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị các
custom alerts trong status bar.
Activity Maanager được dùng để quản lý chu trình sống của ứng dụng và
điều hướng các activity.
1.1.2.3 Library
Android bao gồm một tập hợp các thư viên C/C++ được sử dụng bởi nhiều

thành phần khác nhau trong hệ thống Android. Điều này được thể hiện thông qua
nền tảng ứng dụng Android. Một số các thư viện cơ bản được liệt kê dưới đây:
System C library: a BSD-derived triển khai các thư viện hệ thống ngôn ngữ
C chuẩn, được nhúng vào các thiết bị dựa trên hệ điều hành Linux.
Media Libraries – Dựa trên PacketVideo's OpenCORE; thư viện này hỗ trợ
cho việc chơi nhạc, quay phim, chụp hình theo các định dạng file MPEG4, H.264,
MP3, AAC, AMR, JPG, và PNG.
Surface Manager – Quản lý truy cập đến các hệ thống con hiển thị cũng
như các lớp đồ họa 2D, 3D từ tầng ứng dụng.
LibWebCore – Thư viện được dùng để tạo nên thành phần webview trong
Android và có thể nhúng được vào nhiều ứng dụng.
SGL – Thư viện hỗ trợ đồ hoạ 2D.
3D libraries – Thư viện đồ họa 3D.
FreeType - bitmap and vector font rendering.
SQLite – Một cơ sở dữ liệu nhỏ được dùng cho các thiết bị cầm tay có bộ
nhớ hạn chế. SQLite không có quan hệ như các cơ sở dữ liệu khác.

11


1.1.2.4 Android Runtime (môi trường thực thi)
Android bao gồm một tập hợp các thư viện cơ bản cung cấp hầu hết các
chức năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java. Tất cả các ứng
dụng Android đều chạy trong tiến trình riêng. Máy ảo Dalvik đã được viết để cho
một thiết bị có thể chạy nhiều máy ảo hiệu quả. Các VM Dalvik thực thi các tập tin
thực thi Dalvik (dex). Định dạng được tối ưu hóa cho bộ nhớ tối thiểu. VM là dựa
trên register-based, và chạy các lớp đã được biên dịch bởi một trình biên dịch Java
để chuyển đổi thành các định dạng dex. Các VM Dalvik dựa vào nhân Linux cho
các chức năng cơ bản như luồng và quản lý bộ nhớ thấp.
1.1.2.5 Linux kernel (nhân Linux)

Android dựa trên Linux phiên bản 2.6 cho hệ thống dịch vụ cốt lõi như bảo
mật quản lý bộ nhớ, quản lý tiến trình, các tầng network, và các mô hình điều khiển.
Kernel Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và phần còn lại
của phần mềm stack.
1.1.3 Chu kỳ ứng dụng của Android
Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra cho ứng
dụng khi mã lệnh cần được thực thi và sẽ còn chạy cho đến khi:
Nó không phụ thuộc.
Hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác
Một sự khác thường và đặc tính cơ bản của Android là thời gian sống của tiến trình
ứng dụng không được điều khiển trực tiếp bới chính nó. Thay vào đó, nó được xác
định bởi hệ thống qua một kết hợp của:
Những phần của ứng dụng mà hệ thống biết đang chạy
Những phần quan trọng như thế nào đối với người dùng
Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống.
1.1.3.1 Chu kỳ sống thành phần
Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúc
bắt đầu khởi tạo và đến thời điểm kết thúc. Giữa đó, đôi lúc chúng có thể là active(
trạng thái hoạt động) hoặc inactive (không hoạt động), hoặc là trong trường hợp
Activies nó có thể visible (ẩn) hoặc invisible (hiển thị).

12


Start

Chu kỳ sống một ứng dụng Android
Activity/Inactivity
Visiable/Invisible


End

1.1.3.2 Activity Stack
Bên trong hệ thống các activity được quản lý như một activity stack. Khi một
Activity mới được bắt đầu, nó được đặt ở đỉnh của stack và trở thành activity đang
chạy activity trước sẽ ở bên dưới activity mới và sẽ không thấy trong suốt quá trình
activity mới tồn tại.
Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyển lên
và trở thành active.

Hình 1.2 Activity stack

13


1.1.3.3 Các trạng thái của chu kỳ sống

Hình 1.3 – Các trạng thái chu kỳ sống
Một Activity chủ yếu có 3 chu kỳ chính sau:
Active hoặc running: Khi Activity là được chạy trên màn hình. Activity này tập
trung vào những thao tác của người dùng trên ứng dụng.
Paused: Activity là được tạm dừng (paused) khi mất tiêu điểm (focus) nhưng người
dùng vẫn trông thấy. Có nghĩa là một Activity mới ở trên nó nhưng không bao phủ
đầy màn hình. Một Activity tạm dừng là còn sống nhưng có thể bị kết thúc bởi hệ
thống trong trường hợp thiếu vùng nhớ.
Stopped: Nếu nó hoàn toàn bao phủ bởi Activity khác. Nó vẫn còn trạng thái và
thông tin thành viên trong nó. Người dùng không thấy nó và thường bị loại bỏ trong
trường hợp hệ thống cần vùng nhớ cho tác vụ khác.
1.1.3.4 Chu kỳ sống của ứng dụng
Trong một ứng dụng Android có chứa nhiều thành phần và mỗi thành phần

đều có một chu trình sống riêng. Và ứng dụng chỉ được gọi là kết thúc khi tất cả các
thành phần trong ứng dụng kết thúc. Activity là một thành phần cho phép người
dùng giao tiếp với ứng dụng. Tuy nhiên, khi tất cả các Activity kết thúc và người
dùng không còn giao tiếp được với ứng dụng nữa nhưng không có nghĩa là ứng
dụng đã kết thúc. Bởi vì ngoài Activity là thành phần có khả năng tương tác người
14


dùng thì còn có các thành phần không có khả năng tương tác với người dùng như là
Service, Broadcast receiver. Có nghĩa là những thành phần không tương tác người
dùng có thể chạy background dưới sự giám sát của hệ điều hành cho đến khi người
dùng tự tắt chúng.
1.1.3.5 Các sự kiện trong chu kỳ sống của ứng dụng
Nếu một Activity được tạm dừng hoặc dừng hẳn, hệ thống có thể bỏ thông
tin khác của nó từ vùng nhớ bởi việc finish() (gọi hàm finish() của nó), hoặc đơn
giản giết tiến trình của nó. Khi nó được hiển thị lần nữa với người dùng, nó phải
được hoàn toàn restart và phục hồi lại trạng thái trước. Khi một Activity chuyển qua
chuyển lại giữa các trạng thái, nó phải báo việc chuyển của nó bằng việc gọi hàm
transition.
1.void onCreate(Bundle savedInstanceState)

5. void onPause()

2. void onStart()

6. void onStop()

3. void onRestart()

7. void onDestroy()


4. void onResume()
Bảng các sự kiện trong chu kỳ sống của ứng dụng Android
Tất cả các phương thức là những móc nối mà bạn có thể override để làm tương
thich công việc trong ứng dụng khi thay đổi trạng thái. Tất cả các Activity bắt buộc
phải có onCreate() để khởi tạo ứng dụng.

Nhiều Activity sẽ cũng hiện thực

onPause() để xác nhận việc thay đổi dữ liệu và mặt khác chuẩn bị dừng hoạt động
với người dùng.
1.1.3.6 Thời gian sống của ứng dụng
Bảy phương thức chuyển tiếp định nghĩa trong chu kỳ sống của một Activity.
Thời gian sống của một Activity diễn ra giữa lần đầu tiên gọi onCreate() đến trạng
thái cuối cùng gọi onDestroy(). Một Activity khởi tạo toàn bộ trạng thái toàn cục
trong onCreate(), và giải phóng các tài nguyên đang tồn tại trong onDestroy().
1.1.3.7 Thời gian hiển thị của Activity
Thời gian hiển thị của một activity diễn ra giữa lần gọi một onStart() cho đến
khi gọi onStop(). Trong suốt khoảng thời gian này người dùng có thể thấy activity
trên màn hình và có thể tương tác với ứng dụng.

15


1.2.Lập trình Android cơ bản
1.2.1 Tổng quan về Java
Lập trình hướng đối tượng là cốt lõi của Java. Trên thực tế tất cả các chương
trình viết bằn Java đều là hướng đối tượng chứ ko phải là một tùy chọn như trong
C++
2.2.1.1 Hai mô hình lập trình

Tất cả các chương trình máy tính đều bao gồm thành phần: mã lệnh và dữ
liệu. Một là chương trình được viết theo hướng quan tâm đến mã lệnh, nghĩa là
quan tâm đến: “Cái gì đang xảy ra”, và các chương trình khác có thể được viết theo
hướng quan tâm đến dữ liệu, nghĩa là quan tâm đến “ Cái gì đang tác động đến”.
Hai mô hình này ảnh hưởng đến cách xây dựng chương trình. Cách đầu tiên gọi là
mô hình hướng thủ tục. Theo cách tiếp cận này một chương trình được xem như là
một dãy là bước tuần tự. Các ngôn ngữ lập trình cấu trúc như C sử dụng mô hình
này. Tuy nhiên, vấn đề đối với cách tiếp cận này là kích thước lớn và tính phức tạp
của chương trình. Cách tiếp cận thứ hai được gọi là lập trình hướng đối tượng. Lập
trình hướng đối tượng tổ chức một chương trình theo xoay quanh dữ liệu của nó và
một tập các giao tiếp được định nghĩa tác động đến dữ liệu đó.
2.2.1.2 Sự trừu tượng hóa
Một thành phần cơ bản của lập trình hướng đối tượng là sự trừu tượng hóa.
Con người quản lý tính phức tạp thông qua sự trừu tượng hóa. Ví dụ, ta không nghĩ
về chiếc xe hơi như một tập bao gồm hàng ngàn chi tiết riêng biệt. Ta xem nó là
một đối tượng cụ thể với các đặc điểm riêng của nó. Sự trừu tượng hóa này cho
phép ta sử dụng chiếc xe hơi mà không bị rối rắm bởi sự phức tạp của các thành
phần tạo nên chiếc xe.
Một cách hữu hiệu để quản lý sự trừu tượng hóa là sử dụng sự phân lớp. Điều này
cho phép ta phân tầng sự phức tạp của hệ thống, chia nhỏ thành các phần có thể
quản lý được. Ví dụ, xe hơi được xem là một đối tượng. Chi tiết hơn, xe hơi bao
gồm nhiều hệ thống con như: tay lái, ghế ngồi, dàn âm thanh. Giàn âm thanh bao
gồm máy nghe CD, băng đĩa …

16


2.2.1.3 Ba yếu tố cơ bản của lập trình hướng đối tượng
a) Tính đóng gói
Đây là cơ chế kết hợp giữa mã lệnh với dữ liệu mà nó xử lý, và tránh bị ảnh

hưởng bởi sự can thiệp từ bên ngoài. Tính đóng gói được xem như là một lớp vỏ bọc
bảo vệ mã lệnh và dữ liệu tránh khỏi sự truy cập tùy tiện từ các mã lệnh khác. Việc truy
cập được điều khiển một cách chặt chẽ thông các các thủ tục đã được định nghĩa.
b) Tính kế thừa
Tính kế thừa là quá trình mà một đối tượng nhận được các tính chất từ một
đối tượng khác. Thông thường, mỗi đối tượng cần được định nghĩa tất cả các tính
chất của nó. Tuy nhiên, bằng cách sử dụng sự kế thừa, mỗi đối tượng chỉ cần được
định nghĩa các tính chất riêng biệt của nó, các tính chất chung được định nghĩa ở
trong đối tượng mà nó kế thừa.
c) Tính đa hình
Đây là đặc điểm cho phép một hình thức giao tiếp có thể được sử dụng cho
nhiều hành động có tính chất giống nhau. Việc thực thi hành động cụ thể nào đó tùy
thuộc vào tình huống xảy ra. Điều này làm giảm tính phức tạp của chương trình.
 Kết hợp tính đóng gói, tính kế thừa và tính đa hình
Sự kết hợp các yếu tố này tạo ra một môi trường lập trình tốt hơn so với mô
hình lập trình hướng thủ tục. Tính kế thừa giúp cho việc sử dụng lại mã lệnh đã
được cài đặt và kiểm tra trước đó. Tính đóng gói cho phép bạn thay đổi sự cài đặt
mà không phải quan tâm nhiều đến mã lệnh, bạn chỉ cần quan tâm đến sự giao tiếp
với các lớp đã có. Tính đa hình cho phép bạn viết các chương trình rõ ràng, hợp lý,
và linh hoạt.
1.2.2 Những khái niệm và vấn đề cơ bản trong Android
1.2.2.1 Activity
Một activity thể hiện một giao diện đồ họa người dùng. Ví dụ một activity có
thể biểu diễn một danh sách các menu item để người dùng có thể chọn và có thể hiển
thị ảnh cùng với tiêu đề. Một ứng dụng gửi tin nhắn văn bản có thể có một hoạt động là
hiển thị một danh sách các liên hệ để gửi tin nhắn tới, hoạt động thứ hai là viết tin nhắn
tới liên hệ được chọn, các hoạt động khác nữa là xem lại tin nhắn cũ hay thay đổi cài

17



đặt. Mặc dù chúng làm việc cùng nhau để tạo thành một giao diện người dùng, mỗi
activity độc lập với những cái khác. Mỗi activity là một lớp con của lớp cơ sở Activity.
Một ứng dụng có thể gồm chỉ một activity hay nhiều activity. Thông thường,
một trong số các activity được đánh dấu như là activity đầu tiên phải được trình
diễn tới người dùng khi ứng dụng được khởi động. Chuyển từ một activity sang
activity khác được hoàn thành bằng cách cho activity hiện thời khởi động activity
kế tiếp.
Mỗi activity được đưa ra một cửa sổ mặc định để vẽ vào. Thông thường, cửa
sổ sẽ lấp đầy màn hình, nhưng nó có thể nhỏ hơn màn hình và nằm trên các cửa sổ
khác. Một activity có thể sử dụng cửa sổ bổ sung - ví dụ như một pop-up dialog gọi
cho một đáp ứng người dùng ở giữa của activity, hay một cửa sổ biểu diễn những
cho người dùng với thông tin quan trọng khi họ chọn một item cụ thể trên màn hình.
Nội dung trực quan của cửa sổ được cung cấp bởi một cây phân cấp các đối
tượng view dẫn xuất từ lớp View. Mỗi view điều khiển một khoảng hình chữ nhật
cụ thể bên trong cửa sổ. View cha chứa và tổ chức bố cục các view con. Các view lá
vẽ trong hình chữ nhật mà chúng điều khiển và đáp ứng lại các hành động người
dùng trực tiếp ở khoảng trống này. Do đó, các view là nơi mà các tương tác của
activity với người dùng diễn ra. Ví dụ một view có thể hiển thị một hình ảnh nhỏ và
khởi tạo một hoạt động khi người dùng nhấn vào hình ảnh đó. Android có một số
view đã xây dựng sẵn mà bạn có thể sử dụng – gồm có các buttons, text fields,
scroll bars, menu items, check boxes …
Một cây phân cấp view được đặt trong một cửa sổ của activity bằng phương
thức Activity.setContentView(). Content view là đối tượng View ở gốc của cây
phân cấp.
Class cơ sở Activity định nghĩa một loạt các sự kiện mà điều chỉnh vòng đời
của một hoạt động. Class Activity định nghĩa các sự kiện sau đây
 onCreate(): Được gọi khi hoạt động được tạo ra lần đầu tiên
 onStart(): Được gọi khi hoạt động trở nên hữu hình so với người dùng
 onResume(): Được gọi khi hoạt động bắt đầu tương tác với người sử dụng

 onPause(): Được gọi để dừng các hoạt động hiện tại và nối lại các hoạt động
trước đó

18


 onStop(): Được gọi khi hoạt động không còn hiển thị với người dùng
 onDestroy(): Được gọi trước khi hoạt động bị phá hủy bởi hệ thống (bằng tay
hoặc bằng hệ thống để bảo tồn bộ nhớ)
 onRestart(): Được gọi khi hệ thống đã được dừng lại và khởi động lại một lần
nữa

Hình 1.4- Các sự kiện trong activity
1.2.2.2 Service
Một service không có giao diện trực quan, nó chạy trên nền trong một
khoảng thời gian không xác định. Ví dụ một service có thể chơi nhạc nền, hay nó
nạp dữ liệu trên mạng hay tính toán cái gì đó và cung cấp kết quả cho activity cần
đến nó. Mỗi service mở rộng từ lớp cơ sở Service.
Một ví dụ cổ điển là media player chơi các bài hát từ một danh sách. Ứng
dụng player có thể có một hay hai activity cho phép người dùng chọn bài hát và bắt

19


đầu chơi. Tuy nhiên, music playback không tự nó được xử lý bởi một activity bởi vì
người dùng sẽ mong muốn chơi tiếp nhạc khi họ rời khỏi player và làm cái gì đó
khác. Để tiếp tục chơi nhạc, media player activity có thể khởi động một service
chạy trên nền. Hệ thống sẽ giữ cho music playback service chạy thậm chí khi
activity khởi động nó rời khỏi màn hình.
Trong khi kết nối, bạn có thể giao tiếp với dịch vụ thông qua giao diện mà

service đó trưng ra. Ví dụ như trong music service, giao diện này có thể cho phép
người dùng pause, rewind, stop và restart lại playback.
Giống như các activity và các thành phần khác khác, service chạy trong
thread chính của tiến trình ứng dụng. Vì thế chúng không thể chặn những thành
phần khác hay giao diện người dùng, chúng thường tạo ra các thead khác cho các
nhiệm vụ hao tốn thời gian.

Hình 1.5- Service
1.2.2.3 Broadcast Receive
Một Broadcast Rreceiver là một thành phần không làm gì ngoài việc nhận
và đáp lại các thông báo broadcast. Nhiều broadcast khởi đầu trong mã hệ thống
- ví dụ như thông báo múi giờ thay đổi, pin yếu, ảnh đã được chụp, hay người

20


dùng đã thay đổi ngôn ngữ … Các ứng dụng có thể tạo ra các broadcast, chẳng
hạn để ứng dụng khác biết được một số dữ liệu đã được tải về thiết bị và sẵn
sàng cho việc sử dụng chúng. Một ứng dụng có thể có một số Broadcast
Receiver để đáp lại bất cứ thông báo nào mà nó cho là quan trọng. Tất cả các
receiver mở rộng từ lớp cơ sở BroadcastReceiver...
1.2.2.4 Content provider
Một content provider tạo ra một tập cụ thể các dữ liệu của ứng dụng khả
dụng cho các ứng dụng khác. Dữ liệu có thể được lưu trữ trong hệ thống file,
trong một cơ sở dữ liệu SQLite, hay trong một cách khác nào đó. Content
provider mở rộng lớp cơ sở ContentProvider để cài đặt một tập các chuẩn các
phương thức cho phép các ứng dụng khác đạt được và lưu trữ dữ liệu của kiểu
mà nó điều khiển. Tuy nhiên, các ứng dụng không gọi trực tiếp các phương thức
này, chúng sử dụng một đối tượng ContentResolver và gọi các phương thức của
nó. Một ContentResolver có thể nói chuyện với bất cứ content provider nào,

chúng cộng tác với provider để quản lý giao tiếp liên tiến trình.
1.2.2.5 Manifest File
Trước khi Android có thể khởi động một thành phần ứng dụng, nó phải
biết rằng thành phần đó tồn tại. Vì vậy, ứng dụng khai báo những thành phần của
mình trong một manifest file được gắn vào Android package, file .apk này cũng
giữ chứa mã của ứng dụng và các tài nguyên.
Manifest file là một file XML có cấu trúc và thường được đặt tên là
AndroidManifest.xml cho mọi ứng dụng. Nó thực hiện một số bổ sung để khai
báo các thành phần của ứng dụng, như là nêu tên các thư viện ứng dụng cần đến,
và xác định các quyền hạn của ứng dụng muốn được cấp.
Ví dụ như nó khai báo các Activity trong chương trình của chúng ta, khi khởi
động chương trình thì Activity nào sẽ được thực hiện đầu tiên, các quyền truy cập
Internet, SDCard, hay các vấn đề về gửi nhận tin nhắn, cuộc gọi...
1.2.2.6 Giao diện người dùng trong Android
Trong một ứng dụng Android, giao diện người dùng được xây dựng bằng
cách sử dụng View và ViewGroup đối tượng. Có nhiều loại quan điểm và các

21


nhóm view, mỗi một trong số đó là hậu duệ của lớp View. View objects là các
đơn vị cơ bản của biểu hiện giao diện người dùng trên nền tảng Android. Các
class xem như là cơ sở phục vụ cho class con được gọi là "widget", trong đó
cung cấp đầy đủ các đối tượng thực hiện giao diện, giống như các lĩnh vực văn
bản và nút. Class ViewGroup phục vụ như là cơ sở cho lớp con được gọi là "
layouts", cung cấp các loại khác nhau của kiến trúc bố trí, như linear, tabular và
relative. .
1.2.2.7 Các thành phần giao diện
ViewGroup
Viewgroup thực ra chính là view hay nói chính xác Viewgroup chính là các

widget Layout được dùng để bố trí các đối tượng khác trong một screen.
Bao gồm các loại chính như sau:
 Linear Layout
LinearLayout được dùng để bố trí các thành phần giao diện theo chiều ngang
hoặc chiều dọc nhưng trên một line duy nhất mà không có xuống dòng.
LinearLayout làm cho các thành phần trong nó không bị phụ thuộc và kích
thước của màn hình. Các thành phần trong LinearLayout được dàn theo những tỷ lệ
cân xứng dựa vào các ràng buộc giữa các thành phần.
LinearLayout được trình bày theo 2 cách: Horizontal - nằm ngang hoặc
Vertical - thẳng đứng.
 RetaliveLayout
Layout này cho phép bố trí các widget theo một trục đối xứng ngang hay
dọc. Để đặt được đúng vị trí thì các widget cần được xác định một mối ràng buộc
nào đó với các widget khác. Các ràng buộc này là các ràng buộc trái, phải, trên,
dưới so với một widget hoặc so với layout parent.
 TableLayout
Layout này được sử dụng khi cần thiết kế một table chứa dữ liệu cần bố trí
các widget theo các dòng và cột.

22


 GridView
Khi muốn hiển thị dữ liệu của mình theo một dạng lưới nào đó thì android
cung cấp 1 control đó là GridView. GridView trong android dữ liệu được đưa vào
thông qua các mảng 1 chiều và dựa vào số cột của GridView để ngắt số hàng và cột.
Các control cơ bản
 Button
Button là đối tượng có thể nói là được dùng nhiều nhất trong hầu hết các ứng
dụng Android.

 EditText
Là đối tượng ta có thể nhập nội dung cho nó.Có nhiều dạng EditText khác
nhau như: Plain text, Person Name, Password, Email, Phone, ….
 TextView
TextView có tác dụng là để hiển thị văn bản.
Trong đoạn mã trên, android:text="" dùng để ghi đoạn text muốn thể hiện,
Android:textColor ="" để định dạng màu chữ, Android:textSize ="" kích cỡ chữ,
Android:gravity="" dùng để căn chỉnh cho đoạn text.
 RadioButton
Radiobutton là một control cho phép ta lựa chọn duy nhất một đối tượng
trong cùng một group.
1.2.2.9 Bắt sự kiện trong Android
Một khi bạn đã thêm một số Views/widgets đến giao diện, có thể bạn muốn
biết về sự tương tác của người dùng với họ, vì vậy bạn có thể thực hiện hành động.
Để được thông báo về UI events người dùng, bạn cần phải làm một trong hai điều:
Xác định một sự kiện nghe và đăng ký nó với các View. Khác thường hơn không,
đây là cách bạn sẽ lắng nghe cho các sự kiện. Các class View có chứa một tập hợp
các giao diện lồng nhau đặt tên On<something>Listener, đều có một phương pháp
gọi lại được gọi là On<something>() .
Ví dụ: View.OnClickListener (để xử lý "nhấp chuột" trên một View),
View.OnTouchListener ( để xử lý các sự kiện màn hình cảm ứng trong một View),

23


và View.OnKeyListener (để xử lý thiết bị ép quan trọng trong một View). Vì vậy
nếu bạn muốn View của bạn được thông báo khi nó là " clicked" (chẳng hạn như
khi một nút được chọn), thực hiện và xác định OnClickListener của nó gọi method
onClick() (nơi bạn thực hiện các hành động sau khi nhấp chuột), và đăng ký nó vào
xem với setOnClickListener()

1.2.2.10 Menu
Menu đơn có một phần quan trọng của giao diện người dùng trong một ứng
dụng. Menus cung cấp một giao diện đáng tin cậy cho thấy rằng các chức năng ứng
dụng và cài đặt. Trong trình đơn ứng dụng phổ biến nhất là tiết lộ bằng cách bấm
phím MENU trên thiết bị. Tuy nhiên, bạn cũng có thể thêm Context Menus, có thể
hiển thị khi người sử dụng máy nhấn và nắm giữ phím trên một mục. Thực đơn
cũng được hệ thống phân cấp cấu trúc bằng cách sử dụng một xem, nhưng bạn
không xác định cấu trúc này cho mình.
1.2.2.11 Adapter
Thỉnh thoảng bạn sẽ muốn populate một view group với một số thông tin mà
không thể hard-coded được, thay vào đó, bạn muốn bind để xem một nguồn dữ liệu
bên ngoài. Để làm điều này, bạn sử dụng một AdapterView xem như là view group
của bạn và View con được khởi tạo và populated với dữ liệu từ Adapter. Các đối
tượng AdapterView là một implementation của ViewGroup xác định những view
con của nó dựa trên một đối tượng Adapter nhất định. Adapter các hành vi như là
chuyển phát nhanh giữa các nguồn dữ liệu của bạn (có lẽ là một mảng của chuỗi
bên ngoài) và AdapterView, hiển thị nó trong đó. Có một số hiện thực của class
Adapter, cho nhiệm vụ cụ thể, chẳng hạn như CursorAdapter việc đọc dữ liệu cơ sở
dữ liệu từ một Cursor, hoặc một ArrayAdapter đọc từ một mảng tùy ý. Để tìm hiểu
thêm về cách sử dụng một adapter cho populate views của bạn, hãy đọc đóng vào
dữ liệu với AdapterView.
1.2.2.12 SQLite
Trong android thì hệ cơ sở dữ liệu được sử dụng là SQLite Database, đây là
hệ thống mã nguồn mở được sử dụng rộng rãi trong các ứng dụng (Mozilla, Firefox

24


sử dụng SQLite để lưu trữ các dữ liệu về cấu hình, iPhone cũng sử dụng cơ sở dữ
liệu là SQLite).

Trong Android, cơ sở dữ liệu mà chúng ta tạo cho một ứng dụng thì chỉ ứng
dụng đó có quyền truy cập và sử dụng cơ sở dữ liệu đó, các ứng dụng khác thì
không.
Trong các ứng dụng thực tế, phải chú ý đến việc chia sẻ dữ liệu. Ví dụ như
người dùng này không thể truy cập xem dữ liệu người khác được.
Chú ý: phải gắn cờ khi muốn đăng kí việc viết dữ liệu vào data
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Kiến trúc của một SQLite
 Gói
 Gói android.database chứa tất cả các lớp cần thiết để làm việc với cơ sở dữ
liệu.
 Gói android.database.sqlite chứa các lớp sqlite cụ thể.
 Tạo và cập nhật cơ sở dữ liệu với SQLite OpenHelper
Để tạo và cập nhật cơ sở dữ liệu trong ứng dụng android của bạn, tạo 1 lớp
con của lớp SQLiteOpenHelper. Trong cấu trúc lớp con của bạn, bạn gọi phương
thức Super() của SQLiteOpenHelper ghi tên cơ sở dữ liệu và phiên bản cơ sở dữ
liệu hiện hành.
Ở trong lớp này, cần phải Override các phương thức sau để tạo và cập nhật
cơ sở dữ liệu của bạn
 onCreate() – Để quản lý việc tạo Cơ sở dữ liệu.
 onUpgrade() – Để quản lý version của cơ sở dữ liệu.
 SQLiteDatabase
 SQLiteDatabase là lớp cơ bản để làm việc với SQLite Database ở trong
android, cung cấp các phương thức để mở (open), truy vấn (query), cập nhật
(update) và đóng (close) cơ sở dữ liệu.
 Cụ thể SQLiteDatabase cung cấp các phương thức insert(), update() and
delete().

25



×