TÀI LIỆU HỌC THUẬT: PHÂN TÍCH VÀ MÔ TẢ GIÁO TRÌNH BÀI TẬP THỰC HÀNH LẬP TRÌNH DI ĐỘNG
Tổng quan về giáo trình
Tài liệu "Bài tập thực hành Lập trình di động" do Giảng viên Nguyễn Hữu Vĩnh biên soạn, được lưu hành và giảng dạy nội bộ tại Viện Kỹ thuật Công nghệ – Trường Đại học Thủ Dầu Một. Đây là học liệu thực hành chuyên ngành dành cho học phần Phát triển ứng dụng di động trên nền tảng Android. Tài liệu có tổng dung lượng 110 trang, đóng vai trò định hướng thực nghiệm và chuẩn hóa kỹ năng lập trình cho sinh viên ngành Công nghệ Thông tin và Kỹ thuật Phần mềm.
Mục tiêu học tập (learning outcomes) của tài liệu tập trung vào việc hình thành năng lực thiết kế giao diện người dùng (UI Layouts), nắm vững vòng đời ứng dụng và cơ chế xử lý sự kiện (Event Handling), làm chủ các thành phần điều khiển cơ bản và nâng cao (Android Widgets, Adapters), điều hướng màn hình (Intent, Menu) và xây dựng ứng dụng tương tác cơ sở dữ liệu cục bộ (SQLite).
Về mặt cấu trúc, tài liệu được tổ chức theo phương pháp sư phạm tiếp cận từng bước (step-by-step approach). Nội dung đi từ hướng dẫn khởi tạo dự án đầu tiên trên môi trường tích hợp Eclipse IDE kết hợp Android SDK, phân tích chi tiết các thuộc tính XML và mã nguồn Java, đến triển khai hệ thống 13 bài tập thực hành chuyên đề tại lớp và 33 đề tài bài tập lớn tổng hợp. Điểm đặc trưng của tài liệu là việc mô hình hóa các khái niệm lập trình thông qua các ca thực hành trực quan, đi kèm sơ đồ phân tích thuộc tính và mã nguồn hoàn chỉnh của từng Activity.
Nội dung kiến thức cốt lõi
Các chương/chủ đề chính
Cấu trúc nội dung của tài liệu được phân chia thành các chuyên đề kỹ thuật theo lộ trình lũy tiến:
-
Khởi tạo ứng dụng Android đầu tiên (Hello World):
- Thiết lập môi trường và tạo cấu trúc dự án trong Eclipse IDE.
- Cấu hình các thông số SDK:
Application Name, Project Name, Package Name, Minimum Required SDK, Target SDK, Compile With, và cấu hình giao diện Theme.
- Cấu trúc một Activity cơ bản: Lớp
MainActivity kế thừa từ android.app.Activity, vòng đời phương thức onCreate(Bundle savedInstanceState) và cơ chế nạp giao diện thông qua phương thức setContentView().
-
Thiết kế giao diện người dùng (Layout Management):
LinearLayout: Cơ chế sắp xếp các View con theo chiều dọc (android:orientation="vertical") hoặc chiều ngang (android:orientation="horizontal"). Kỹ thuật phân chia không gian hiển thị theo tỷ lệ dựa trên thuộc tính trọng số android:layout_weight và tổng trọng số android:weightSum.
RelativeLayout: Định vị tương đối giữa các thành phần giao diện thông qua định danh ID (android:layout_above, android:layout_below, android:layout_toLeftOf, android:layout_toRightOf) và căn chỉnh theo phần tử cha (android:layout_alignParentTop, android:layout_alignParentBottom, android:layout_alignParentLeft, android:layout_alignParentRight).
TableLayout và TableRow: Quản lý giao diện dạng hàng - cột, áp dụng các thuộc tính android:stretchColumns, android:shrinkColumns, android:collapseColumns, android:layout_column và cơ chế trộn cột bằng android:layout_span.
-
Cơ chế điều khiển sự kiện trong Android (Event Handling):
- Nguyên lý quản lý sự kiện theo cấu trúc hàng đợi (FIFO queue) trong Android Framework.
- Phân định 3 khái niệm: Event Listeners (chứa phương thức callback), Event Listener Registration (tiến trình đăng ký) và Event Handlers (phương thức thực thi logic xử lý).
- Các giao diện sự kiện:
OnClickListener (onClick()), OnLongClickListener (onLongClick()), OnFocusChangeListener (onFocusChange()), OnKeyListener (onKey()), OnTouchListener (onTouch()), OnMenuItemClickListener (onMenuItemClick()), OnCreateContextMenuListener (onCreateContextMenu()).
- 6 kỹ thuật đăng ký Event Listener:
- Gán thuộc tính
android:onClick trực tiếp trong file XML.
- Sử dụng lớp nặc danh nội tuyến (Inline anonymous listener).
- Activity kế thừa trực tiếp giao diện
OnClickListener (Activity implements OnClickListener).
- Khởi tạo Listener thông qua biến (Listener in variable).
- Tách biệt lớp lắng nghe rõ ràng (Explicit listener class).
- Kế thừa và định nghĩa lại View (View Subclassing) kết hợp phương thức
performClick().
-
Thành phần điều khiển và Thông báo (Android Widgets & Notifications):
- Thông báo nổi
Toast: Khởi tạo qua phương thức Toast.makeText(), cấu hình ngữ cảnh Context, chuỗi hiển thị CharSequence và hằng số thời gian (LENGTH_SHORT - 2 giây, LENGTH_LONG - 3.5 giây), hiển thị qua show().
- Hộp thoại cảnh báo
AlertDialog: Sử dụng AlertDialog.Builder để cấu hình tiêu đề (setTitle), thông điệp (setMessage), biểu tượng (setIcon) và các nút phản hồi tương tác (setPositiveButton, setNegativeButton, setNeutralButton).
- Các Widget điều khiển dữ liệu:
TextView, EditText, Button, ImageButton, CheckBox, RadioButton, RadioGroup, ScrollView.
-
Danh sách nâng cao và Tương tác dữ liệu (Advanced Controls & Adapters):
- Cấu hình hiển thị danh sách dạng tĩnh thông qua
ListView kết hợp mảng tài nguyên String-Array trong tập tin res/values/strings.xml.
- Cấu hình hiển thị danh sách dạng động thông qua
ListView, cấu trúc dữ liệu ArrayList và lớp cầu nối ArrayAdapter.
- Kỹ thuật đồng bộ hóa giao diện khi thay đổi tập dữ liệu bằng phương thức
notifyDataSetChanged().
- Xây dựng giao diện danh sách thông qua kế thừa lớp chuyên biệt
ListActivity và định danh mặc định @android:id/list.
-
Điều hướng và Cơ sở dữ liệu:
- Cơ chế chuyển màn hình và truyền dữ liệu qua lại giữa các Activity bằng
Intent.
- Cài đặt Menu hệ thống và
ContextMenu.
- Kết nối và quản trị dữ liệu SQLite cục bộ phục vụ các chức năng: Đăng nhập, Quản lý lớp học, Quản lý sinh viên và các lớp tiện ích cảnh báo (
Notify.java).
Kiến thức nền tảng được xây dựng
- Mô hình lập trình hướng sự kiện (Event-Driven Architecture): Cơ chế chuyển đổi hành vi tương tác vật lý của người dùng (chạm, nhấn giữ, gõ phím) thành các luồng xử lý mã nguồn Java thông qua các bộ lắng nghe (Listeners) và hàm gọi lại (Callbacks).
- Kiến trúc phân tách Giao diện và Logic (XML/Java Separation): Ánh xạ đối tượng giao diện được định nghĩa trong tài nguyên XML sang các biến đối tượng Java thông qua hàm
findViewById().
- Mẫu thiết kế Adapter (Adapter Pattern): Đóng vai trò trung gian chuyển đổi các cấu trúc dữ liệu thô (
Array, List, ArrayList) thành các thành phần hiển thị tương thích trên các View dạng danh sách (ListView).
- Mô hình tương tác cơ sở dữ liệu quan hệ trên thiết bị: Nguyên lý lưu trữ dữ liệu dạng bảng, thực thi các truy vấn thêm/sửa/xóa/đọc và ánh xạ bản ghi dữ liệu vào các Activity tương ứng.
Kỹ năng phát triển
- Kỹ năng kỹ thuật (Technical skills): Viết mã nguồn XML phân cấp giao diện; cài đặt các giao diện lắng nghe sự kiện; quản lý bộ nhớ và tối ưu chi phí tính toán layout; xây dựng logic nghiệp vụ và tương tác CSDL SQLite.
- Kỹ năng phân tích (Analytical skills): Phân tích và lựa chọn cấu trúc Layout phù hợp cho từng loại màn hình; kiểm tra tính hợp lệ của dữ liệu đầu vào (Form Validation) bằng các biểu thức logic.
- Kỹ năng thực hành ứng dụng (Practical competencies): Xây dựng ứng dụng di động hoàn chỉnh từ khâu thiết kế UI, gắn kết sự kiện, xử lý tính toán, lưu trữ dữ liệu đến thực thi kiểm thử trên môi trường giả lập (Android Emulator).
Phương pháp giảng dạy và học tập
Tài liệu áp dụng phương pháp tiếp cận thực hành tích hợp (hands-on laboratory), kết hợp đồng thời giữa giải thích cú pháp kỹ thuật, cung cấp mã nguồn minh họa chi tiết và hiển thị hình ảnh giao diện đầu ra tương ứng.
Hệ thống bài tập thực hành được thiết kế theo dạng bài toán tình huống thực tế có độ phức tạp tăng dần:
- Bài tập 3: Luyện tập 6 kỹ thuật bắt sự kiện qua các phép tính số học (Tổng, Hiệu, Tích, Thương, Ước số chung lớn nhất) và nút Thoát ứng dụng bằng hàm
finish().
- Bài tập 4: Xây dựng ứng dụng chuyển đổi nhiệt độ giữa thang đo Celsius ($C$) và Fahrenheit ($F$) bằng cách lồng ghép các
LinearLayout dọc và ngang.
- Bài tập 5: Thiết kế ứng dụng máy tính bỏ túi kết hợp
TableLayout và LinearLayout.
- Bài tập 8: Chuyển đổi năm Dương lịch sang năm Âm lịch (Can - Chi) bằng thuật toán chia lấy dư (
namduong % 10 và namduong % 12) kết hợp cấu trúc switch-case.
- Bài tập 9: Biểu mẫu thu thập thông tin cá nhân tích hợp kiểm tra ràng buộc (Validation: Tên $\ge$ 3 ký tự, CMND đủ 9 chữ số) kết hợp
RadioGroup, RadioButton và CheckBox.
- Bài tập 10: Ứng dụng bán sách trực tuyến tính thành tiền (đơn giá 20.000đ, chiết khấu 10% cho khách VIP), tích hợp
ScrollView và lưu trữ ArrayList để tính toán thống kê tổng doanh thu.
- Bài tập 11 – 13: Lập trình danh sách tĩnh, danh sách động và thao tác cập nhật dữ liệu danh sách
ListView thời gian thực.
Về phân bổ thời lượng thực hành tại phòng máy, tài liệu quy định lộ trình 4 buổi:
- Buổi 1: Layout và sự kiện Android.
- Buổi 2: Android Widgets.
- Buổi 3: Menu, ContextMenu và Intent.
- Buổi 4: Kết nối cơ sở dữ liệu.
Phương pháp đánh giá kết quả học tập bao gồm việc hoàn thành các bài thực hành trên lớp và triển khai một trong 33 đề tài bài tập lớn tổng hợp (như: Quản lý thư viện, Quản lý khách sạn, Tra cứu xe bus, Đọc tin tức báo điện tử, Nhận dạng biển số xe, Điểm danh sinh viên qua mã vạch).
Về tự học, sinh viên được định hướng đọc kết hợp tài liệu thực hành với các chỉ mục Slide bài giảng lý thuyết (Slide 62, 69, 72, 78–86 về Xử lý giao diện người dùng) để hiểu sâu cơ chế hoạt động bên dưới của framework.
Điểm nổi bật và cập nhật
- Hệ thống hóa toàn diện các kỹ thuật lập trình sự kiện: Tài liệu không chỉ trình bày một cách tiếp cận đơn lẻ mà so sánh chi tiết 6 phương pháp đăng ký Event Listener khác nhau trên cùng một ngữ cảnh điều khiển, chỉ rõ ưu điểm và nhược điểm về mặt tổ chức mã nguồn và hiệu năng thực thi.
- Phân tích chi tiết thuộc tính Layout: Cung cấp hướng dẫn định lượng về việc phân chia tỷ lệ khung hình bằng
layout_weight và weightSum, chỉ rõ sự khác biệt giữa việc sử dụng và không sử dụng weightSum trong việc tạo khoảng trắng giao diện.
- Tính liên kết bài toán thực tế cao: Ngân hàng 33 đề tài bài tập lớn bao quát nhiều lĩnh vực nghiệp vụ xã hội (quản trị bán hàng, du lịch, giáo dục, tiện ích hệ thống như quản lý pin điện thoại, tương tác phần cứng như quét mã vạch và nhận dạng hình ảnh).
- Mã nguồn mẫu đầy đủ: Cung cấp toàn bộ mã nguồn XML và Java cho các lớp cốt lõi, hạn chế tối đa việc viết mã nguồn dạng giả định, hỗ trợ sinh viên đối chiếu và khắc phục lỗi trực tiếp trong quá trình làm bài.
Đối tượng sử dụng giáo trình
- Sinh viên chuyên ngành: Sinh viên năm thứ 3 hoặc năm thứ 4 chuyên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Hệ thống Thông tin thuộc Viện Kỹ thuật Công nghệ – Trường Đại học Thủ Dầu Một hoặc các trường đại học đào tạo khối ngành kỹ thuật tương đương.
- Điều kiện tiên quyết (Prerequisites): Người học cần hoàn thành các học phần: Cơ sở lập trình, Lập trình hướng đối tượng (OOP với Java), Cấu trúc dữ liệu và giải thuật, Cơ sở dữ liệu.
- Giảng viên: Sử dụng làm tài liệu hướng dẫn giảng dạy tại phòng thực hành, làm chuẩn phân bổ tiến độ giảng dạy 4 buổi lab và cung cấp ngân hàng đề tài đồ án môn học.
- Người tự học: Lập trình viên bắt đầu tiếp cận phát triển ứng dụng di động Android nền tảng Java, cần tài liệu thực hành có tính hệ thống từ giao diện đến tương tác dữ liệu.
Câu hỏi thường gặp
1. Giáo trình này phù hợp với đối tượng nào?
Giáo trình được biên soạn chuyên biệt cho sinh viên đại học khối ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và những người cần tài liệu hướng dẫn thực hành lập trình Android cơ bản bằng ngôn ngữ Java.
2. Cần chuẩn bị những kiến thức nền tảng nào trước khi học?
Người học cần nắm vững cú pháp ngôn ngữ Java, nguyên lý lập trình hướng đối tượng (kế thừa, cài đặt interface, lớp nặc danh), cú pháp ngôn ngữ đánh dấu XML và kiến thức cơ bản về cơ sở dữ liệu quan hệ (truy vấn SQL).
3. Điểm khác biệt của tài liệu này so với sách lý thuyết là gì?
Tài liệu tập trung vào phương pháp thực hành thông qua bài tập cụ thể, phân tích trực tiếp mã nguồn (XML và Java) cùng hình ảnh giao diện thực tế, cung cấp lộ trình 4 buổi lab rõ ràng và danh mục 33 đề tài bài tập lớn.
4. Làm thế nào để tự học hiệu quả với tài liệu này?
Người học nên cài đặt môi trường phát triển, tự gõ lại và biên dịch toàn bộ các đoạn mã nguồn mẫu trong bài tập từ 1 đến 13, chủ động thay đổi các thuộc tính XML để quan sát sự biến đổi của giao diện và tự chọn một đề tài trong phần Bài tập lớn để thực hiện độc lập.
5. Có tài liệu bổ trợ nào kèm theo giáo trình không?
Tài liệu được thiết kế đồng bộ với hệ thống Slide bài giảng lý thuyết môn Lập trình di động (được trích dẫn cụ thể theo số slide trong các bài tập) và bộ khung dự án mẫu do giảng viên cung cấp.
Kết luận
Tài liệu "Bài tập thực hành Lập trình di động" của GV. Nguyễn Hữu Vĩnh (Trường Đại học Thủ Dầu Một) là tài liệu học tập thực hành có tính hệ thống, cung cấp đầy đủ các khối kiến thức từ thiết kế giao diện (LinearLayout, RelativeLayout, TableLayout), kỹ thuật điều khiển sự kiện, làm việc với Widgets (Toast, AlertDialog, ListView, ArrayAdapter) đến xử lý luồng dữ liệu và kết nối cơ sở dữ liệu SQLite.
Lộ trình học tập đề xuất cho người học là hoàn thành tuần tự các bài lab kỹ thuật trong 4 buổi học trước khi triển khai các đề tài bài tập lớn tổng hợp. Để đạt hiệu quả học tập cao nhất, người học cần kết hợp việc thực hành mã nguồn trên công cụ phát triển với việc tra cứu các tài liệu lý thuyết liên quan.