대출 시스템
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 103번째.
챌린지
쉬움이전 레슨에서 기본 속성을 가진 Book 및 User 클래스를 생성했습니다. 이제 전체 대출 프로세스를 관리하는 Library 클래스를 사용하여 적절한 대출 시스템을 구축할 차례입니다.
새 파일을 만들고 기존 파일을 업데이트하여 대출 로직을 구현합니다:
book.dart:isbn,title,author,isAvailable및toString()이 포함된 기존Book클래스를 유지합니다.user.dart:id,name,borrowedBooks및toString()이 포함된 기존User클래스를 유지합니다.library.dart: 도서와 사용자를 관리하는 새로운Library클래스를 만듭니다. 이 클래스에는books와users를 위한 두 개의 리스트가 있어야 합니다. 다음 메서드들을 포함하세요:addBook(Book book)- 도서관 컬렉션에 도서를 추가합니다.registerUser(User user)- 도서관에 사용자를 등록합니다.borrowBook(String isbn, String userId)- 도서와 사용자를 찾은 후, 도서가 존재하고 대출 가능하며 사용자가 존재하는 경우, 도서를 대출 불가능으로 표시하고 사용자의 대출 도서 목록에 추가한 뒤userId borrowed "title"을 출력합니다. 도서가 없으면Book not found를 출력합니다. 도서가 대출 가능하지 않으면Book not available을 출력합니다. 사용자가 없으면User not found를 출력합니다.returnBook(String isbn, String userId)- 도서와 사용자를 찾은 후, 둘 다 존재하고 사용자가 해당 도서를 가지고 있는 경우, 도서를 대출 가능으로 표시하고 사용자의 대출 도서 목록에서 제거한 뒤userId returned "title"을 출력합니다. 도서가 없으면Book not found를 출력합니다. 사용자가 없으면User not found를 출력합니다.
main.dart: 모든 파일을 임포트하고 대출 시스템을 시연합니다.Library를 생성하고, 두 권의 도서(978-0-13-468599-1,The Pragmatic Programmer,David Thomas및978-0-596-51774-8,JavaScript: The Good Parts,Douglas Crockford)를 추가하고, 한 명의 사용자(U001,Alice Johnson)를 등록합니다. 그런 다음:- Alice에게 첫 번째 도서를 대출합니다.
- 동일한 도서를 다시 대출하려고 시도합니다 (실패해야 함).
- Alice에게 두 번째 도서를 대출합니다.
- Alice를 출력하여 대출된 도서 수를 확인합니다.
- 첫 번째 도서를 반납합니다.
- Alice를 다시 출력하여 업데이트된 도서 수를 확인합니다.
예상 출력:
U001 borrowed "The Pragmatic Programmer"
Book not available
U001 borrowed "JavaScript: The Good Parts"
User U001: Alice Johnson (2 books borrowed)
U001 returned "The Pragmatic Programmer"
User U001: Alice Johnson (1 books borrowed)직접 해보기
import 'book.dart';
import 'user.dart';
import 'library.dart';
void main() {
// TODO: Library 인스턴스 생성
// TODO: 두 권의 책 생성:
// - Book 1: isbn '978-0-13-468599-1', title 'The Pragmatic Programmer', author 'David Thomas'
// - Book 2: isbn '978-0-596-51774-8', title 'JavaScript: The Good Parts', author 'Douglas Crockford'
// TODO: 두 책을 도서관에 추가
// TODO: id가 'U001'이고 이름이 'Alice Johnson'인 사용자 생성
// TODO: 사용자를 도서관에 등록
// TODO: Alice가 첫 번째 책을 대출
// TODO: 같은 책을 다시 대출 시도 ('Book not available'과 함께 실패해야 함)
// TODO: Alice가 두 번째 책을 대출
// TODO: Alice를 출력하여 대출 권수 확인
// TODO: 첫 번째 책 반납
// TODO: Alice를 다시 출력하여 업데이트된 권수 확인
}