Chƣơng 3 XÂY DỰNG PHẦN MỀM VNUNOTE
3.6. Thiếtkế các lớp
Sử dụng phương pháp hướng đối tượng để thiết kế các lớp trong ứng dụng [14]như hình3.15. Các lớp được phân loại theo giao diện, chức năng, dữ liệu. Trong hình 3.15 ta thấy rằng các lớp giao diện cung cấp dữ liệu và thao tác người dùng cho các lớp chức năng. Các lớp chức năng sử dụng các lớp giao diện để hiển thị dữ liệu. Các lớp chức năng sử dụng các lớp dữ liệu cụ thể để thao tác dữ liệu ứng dụng. Các lớp dữ liệu cụ thể sử dụng lớp truy cập dữ liệu chung để thực hiện giao dịch với cơ sở dữ liệu. Tất cả các lớp đều sử dụng thư viện lập trình của Android.
Hình 3.15. Kiến trúc các lớp trong ứng dụng
Theo kiến trúc trên, chi tiết các lớp cho ca sử dụng hiển thị danh sách ghi chép được mô tả trong bảng 3.21. Bảng này cho biết nhiệm vụ của các lớp trong việc hiển thị danh sách ghi chép.
Bảng 3.21. Các lớp trong ca sử dụng hiển thị danh sách ghi chép fragment_entry.xml
(giao diện)
Cung cấp giao diện hiển thị danh sách ghi chép (chỉ gồm thông tin tiêu đề , tóm tắt và ngày tạo).
Người dùng có thể bấm vào từng ghi chép (được xử lý bởi
NoteActivity.java).
NoteActivity.java
(lớp chức năng)
Đọc danh sách ghi chép từ cơ sở dữ liệu (dùng lớp
Note.java).
Hiển thị danh sách ghi chép lên giao diện (fragment_entry.xml).
Note.java
(lớp dữ liệu)
Xây dựng câu lệnh SQL và dùng lớp SqliteWrapper.java để truy vấn danh sách ghi chép.
Xây dựng câu lệnh SQL và dùng lớp SqliteWrapper.java để truy vấn từng ghi chép theo ID.
Xóa và cập nhật ghi chép sử dụng lớp SqliteWrapper.java
SqliteWrapper.java
(lớp giao dịch)
Cung cấp chức năng giao dịch cơ sở dữ liệu cơ bản (truy vấn, cập nhật, xóa).
Các lớp trong ca sử dụng tìm kiếm ghi chép theo tiêu đề được mô tả trong bảng 3.22. Bảng này cho biết nhiệm vụ của các lớp trong việc tìm kiếm ghi chép theo tiêu đề.
Bảng 3.22. Các lớp trong ca sử dụng tìm kiếm ghi chép theo tiêu đề fragment_entry.xml
(giao diện)
Cung cấp giao diện cho ô tìm kiếm và nút tìm kiếm.
Người dùng có thể nhập dữ liệu vào ô tìm kiếm và bấm nút tìm kiếm (được xử lý bởi NoteActivity.java).
NoteActivity.java
(lớp chức năng)
Lọc danh sách ghi chép có tiêu đề phù hợp dữ liệu tìm kiếm. Cập nhật danh sách ghi chép lên giao diện
(fragment_entry.xml).
Các lớp trong ca sử dụng tìm kiếm ghi chép theo tag được mô tả trong bảng 3.23. Bảng này cho biết nhiệm vụ của các lớp trong việc tìm kiếm ghi chép theo Tag.
Bảng 3.23. Các lớp trong ca sử dụng tìm kiếm ghi chép theo Tag fragment_entry.xml
(giao diện)
Cung cấp giao diện tìm kiếm theo tag.
Người dùng có thể chọn tag để tìm kiếm ghi chép (được xử lý bởi NoteActivity.java).
NoteActivity.java
(lớp chức năng)
Lọc danh sách ghi chép có tag phù hợp tag đã chọn. Cập nhật danh sách ghi chép lên giao diện
Các lớp trong ca sử dụng xóa ghi chép được mô tả trong bảng 3.24. Bảng này cho biết nhiệm vụ của các lớp trong việc xóa ghi chép.
Bảng 3.24. Các lớp trong ca sử dụng xóa ghi chép fragment_entry.xml
(giao diện)
Cung cấp giao diện xóa ghi chép (menu ngữ cảnh). Người dùng có thể bấm xóa ghi chép (được xử lý bởi
NoteActivity.java).
NoteActivity.java
(lớp chức năng)
Xác định ghi chép đang được xóa và gọi phương thức của lớp Note.java để nó tự xóa.
Cập nhật lại giao diện fragment_entry.xml.
Note.java
(lớp dữ liệu)
Xây dựng câu lệnh SQL để xóa khỏi cơ sở dữ liệu (dùng lớp
SqliteWrapper.java để thực thi).
SqliteWrapper.java
(lớp giao dịch)
Cung cấp chức năng giao dịch cơ sở dữ liệu cơ bản (truy vấn, cập nhật, xóa).
Các lớp trong ca sử dụng hiển thị tài liệu đính kèm được mô tả trong bảng 3.25. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc hiển thị tài liệu đính kèm.
Bảng 3.25. Các lớp trong ca sử dụng hiển thị tài liệu đính kèm fragment_content.xml
(giao diện)
Cung cấp giao diện hiển thị tài liệu đính kèm (một listview).
Danh sách tài liệu hiển thị (được xử lý bởi
NoteActivity.java).
NoteActivity.java
(lớp chức năng)
Đọc danh sách tài liệu đính kèm sử dụng lớp
Attachment.java.
Hiển thị lên giao diện fragment_content.xml.
Attachment.java
(lớp dữ liệu)
Xây dựng câu lệnh SQL để đọc danh sách tài liệu đính kèm (dùng lớp SqliteWrapper.java để thực thi).
SqliteWrapper.java
(lớp giao dịch)
Cung cấp chức năng giao dịch cơ sở dữ liệu cơ bản (truy vấn, cập nhật, xóa).
Các lớp trong ca sử dụng hiển thị hệ thống tập tin được mô tả trong bảng 3.26. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc hiển thị hệ thống tập tin trong bộ nhớ lưu trữ.
Bảng 3.26. Các lớp trong ca sử dụng hiển thị hệ thống tập tin fragment_file.xml
(giao diện)
Cung cấp giao diện hiển thị các tập tin trong hệ thống (một listview).
Danh sách tập tin hiển thị được xử lý bởi
FileFragment.java. FileFragment.java
(lớp chức năng)
Đọc danh sách tập tin từ hệ thống tập tin của Android. Hiển thị lên giao diện fragment_file.xml.
Các lớp trong ca sử dụng thay đổi thư mục được mô tả trong bảng 3.27. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc thay đổi thư mục hiển thị các tập tin trong bộ nhớ lưu trữ.
Bảng 3.27. Các lớp trong ca sử dụng thay đổi thƣ mục hiển thị tập tin fragment_file.xml
(giao diện)
Cung cấp giao diện điều hướng giữa các thư mục. Các nút điều hướng được xử lý bởi FileFragment.java. FileFragment.java
(lớp chức năng)
Đọc danh sách tập tin từ hệ thống tập tin của Android theo thư mục hiện tại.
Cập nhật lại giao diện fragment_file.xml.
Các lớp trong ca sử dụng hiển thị thông tin ghi chép được mô tả trong bảng 3.28. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc hiển thị thông tin ghi chép.
Bảng 3.28. Các lớp trong ca sử dụng hiển thị thông tin ghi chép edit_info_layout.xml
(giao diện)
Cung cấp giao diện hiển thị thông tin ghi chép (gồm tiêu đề, giảng viên, địa điểm, học kỳ, tag, lịch).
Thông tin hiển thị được xử lý bởi
EditInfoFragment.java. EditInfoFragment.java
(lớp chức năng)
Đọc thông tin ghi chép sử dụng lớp Note.java.
Hiển thị lên giao diện edit_info_layout.xml. Note.java
(lớp dữ liệu)
Cung cấp thông tin ghi chép.
Các lớp trong ca sử dụng hiển thị nội dung ghi chép được mô tả trong bảng 3.29. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc hiển thị nội dung ghi chép.
Bảng 3.29 Các lớp trong ca sử dụng hiển thị nội dung ghi chép fragment_content.xml
(giao diện)
Cung cấp giao diện hiển thị nội dung ghi chép. Nội dung ghi chép được xử lý bởi
FragmentContent.java. FragmentContent.java
(lớp chức năng)
Đọc nội dung ghi chép sử dụng lớp Note.java.
Hiển thị lên giao diện fragment_content.xml. Note.java
(lớp dữ liệu)
Cung cấp nội dung ghi chép.
Các lớp trong ca sử dụng đặt lịch thông báo được mô tả trong bảng 3.30. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc đặt lịch thông báo.
Bảng 3.30. Các lớp trong ca sử dụng đặt lịch thông báo edit_info_layout.xml
(giao diện)
Cung cấp giao diện hiển thị lịch, menu xóa và nút thêm lịch.
Lịch, menu xóa và nút thêm lịch được xử lý bởi
EditInfoFragment.java. EditInfoFragment.java
(lớp chức năng)
Đọc thông tin lịch sử dụng lớp Calendar.java.
Hiển thị lên giao diện edit_info_layout.xml.
Xử lý khi người dùng bấm nút thêm lịch thì sử dụng
Calendar.java để thêm lịch vào cơ sở dữ liệu và cập nhật giao diện edit_info_layout.xml. Sử dụng lớp
AlarmReceiver.java để đặt lịch thông báo.
AlarmReceiver.java
(lớp chức năng)
Đặt lịch thông báo (sử dụng lớp Calendar.java để lấy danh sách lịch).
Hiển thị thông báo khi đến lịch.
Calendar.java
(lớp dữ liệu)
Xây dựng câu lệnh SQL để truy vấn thông tin lịch (dùng
SqliteWrapper.java để thực thi). Cung cấp chức năng thêm lịch (dùng
SqliteWrapper.java để thực thi).
SqliteWrapper.java
(lớp giao dịch)
Cung cấp chức năng giao dịch cơ sở dữ liệu cơ bản (truy vấn, cập nhật, xóa).
Các lớp trong ca sử dụng tự động lưu thông tin ghi chép được mô tả trong bảng 3.31. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc tự động lưu thông tin ghi chép.
Bảng 3.31. Các lớp trong ca sử dụng tự động lƣu thông tin ghi chép edit_info_layout.xml
(giao diện)
Người học nhập thông tin ghi chép (tiêu đề, giảng viên, địa điểm, học kỳ, tag, lịch).
Thông tin ghi chép được lưu tự động bởi
EditInfoFragment.java. EditInfoFragment.java
(lớp chức năng)
Lưu thông tin ghi chép vào cơ sở dữ liệu sử dụng lớp
Note.java.
Cập nhật thông tin ghi chép trong giao diện nội dung
fragment_content.xml.
Cập nhật thông tin tiêu đề trong giao diện danh sách
fragment_entry.xml. Note.java
(lớp chức năng)
Cung cấp chức năng lưu thông tin ghi chép (sử dụng lớp
SqliteWrapper.java để thực thi).
SqliteWrapper.java
(lớp giao dịch)
Cung cấp chức năng giao dịch cơ sở dữ liệu cơ bản (truy vấn, cập nhật, xóa).
Các lớp trong ca sử dụng tự động lưu nội dung ghi chép được mô tả trong bảng 3.32. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc tự động lưu nội dung ghi chép.
Bảng 3.32. Các lớp trong ca sử dụng tự động lƣu nội dung ghi chép fragment_content.xml
(giao diện)
Cung cấp giao diện nhập nội dung ghi chép. Nội dung ghi chép được lưu tự động bởi
NoteActivity.java. NoteActivity.java
(lớp chức năng)
Lưu nội dung ghi chép vào cơ sở dữ liệu sử dụng lớp
Note.java. Note.java
(lớp chức năng)
Cung cấp chức năng lưu nội dung ghi chép (sử dụng lớp
SqliteWrapper.java để thực thi).
SqliteWrapper.java
(lớp giao dịch)
Cung cấp chức năng giao dịch cơ sở dữ liệu cơ bản (truy vấn, cập nhật, xóa).
Các lớp trong ca sử dụng mở tài liệu đính kèm được mô tả trong bảng 3.33. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc mở tài liệu đính kèm.
Bảng 3.33. Các lớp trong ca sử dụng mở tài liệu đính kèm fragment_content.xml
(giao diện)
Cung cấp giao diện hiển thị tài liệu đính kèm và menu ngữ cảnh mở tài liệu đính kèm.
Menu ngữ cảnh mở tài liệu đính kèm được xử lý bởi
NoteActivity.java. NoteActivity.java
(lớp chức năng)
Khởi động ứng dụng phù hợp để mở tài liệu đính kèm.
Các lớp trong ca sử dụng xóa tài liệu đính kèm được mô tả trong bảng 3.34. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc xóa tài liệu đính kèm.
Bảng 3.34. Các lớp trong ca sử dụng xóa tài liệu đính kèm fragment_content.xml
(giao diện)
Cung cấp giao diện hiển thị tài liệu đính kèm và menu ngữ cảnh xóa tài liệu đính kèm.
Menu ngữ cảnh xóa tài liệu đính kèm được xử lý bởi
NoteActivity.java. NoteActivity.java
(lớp chức năng)
Xóa tập tin tài liệu trong vùng lưu trữ của ứng dụng. Xóa thông tin tài liệu đính kèm sử dụng lớp
Attachment.java. Attachment.java
(lớp dữ liệu)
Cung cấp chức năng xóa tài liệu đính kèm sử dụng lớp
SqliteWrapper.java để thực thi.
SqliteWrapper.java
(lớp giao dịch)
Cung cấp chức năng giao dịch cơ sở dữ liệu cơ bản (truy vấn, cập nhật, xóa).
Các lớp trong ca sử dụng thêm tài liệu đính kèm được mô tả trong bảng 3.35. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc thêm tài liệu đính kèm vào ghi chép.
Bảng 3.35. Các lớp trong ca sử dụng thêm tài liệu đính kèm fragment_file.xml
(giao diện)
Cung cấp giao diện hiển thị hệ thống tập tin.
Tập tin được chọn được xử lý bởi FileFragment.java. fragment_content.xml
(giao diện)
Cung cấp giao diện hiển thị tài liệu đính kèm. Hiển thị tài liệu được xử lý bởi NoteActivity.java. FileFragment.java
(lớp chức năng)
Sử dụng lớp NoteActivity.java để thêm tài liệu đính kèm.
NoteActivity.java
(lớp chức năng)
Tạo tài liệu đính kèm sử dụng lớp Attachment.java.
Attachment.java
(lớp dữ liệu)
Cung cấp chức năng thêm tài liệu đính kèm vào cơ sở dữ liệu sử dụng lớp SqliteWrapper.java để thực thi.
SqliteWrapper.java
(lớp giao dịch)
Cung cấp chức năng giao dịch cơ sở dữ liệu cơ bản (truy vấn, cập nhật, xóa).
Các lớp trong ca sử dụng tóm tắt nội dung ghi chép được mô tả trong bảng 3.36. Bảng này cho biết chi tiết nhiệm vụ của các lớp trong việc tóm tắt nội dung ghi chép.
Bảng 3.36. Các lớp trong ca sử dụng tóm tắt nội dung ghi chép fragment_content.xml
(giao diện)
Cung cấp giao diện hiển thị nội dung ghi chép.
Nội dung ghi chép được tóm tắt bởi NoteActivity.java. fragment_entry.xml Cung cấp giao diện hiển thị tóm tắt nội dung ghi chép.
Tóm tắt được hiển thị bởi NoteActivity.java. NoteActivity.java
(lớp chức năng)
Sử dụng lớp TextSummarizer.java để tóm tắt nội dung ghi chép.
Sử dụng lớp Note.java để lưu lại nội dung tóm tắt.
TextSummarizer.java
(lớp chức năng)
Cung cấp chức năng tóm tắt nội dung ghi chép.
Note.java
(lớp dữ liệu)
Cung cấp chức năng lưu nội dung tóm tắt. Sử dụng lớp
SqliteWrapper.java để lưu lại nội dung tóm tắt.
SqliteWrapper.java
(lớp giao dịch)
Cung cấp chức năng giao dịch cơ sở dữ liệu cơ bản (truy vấn, cập nhật, xóa).