검색 기능
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 104번째.
챌린지
쉬움이전 레슨에서 대출 및 반납 기능이 있는 Library 클래스를 만들었습니다. 이제 사용자가 도서관의 소장 도서를 찾을 수 있도록 검색 기능을 추가해 보겠습니다.
사용자가 도서를 찾을 수 있도록 돕는 세 가지 새로운 검색 메서드를 Library 클래스에 추가하여 기능을 강화합니다:
book.dart: 기존Book클래스를 변경하지 않고 그대로 유지합니다.user.dart: 기존User클래스를 변경하지 않고 그대로 유지합니다.library.dart:Library클래스에 세 가지 검색 메서드를 추가합니다:searchByTitle(String query)- 제목에 쿼리 문자열이 포함된 모든 도서를 포함하는List<Book>을 반환합니다 (대소문자 구분 없음).searchByAuthor(String query)- 저자 이름에 쿼리 문자열이 포함된 모든 도서를 포함하는List<Book>을 반환합니다 (대소문자 구분 없음).getAvailableBooks()- 현재 대출 가능한 도서만 포함하는List<Book>을 반환합니다.
main.dart: 검색 기능을 시연합니다.Library를 생성하고 다음 네 권의 도서를 추가합니다: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)를 등록하고 첫 번째 도서를 대출하게 합니다. 그런 다음:- 제목에
pragmatic이 포함된 도서를 검색하고Title search 'pragmatic': X found를 출력합니다 (X는 검색된 수). - 저자가
david인 도서를 검색하고Author search 'david': X found를 출력합니다. - 대출 가능한 도서를 가져와
Available books: X를 출력합니다. - 각 대출 가능한 도서를 각각 한 줄씩 출력합니다.
예상 출력:
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 Hunt직접 해보기
import 'book.dart';
import 'user.dart';
import 'library.dart';
void main() {
// Library 생성
Library library = Library();
// TODO: 도서관에 책 네 권 추가:
// 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: 사용자 등록 (U001, Alice)
// TODO: 사용자가 첫 번째 책을 대출하도록 함
// TODO: 제목에 'pragmatic'이 포함된 도서 검색
// 출력: Title search 'pragmatic': X found
// TODO: 저자 'david'로 도서 검색
// 출력: Author search 'david': X found
// TODO: 대출 가능한 도서 목록을 가져와서 출력: Available books: X
// TODO: 대출 가능한 각 도서를 개별 줄에 출력
}