Chức năng tìm kiếm
Thuộc phần Lập trình hướng đối tượng trong hành trình Dart của Coddy. Bài học 104 trên 110.
Thử thách
DễTrong bài học trước, bạn đã xây dựng lớp Library có chức năng mượn và trả sách. Bây giờ, hãy thêm khả năng tìm kiếm để người dùng có thể tìm sách trong bộ sưu tập của thư viện.
Bạn sẽ bổ sung ba phương thức tìm kiếm mới vào lớp Library để giúp người dùng tìm sách:
book.dart: Giữ nguyên lớpBookhiện có.user.dart: Giữ nguyên lớpUserhiện có.library.dart: Thêm ba phương thức tìm kiếm vào lớpLibrary:searchByTitle(String query)- trả về mộtList<Book>chứa tất cả sách có tiêu đề chứa chuỗi truy vấn, không phân biệt chữ hoa chữ thườngsearchByAuthor(String query)- trả về mộtList<Book>chứa tất cả sách có tên tác giả chứa chuỗi truy vấn, không phân biệt chữ hoa chữ thườnggetAvailableBooks()- trả về mộtList<Book>chỉ chứa những sách hiện có thể cho mượn
main.dart: Minh họa chức năng tìm kiếm. Tạo mộtLibraryvà thêm bốn cuốn sách:978-0-13-468599-1,The Pragmatic Programmer,David Thomas978-0-596-51774-8,JavaScript: The Good Parts,Douglas Crockford978-0-13-235088-4,Clean Code,Robert Martin978-0-20-161622-4,The Pragmatic Programmer,Andrew Hunt
U001,Alice) và để người đó mượn cuốn sách đầu tiên. Sau đó:- Tìm sách có
pragmatictrong tiêu đề và in raTitle search 'pragmatic': X found, trong đó X là số lượng - Tìm sách của tác giả
davidvà in raAuthor search 'david': X found - Lấy danh sách sách hiện có thể cho mượn và in ra
Available books: X - In từng cuốn sách hiện có thể cho mượn trên một dòng riêng
Đầu ra mong đợi:
U001 borrowed "The Pragmatic Programmer"
Title search 'pragmatic': 2 found
Author search 'david': 1 found
Available books: 3
[978-0-596-51774-8] JavaScript: The Good Parts by Douglas Crockford
[978-0-13-235088-4] Clean Code by Robert Martin
[978-0-20-161622-4] The Pragmatic Programmer by Andrew HuntTự làm thử
import 'book.dart';
import 'user.dart';
import 'library.dart';
void main() {
// Tạo một Library
Library library = Library();
// TODO: Thêm bốn cuốn sách vào thư viện:
// 1. 978-0-13-468599-1, The Pragmatic Programmer, David Thomas
// 2. 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford
// 3. 978-0-13-235088-4, Clean Code, Robert Martin
// 4. 978-0-20-161622-4, The Pragmatic Programmer, Andrew Hunt
// TODO: Đăng ký một người dùng (U001, Alice)
// TODO: Cho người dùng mượn cuốn sách đầu tiên
// TODO: Tìm sách có 'pragmatic' trong tên sách
// In ra: Title search 'pragmatic': X được tìm thấy
// TODO: Tìm sách của tác giả 'david'
// In ra: Author search 'david': X được tìm thấy
// TODO: Lấy danh sách sách hiện có và in ra: Available books: X
// TODO: In mỗi cuốn sách hiện có trên một dòng riêng
}
Tất cả bài học trong Lập trình hướng đối tượng
1Nền tảng về lập trình hướng đối tượng
Tệp bên ngoàiThư viện và câu lệnh importGiới thiệu về lập trình hướng đối tượngLớp và đối tượngTừ khóa thisPhương thứcBiến thể hiệnKiến thức cơ bản về hàm khởi tạoÔn tập: Máy tính đơn giản4An toàn với giá trị null
Giới thiệu về an toàn với giá trị nullCó thể null và không thể nullToán tử ? và !Từ khóa late và an toàn với giá trị nullToán tử xử lý nullAn toàn với giá trị null trong lớpÔn tập: hệ thống hồ sơ người dùng7Lớp trừu tượng và interface
Lớp trừu tượngPhương thức trừu tượngInterface trong DartInterface ngầm địnhTriển khai và kế thừaNhiều interfaceÔn tập: Máy tính hình10Bộ sưu tập và kiểu tổng quát
Tổng quan về List, Set và MapBộ sưu tập an toàn về kiểuLớp tổng quátPhương thức tổng quátRàng buộc kiểu tổng quátIterable và IteratorÔn tập: Lưu trữ tổng quát13Khái niệm OOP nâng cao
Composition và kế thừaPhương thức mở rộngLớp có thể gọiLớp sealed (Dart 3)Records (Dart 3)Mẫu và đối sánh (3.0)Enum có phương thức16Dự án: Quản lý thư viện
Tổng quan dự ánLớp sách và người dùng2Hàm khởi tạo trong Dart
Hàm khởi tạo mặc địnhHàm khởi tạo có tênDanh sách khởi tạoHàm khởi tạo hằng sốHàm khởi tạo nhà máyHàm khởi tạo chuyển hướngÔn tập: Trình tạo hình dạng5Đóng gói
Thành viên công khai và riêng tưQuy ước tiền tố _Tính riêng tư ở cấp thư việnTìm hiểu sâu về getter và setterChe giấu thông tinÔn tập: hồ sơ học sinh8Mixin
Giới thiệu về MixinTạo MixinSử dụng nhiều MixinTừ khóa on trong MixinMixin và kế thừaMixin và giao diệnÔn tập: hệ thống động vật3Thuộc tính của lớp
Thành viên instance và thành viên tĩnhTrường final và constBiến latePhương thức và trường tĩnhGetter và setterÔn tập: trình quản lý tài khoản ngân hàng6Kế thừa
Kế thừa cơ bảnTừ khóa superGhi đè phương thứcChú thích @overrideTừ khóa lớp finalHàm khởi tạo và kế thừaÔn tập: phân cấp nhân viên9Đa hình
Khái niệm cơ bản về đa hìnhĐa hình qua giao diệnKiểm tra kiểu lúc chạyToán tử is và asTừ khóa hiệp biếnÔn tập: Bộ xử lý thanh toánTự luyện tập: Trình biên dịch Dart online