Menu
Coddy logo textTech

대출 시스템

Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 103번째.

challenge icon

챌린지

쉬움

이전 레슨에서 기본 속성을 가진 BookUser 클래스를 생성했습니다. 이제 전체 대출 프로세스를 관리하는 Library 클래스를 사용하여 적절한 대출 시스템을 구축할 차례입니다.

새 파일을 만들고 기존 파일을 업데이트하여 대출 로직을 구현합니다:

  • book.dart: isbn, title, author, isAvailabletoString()이 포함된 기존 Book 클래스를 유지합니다.
  • user.dart: id, name, borrowedBookstoString()이 포함된 기존 User 클래스를 유지합니다.
  • library.dart: 도서와 사용자를 관리하는 새로운 Library 클래스를 만듭니다. 이 클래스에는 booksusers를 위한 두 개의 리스트가 있어야 합니다. 다음 메서드들을 포함하세요:
    • 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 Thomas978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford)를 추가하고, 한 명의 사용자(U001, Alice Johnson)를 등록합니다. 그런 다음:
    1. Alice에게 첫 번째 도서를 대출합니다.
    2. 동일한 도서를 다시 대출하려고 시도합니다 (실패해야 함).
    3. Alice에게 두 번째 도서를 대출합니다.
    4. Alice를 출력하여 대출된 도서 수를 확인합니다.
    5. 첫 번째 도서를 반납합니다.
    6. 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를 다시 출력하여 업데이트된 권수 확인
}

객체 지향 프로그래밍의 모든 레슨