- Đặc tính mở của Android: Android được xây dựng để cho phép các nhà phát triển để tạo ra cácứng dụng di động hấp dẫn, tận dụng tất cả tính năng một chiếc điệnthoại đã cung cấp.. Androi
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT – HÀN
KHOA KHOA HỌC MÁY TÍNH
ĐỒ ÁN CƠ SỞ 3
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG DI ĐỘNG
ĐẾM BƯỚC CHÂN THÔNG MINH
Sinh viên thực hiện : ĐẶNG QUANG TÀI
NGUYỄN THỊ TRÚC LY
Giảng viên hướng dẫn: ThS TRẦN ĐÌNH SƠN
Lớp : 19IT1
Đà Nẵng, tháng 5 năm 2021
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT – HÀN
KHOA KHOA HỌC MÁY TÍNH
ĐỒ ÁN CƠ SỞ 3
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG DI ĐỘNG
ĐẾM BƯỚC CHÂN THÔNG MINH
Sinh viên thực hiện : ĐẶNG QUANG TÀI
NGUYỄN THỊ TRÚC LY
Giảng viên hướng dẫn: ThS TRẦN ĐÌNH SƠN
Lớp : 19IT1
Trang 3Đà Nẵng, tháng 5 năm 2021
Trang 4thành nhất tới thầy giáo – ThS.Trần Đình Sơn đã quan tâm giúp đỡ, hướng dẫn
tôi hoàn thành tốt đồ án này trong thời gian qua
Tuy nhiên, đây là lần đầu tiên được tiếp xúc và tìm hiểu về đồ án này cùngvới trình độ kiến thức và lượng kinh nghiệm còn hạn chế, nên không thể tránhkhỏi có những sơ sót Vì vậy, tôi rất mong có sự đóng góp ý kiến và đánh giá chânthành của các thầy, các cô để đồ án này của chúng tôi được có điều kiện bổ sung,nâng cao ý thức của mình, hoàn thiện một cách tốt nhất có thể Tôi xin chân thànhcảm ơn
Trang 5NHẬN XÉT (Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 6
MỤC LỤC
Trang
MỞ ĐẦU
1.1 Lý do chọn đề tài 1
1.2 Mục tiêu đề tài 1
1.3 Nội dung thực hiện 1
Chương 1 Cơ sở lý thuyết 2
1.1 Hệ điều hành Android 2
1.1.1 Hệ điều hành Android là gì? 2
1.1.2 Kiến trúc Android 3
1.2 Môi trường Android Stusio 6
1.2.1 Giới thiệu Android studio 6
1.2.2 Cài đặt môi trường Android Studio 7
1.2.3 Cấu trúc dự án Android trong Android Studio 7
1.2.4 Thành phần giao diện trong Android Studio 8
1.2.5 Vòng đời ứng dụng Android 9
1.3 Mô hình thiết kế MVC 11
1.4 Ngôn ngữ lập trình Kotlin 11
1.5 SQLite database 13
1.6 Cảm biến trong Android 13
1.7 Kiến thức tính lượng năng lượng đốt cháy 14
1.7.1 Tỉ lệ trao đổi chất cơ bản (BRM) 14
1.7.2 Giá trị MET 14
Chương 2 Nghiên cứu tổng quan 16
2.1 Các ứng dụng cùng chức năng đã có trên thị trường 16
2.2 Cảm biến đếm bước chân trên điện thoại 16
2.3 GPS 17
2.4 Các thuật toán xử lý dữ liệu 17
2.4.1 Thuật toán tính quãng đường di chuyển 17
2.4.2 Thuật toán tính thời gian di chuyển 18
2.4.3 Thuật toán tính vận tốc trung bình di chuyển được 18
2.4.4 Thuật toán tính số năng lượng đốt cháy 18
Chương 3 Phân tích và thiết kế hệ thống 21
3.1 Mô hình tổng quan của ứng dụng nghiên cứu 21
3.2 Khảo sát và đặt tả yêu cầu 21
3.2.1 Yêu cầu chức năng 21
3.2.2 Yêu cầu phi chức năng 21
Trang 73.3 Phân tích và thiết kế hệ thống 21
3.3.1 Các chức năng của hệ thống 21
3.4 Biểu đồ usecase 22
3.4.1 Biểu đồ usecase tổng quát 22
3.4.2 Biểu đồ usecase chế độ thử thách 23
Chương 4 Triển khai xây dựng website 24
4.1 Các công cụ, phần mềm sử dụng 24
4.2 Thiết kế, xây dựng giao diện ứng dụng 24
4.2.1 Thiết kế wireframe 24
4.2.2 Giao diện đã hoàn thành 26
Chương 5 Kết luận và hướng phát triển 31
5.1 Kết quả 31
5.2 Hạn chế 31
5.3 Hướng phát triển 31
5.4 Kết luận 31
Trang 8DANH MỤC HÌNH
Trang
Hình 1.1 Hệ điều hành Android 2
Hình 1.2 Mô hình kiến trúc nền tảng Android 4
Hình 1.3 Android Studio 6
Hình 1.4 Cấu trúc dự án Android 7
Hình 1.5 Activity Stack 9
Hình 1.6 Các trạng thái của chu kỳ 10
Hình 1.7 Bảng giá trị MET 15
Hình 2.1 Ứng dụng “Trình theo dõi bước – Đo bước chân” 16
Hình 2.2 Ứng dụng “Bộ đếm bước – Đo bước chân và đo calo” 16
Hình 2.3 Hàm tính tỉ lệ đốt cháy 19
Hình 2.4 Hàm chuyển đổi kcal/ngày sang kcal/phút 19
Hình 2.5 Hàm tính năng lượng đốt cháy 19
Hình 2.6 Hàm lấy giá trị MET 20
Hình 3.1 Biểu đồ usecase tổng quát 22
Hình 3.2 Biểu đồ usecase chế độ thử thách 23
Hình 4.1 Thiết kế màn hình “home” 24
Hình 4.2 Thiết kế màn hình “lịch sử hoạt động” 25
Hình 4.3 Thiết kế màn hình “cập nhật thông tin” 25
Hình 4.4 Thiết kế màn hình “chế độ thử thách” 26
Hình 4.5 Giao diện “home” 27
Hình 4.6 Giao diện “lịch sử hoạt động” 28
Hình 4.7 Giao diện “cập nhật thông tin” 29
Hình 4.8 Giao diện “chế độ thử thách” 30
Hình 4.9 Giao diện trang “tin tức” 30
Trang 9MỞ ĐẦU 1.1 Lý do chọn đề tài
Khoa học công nghệ ngày càng phát triển, những chiếc điện thoại di độngcũng thay đổi theo, đem đến nhiều lợi ích quan trọng cho người sử dụng như: giữliên lạc đơn giản hơn, chụp ảnh dễ dàng, sắc nét, thanh toán nhanh… Bên cạnh đó,điện thoại di động còn giúp chúng ta trong việc theo dõi và quản lý sức khỏe hằngngày Có sức khỏe chúng ta mới có thể tận hưởng cuộc sống một cách trọn vẹnnhất Nó giúp ta có một cuộc sống vui vẻ, hạnh phúc, thực hiện ý tưởng, ước mơ,nguyện vọng của cuộc đời mình Hiểu được tầm quan trọng của sức khỏe cũngnhư những tiện ích mà điện thoại di động mang lại, chúng tôi đã tìm hiểu, nghiêncứu và áp dụng những kiến thức đã có để xây dựng nên ứng dụng di động đếmbước chân Nhằm theo dõi tình trạng sức khỏe người dùng bằng cách đếm số bướcchân và đưa ra thông tin vận động bao gồm số bước chân, lượng calo tiêu thụ, sốbước chân tiêu chuẩn,… để từ đó đưa ra những lời khuyên trong việc giữ gìn,chăm sóc sức khỏe cho người dùng
1.3 Nội dung thực hiện
- Nghiên cứu, phân tích nhu cầu thực tế, học hỏi các ứng dụng cùng chứcnăng trên thị trường
- Phác họa, liệt kê những chức năng, giao diện phù hợp với nhu cầu
- Tìm hiểu về ngôn ngữ lập trình di động Kotlin
- Tìm hiểu về cấu tạo, nguyên lý hoạt động của các cảm biến và các thuậttoán xử lý dữ liệu đầu ra
- Xây dựng, hoàn thiện và trang trí phần giao diện của ứng dụng
- Lập trình, hoàn thành phần chức năng chính của ứng dụng
- Chạy thử và cải thiện, bổ sung chức năng của ứng dụng
- Hoàn thành báo cáo đồ án cơ sở, gặp giáo viên hướng dẫn để kiểm duyệt vàtiến hành bảo vệ
Trang 10Chương 1 Cơ sở lý thuyết
tự do Đây chính là một trong những yếu tố đã giúp cho Android trở thành nềntảng xây dựng điện thoại thông minh phát triển nhất trên thế giới Hiện tại,Android đã chiếm 65% so với thị phần điện thoại thông minh trên toàn thế giớivào quý 3 năm 2012 Theo điều tra thì đã có khoảng 500 triệu thiết bị được kíchhoạt và có đến 1.3 triệu lượt được hoạt mỗi ngày Vào tháng 10/2020 thì android
đã có hơn 700.000 ứng dụng và số lượng tải từ Google Play ước tính lên khoảng
25 tỷ lượt Mặc dù có sự ra đời của iOS của Apple thì khiến Android có phần nàoảnh hưởng Tuy nhiên, Android vẫn đứng ở vị trí đầu tiên trong thị phần thế giới
Trang 11- Đặc tính mở của Android:
Android được xây dựng để cho phép các nhà phát triển để tạo ra cácứng dụng di động hấp dẫn, tận dụng tất cả tính năng một chiếc điệnthoại đã cung cấp Nó được xây dựng để được thực sự mở Ví dụ, mộtứng dụng có thể gọi bất kỳ chức năng lõi của điện thoại như thực hiệncuộc gọi, gửi tin nhắn văn bản, hoặc bằng cách sử dụng máy ảnh, chophép các nhà phát triển để tạo ra nhiều ứng dụng phong phú hơn chongười dùng Android được xây dựng trên mã nguồn mở Linux Kernel.Hơn nữa, nó sử dụng một máy ảo tuỳ chỉnh được thiết kế để tối ưu hóa
bộ nhớ và tài nguyên phần cứng trong một môi trường di động
Android không phân biệt giữa các ứng dụng lõi của điện thoại và cácứng dụng của bên thứ ba Tất cả có thể được xây dựng để có thể truycập bằng khả năng của một thiết bị di động cung cấp cho người sửdụng với một dải rộng các ứng dụng và dịch vụ Với các thiết bị xâydựng trên Android, người dùng có thể hoàn toàn thích ứng với điệnthoại đến lợi ích của họ Với Android, một nhà phát triển có thể xâydựng một ứng dụng cho phép người dùng xem vị trí của bạn bè của họ
và được cảnh báo khi họ đang có trong vùng phụ cận cho họ một cơhội để kết nối
Android cung cấp truy cập đến một loạt các thư viện công cụ hữu ích
và có thể được sử dụng để xây dựng các ứng dụng phong phú Ví dụ,Android cho phép các thiết bị giao tiếp với nhau tạo điều kiện chođồng đẳng rich-to-peer trong ứng dụng xã hội Ngoài ra, Android baogồm một tập hợp đầy đủ công cụ đã được xây dựng công phu, với việccung cấp nền tảng phát triển, với năng suất cao và cái nhìn sâu vào cácứng dụng
1.1.2 Kiến trúc Android
Android là một hệ điều hành nguồn mở dựa trên nhân Linux, được xâydựng theo ngăn xếp (stack) cho nhiều mảng rộng của thiết bị và các yếu tố hìnhthức nhất định Nhìn vào hình ảnh minh họa ở trên chúng ta sẽ dễ nhìn nhận vàhiểu hơn về kiểu thiết kế này Mỗi ngăn xếp (System Apps, Java APIFramework…) sẽ chứa một mảng các thành phần bên trong
Trang 12Hình 1.2 Mô hình kiến trúc nền tảng Android
- Applications:
Hệ điều hành Android tích hợp sẳn một số ứng dụng cơ bản như emailclient, SMS, lịch điện tử, bản đồ, trình duyệt web, sổ liên lạc và một sốứng dụng khác Ngoài ra tầng này cũng chính là tầng chứa các ứngdụng được phát triển bằng ngôn ngữ Java
Người phát triển ứng dụng được phép sử dụng đầy đủ bộ API đượcdùng trong các ứng dụng tích hợp sẳn của Android Kiến trúc ứng dụngcủa Android được thiết kế nhằm mục đích đơn giản hóa việc tái sửdụng các component Qua đó bất kì ứng dụng nào cũng có thể công bốcác tính năng mà nó muốn chia sẻ cho các ứng dụng khác (VD: Ứngdụng email có muốn các ứng dụng khác có thể sử dụng tính năng gởimail của nó) Phương pháp tương tự cho phép các thành phần có thểđược thay thế bởi người sử dụng
Trang 13 Tầng này bao gồm một tập các services và thành phần sau:
Một tập phong phú và có thể mở rộng bao gồm các đối tượng Viewđược dùng để xây dựng ứng dụng như: list, grid, text box, button vàthậm chí là một trình duyệt web có thể nhúng vào ứng dụng
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 hoặc chia sẽ dữ liệu của chúng
Resource Manager: Cung cấp khả năng truy xuất các tài nguyên code như hình ảnh hoặc file layout
non- Notification Manager: Cung cấp khả năng hiển thị custom alert trênthanh status bar
Activity Manager: Giúp quản lý vòng đời của một ứng dụng
- Libraries:
System C library: một thể hiện được xây dựng từ BSD của bộ thư viện
hệ thống C chuẩn (libc), được điều chỉnh để tối ưu hóa cho các thiết bịchạy trên nền Linux
Media libraries: Bộ thư viện hổ trợ trình diễn và ghi các định dạng âmthan và hình ảnh phổ biến
Surface manager: Quản lý hiển thị nội dung 2D và 3D
LibWebCore: Một web browser engine hiện đại được sử dụng trongtrình duyệt của Android lần trong trình duyệt nhúng web view được sửdụng trong ứng dụng
SGL: Engine hổ trợ đồ họa 2D
3D libraries: Một thể hiện được xây dựng dựa trên các APIs củaOpenGL ES 1.0 Những thư viện này sử dụng các tăng tốc 3D bằngphần cứng lẫn phần mềm để tối ưu hóa hiển thị 3D
FreeType: Bitmap and vector font rendering
SQLite: Một DBMS nhỏ gọn và mạnh mẽ
- Android Runtime:
Hệ điều hành Android tích hợp sẳn một tập hợp các thư viện cốt lõicung 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ônngữ lập trình Java Mọi ứng dụng của Android chạy trên một tiến trìnhcủa riêng nó cùng với một thể hiện của máy ảo Dalvik Máy ảo Dalvikthực tế là một biến thể của máy ảo Java được sửa đổi, bổ sung các côngnghệ đặc trưng của thiết bị di động Nó được xây dựng với mục đíchlàm cho các thiết bị di động có thể chạy nhiều máy ảo một cách hiệuquả Trước khi thực thi, bất kì ứng dụng Android nào cũng đượcconvert thành file thực thi với định dạng nén Dalvik Executable (.dex)
Trang 14Định dạng này được thiết kế để phù hợp với các thiết bị hạn chế về bộnhớ cũng như tốc độ xử lý Ngoài ra máy ảo Dalvik sử dụng bộ nhânLinux để cung cấp các tính năng như thread, low-level memorymanagement.
- Linux Kernel:
Hệ điều hành Android được xây dựng trên bộ nhân Linux 2.6 chonhững dịch vụ hệ thống cốt lõi như: security, memory management,process management, network stack, driver model Bộ nhân này làmnhiệm vụ như một lớp trung gian kết nối phần cứng thiết bị và phầnứng dụng
1.2 Môi trường Android Stusio
1.2.1 Giới thiệu Android studio
Android Studio là một phầm mềm bao gồm các bộ công cụ khác nhau dùng
để phát triển ứng dụng chạy trên thiết bị sử dụng hệ điều hành Android như cácloại điện thoại smartphone, các tablet Android Studio được đóng gói với một bộcode editor, debugger, các công cụ performance tool và một hệ thống build/deploy(trong đó có trình giả lập simulator để giả lập môi trường của thiết bị điện thoạihoặc tablet trên máy tính) cho phép các lập trình viên có thể nhanh chóng pháttriển các ứng dụng từ đơn giản tới phức tạp.Việc xây dựng một ứng dụng mobile(hoặc tablet) bao gồm rất nhiều các công đoạn khác nhau Đầu tiên chúng ta sẽviết code ứng dụng sử dụng máy tính cá nhân hoặc laptop Sau đó chúng ta cầnbuild ứng dụng để tạo file cài đặt Sau khi build xong thì chúng ta cần copy file càiđặt này vào thiét bị mobile (hoặc table) để tiến hành cài đặt ứng dụng và chạykiểm thử (testing) Bạn thử tưởng tượng nếu với mỗi lần viết một dòng code bạnlại phải build ứng dụng, cài đặt trên điện thoại hoặc tablet và sau đó chạy thử thì
sẽ vô cùng tốn thời gian và công sức Android Studio được phát triển để giải quyếtcác vấn đề này Với Android Studio tất cả các công đoạn trên được thực hiện trêncùng một máy tính và các quy trình được tinh gọn tới mức tối giản nhất
Trang 15Hình 1.3 Android Studio
1.2.2 Cài đặt môi trường Android Studio
- Cấu hình tối thiểu cài đặt Android Studio trên Windows:
Hệ điều hành: Windows 7 32-64 bit trở lên
Bộ nhớ trong: tối thiểu 2GB RAM, yêu cầu 8GB RAM
Ổ cứng: tối thiểu 2GB ổ trống, khuyến nghị 4GB (500MB cho IDE và1.5GB cho Android SDK và image giả lập hệ thống)
Tỉ lệ màn hình: tối thiểu 1280×800
- Cấu hình tối thiểu cài đặt Android Studio trên Mac:
Hệ điều hành: MAC OS X 10.8.5 trở lên, hỗ trợ tới 10.11.4 (ElCapitan)
Bộ nhớ trong: tối thiểu 2GB RAM, yêu cầu 8GB RAM
Ổ cứng: tối thiểu 2GB ổ trống, khuyến nghị 4GB (500MB cho IDE và1.5GB cho Android SDK và image giả lập hệ thống)
Tỉ lệ màn hình: tối thiểu 1280×800
- Các bước cài đặt:
Truy cập internet để tải Android Studio về hệ điều hành của máy
Sau khi tải về vào file Setup để tiến hành cài đặt
Trang 161.2.3 Cấu trúc dự án Android trong Android Studio
Hình 1.4 Cấu trúc dự án Android
- Thư mục Java: Thư mục này sẽ chứa tất cả các file mã nguồn java (.java)
mà chúng ta sẽ tạo trong quá trình phát triển ứng dụng, bao gồm cả mãJUnit test code Bất cứ khi nào tạo bất kỳ project/ứng dụng mới nào, filelớp MainActivity.java sẽ tự động tạo trong package làcom.tutlane.helloworld
- Thư mục res: Đây là một thư mục quan trọng sẽ chứa tất cả các resourcekhông phải code, chẳng hạn như ảnh bitmap, UI strings, XML layouts
- Thư mục drawable (res/drawable): Nó sẽ chứa các dạng ảnh khác nhau Tốtnhất là nên thêm tất cả các hình ảnh vào thư mục drawable ngoại trừ cácbiểu tượng ứng dụng/laucher
- Thư mục layout (res/layout): Thư mục này sẽ chứa tất cả các file XMLlayout đã sử dụng để xác định giao diện người dùng của ứng dụng
- Thư mục mipmap (res/mipmap): Thư mục này sẽ chứa các biểu tượng ứngdụng/laucher được sử dụng để hiển thị trên màn hình chính Các loại biểutượng sẽ có tỷ trọng khác nhau như hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi, để
sử dụng dựa trên kích thước của thiết bị
- Thư mục values (res/values): Thư mục này sẽ chứa một số file XML khácnhau, chẳng hạn như strings, colors, styles
- Thư mục Manifests: Thư mục này sẽ chứa một file Manifest(AndroidManifest.xml) cho ứng dụng Android File manifest này sẽ chứathông tin về ứng dụng , chẳng hạn như android version, access permissions,
Trang 17metadata, v.v và các component của ứng dụng File manifest sẽ hoạt độngnhư một trung gian giữa hệ điều hành Android và ứng dụng.
- Gradle Scripts: Trong Android, Gradle là công cụ build hệ thống và Gradleđược tích hợp sẵn vào Android Studio, và được điều khiển một cách tựđộng thông qua Android Studio Trong gradle có build.gradle (Project) vàbuild.gradle (Module) được sử dụng để build các cấu hình áp dụng cho tất
cả các module ứng dụng hoặc dành riêng cho một mô-đun ứng dụng
1.2.4 Thành phần giao diện trong Android Studio
Android Layout là một lớp điều khiển việc sắp xếp các thành phần con của
nó xuất hiện trên màn hình Bất cứ thành phần nào đó là mộtView (hoặc thừa kế
từ View) đều có thể là con của một Layout Tất cả các lớp Layout đều mở rộng từlớp ViewGroup (mà kế thừa từView), do đó bạn cũng có thể tạo một lớp Layouttùy biến của mình, bằng cách tạo một lớp mở rộng từ ViewGroup
Những dòng chữ hiển thị trên thiết bị Android (TextView), cho đến nhữngkhung nhập liệu (EditText), những hình ảnh (ImageView), danh sách có thể cuộnlên, cuộn xuống (ListView, GridView, RecycleView) hay những cái button(Button) các bạn thể click… đều là những View trong android, những view nàyđều có một chức năng riêng Trong bài viết này tôi sẽ cùng các bạn tìm hiểu một
số view cơ bản trong android cũng như một số thuộc tính của nó để giúp các bạn
có thể thiết kế những giao diện đơn giản khi mới lập trình di động với nền tảngnày
1.2.5 Vòng đời ứng dụng Android
- 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, đôilúc chúng có thể là active (visible hoặc invisible) hoặc inactive
- Activity Stack: Bên trong hệ thống các activity được quản lý như mộtactivity stack Khi một Activity mới được start, nó được đặt ở đỉnh củastack và trở thành activity đang chạy activity trước sẽ ở bên dưới activitymới và sẽ không thấy trong suốt quá trình activity mới tồn tại Nếu ngườidù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
Trang 18Hình 1.5 Activity Stack
- Các trạng thái của chu kỳ sống:
Hình 1.6 Các trạng thái của chu kỳ
Running (đang kích hoạt): Khi màn hình là Foreground ( Activitynằm trên cùng ứng dụng và cho phép người sử dụng tương tác)
Paused (tạm dừng) : Activity bị mất focus nhưng mà vẫn nhìn thấyđược Activity này (Ví dụ bạn mở một Activity mới lên dưới dạngDialog) Trường hợp này nó vẫn có khả năng bị hệ thống tự động xửtrong tình huống bộ nhớ quá ít
Trang 19 Stopped (dừng – không phải Destroyed): Activity mất tiêu điểm vàkhông nhìn thấy được (ví dụ bạn mở một Activity mới lên mà Fullmàn hình chẳng hạn) Trong trường hợp này nó có thể bị hệ thống xửtrong bất kỳ tình huống nào.
1.3 Mô hình thiết kế MVC
MVC là từ viết tắt bởi 3 từ Model – View – Controller Đây là mô hình thiết
kế sử dụng trong kỹ thuật phần mềm Mô hình source code thành 3 phần, tươngứng mỗi từ Mỗi từ tương ứng với một hoạt động tách biệt trong một mô hình
- Model (M): là bộ phận có chức năng lưu trữ toàn bộ dữ liệu của ứng dụng
Bộ phận này là một cầu nối giữa 2 thành phần bên dưới là View vàController Model thể hiện dưới hình thức là một cơ sở dữ liệu hoặc có khichỉ đơn giản là một file XML bình thường Model thể hiện rõ các thao tácvới cơ sở dữ liệu như cho phép xem, truy xuất, xử lý dữ liệu,…
- View (V): đây là phần giao diện (theme) dành cho người sử dụng Nơi màngười dùng có thể lấy được thông tin dữ liệu của MVC thông qua các thaotác truy vấn như tìm kiếm hoặc sử dụng thông qua các website Thôngthường, các ứng dụng web sử dụng MVC View như một phần của hệthống, nơi các thành phần HTML được tạo ra Bên cạnh đó, View cũng cóchức năng ghi nhận hoạt động của người dùng để tương tác với Controller.Tuy nhiên, View không có mối quan hệ trực tiếp với Controller, cũngkhông được lấy dữ liệu từ Controller mà chỉ hiển thị yêu cầu chuyển choController mà thôi
- Controller (C): bộ phận có nhiệm vụ xử lý các yêu cầu người dùng đưa đếnthông qua view Từ đó, Controller đưa ra dữ liệu phù hợp với người dùng.Bên cạnh đó, Controller còn có chức năng kết nối với model
1.4 Ngôn ngữ lập trình Kotlin
Kotlin là ngôn ngữ lập trình dành cho các ứng dụng đa nền tảng hiện đại,tương thích hoàn toàn với Android và được phát triển bởi JetBrains, công ty đứngsau IntelliJ Java IDE (bộ công cụ và ứng dụng dành cho nhà phát triển) màAndroid Studio dựa trên Tuy nhiên, đây không phải là ngôn ngữ lập trình riêngbiệt mà được xem là một phương pháp mới để sử dụng và phát triển code củaJava Kotlin hoạt động liền mạch với Java, nhờ đó giúp các nhà phát triển yêuthích Java dễ dàng sử dụng thêm một ngôn ngữ lập trình tuyệt vời là Kotlin cũngnhư tận dụng thêm các thư viện hữu ích từ ngôn ngữ này Cũng giống như nhiềungôn ngữ lập trình khác, Kotlin chạy trên Java Virtual Machine (JVM) và sử dụngcác công cụ và thư viện sẵn có trên Java Từ lúc giới thiệu vào năm 2011 cho đến
Trang 20khi phát hành phiên bản 1.0, JetBrains đã luôn chú trọng đến tính tương hợp vớiJava.
- Ưu điểm:
Code ngắn gọn, giảm thiểu các đoạn không cần thiết, cấu trúc ngắn,trực quan, dễ học, dễ làm, dễ sử dụng, tiết kiệm thời gian Theo ướctính của Ovechkin thì với việc sử dụng Kotlin, code base có thể đượcthu nhỏ hơn từ 15-25%
An toàn, tránh lỗi NullPointerException NullPointerException xảy rakhi code tham chiếu đến một biến, nhưng biến lại không có giá trị khiứng dụng đang chạy Kết quả là ứng dụng sẽ không có bất kỳ tùy chọnnào ngoại trừ việc báo lỗi Và tất nhiên, với Kotlin, đảm bảo các nhàphát triển sẽ không gặp phải vấn đề này
Khả năng tương tác cao, tương thích 100% và đẩy mạnh sử dụng cácthư viện hiện có trong JVM, bao gồm cả SAM support
Tool làm việc thân thiện, có thể lựa chọn các Java IDE để làm việchoặc làm việc với command line
- Nhược điểm:
Thêm thời gian chạy Runtime: Thư viện tiêu chuẩn của Kotlin vàruntime sẽ làm tăng kích thước tập tin apk của bạn Mặc dù nó chỉtương đương với khoảng 800KB, nhưng nếu ứng dụng của bạn đã lớnsẵn rồi thì 800KB phụ có thể làm nó phình to và khiến người dùng nghĩlại trước khi tải về ứng dụng của bạn
Không hẳn là code dễ đọc đối với beginer: Mặc dù cú pháp ngắn gọncủa Kotlin là một trong những thế mạnh lớn nhất của ngôn ngữ, nhưngbạn có thể thấy một số khó khăn ban đầu, đơn giản bởi vì có rất nhiềuthứ đang được thực hiện trong một số lượng nhỏ code đó Java có thểdài dòng hơn, nhưng ngược lại tất cả mọi thứ đều rõ ràng, có nghĩa lànhững người không quen code Java có xu hướng dễ dàng hơn để hiểu
so Kotlin.Ngoài ra, nếu sử dụng không hợp lý, quá tải toán tử củaKotlin có thể dẫn đến số code đó có thể khó khăn để đọc
Thiếu hỗ trợ chính thức: Kotlin có thể được trợ tốt trong AndroidStudio, nhưng cần ghi nhớ rằng Kotlin không được xác nhận chínhthức là của Google Ngoài ra, tính năng tự động hoàn tác và biên dịchtrong Android Studio có xu hướng chạy hơi chậm khi bạn làm việc vớiKotlin so với một dự án thuần Java