대출 시스템
Coddy PHP 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 91개 중 84번째.
챌린지
쉬움Library 클래스를 만들어 모든 대출 작업을 조정함으로써 도서관 관리 시스템을 실제로 구현해 봅시다. 이 중앙 조정자는 도서 collection을 관리하고 도서관이 원활하게 운영되도록 하는 규칙을 적용합니다.
코드를 네 개의 파일로 구성합니다:
Book.php: 이전 레슨의Book클래스입니다. readonly 속성(isbn,title,author),true로 시작하는 private$isAvailable속성, 그리고 다음 메서드를 포함합니다:isAvailable(),markAsBorrowed(),markAsReturned().User.php: Book 파일을 포함합니다. readonly 속성(id,name), private$borrowedBooksarray,3인MAX_BOOKS상수, 그리고 다음 메서드를 포함하는User클래스입니다:getBorrowedBooks(),canBorrow(),addBook(Book $book),removeBook(string $isbn).Library.php: User 파일을 포함합니다. 도서 collection을 관리하는Library클래스를 Create합니다. library에는 다음 항목이 있어야 합니다:- ISBN으로 indexed된 책을 저장하는 private
$booksarray addBook(Book $book): void: collection에 책을 추가findBook(string $isbn): ?Book: 책을 반환하거나 찾지 못하면 null을 반환borrowBook(User $user, string $isbn): string: 대출을 검증하고 처리하며 적절한 메시지를 반환returnBook(User $user, string $isbn): string: 반납을 처리하고 책과 사용자의 상태를 모두 업데이트
borrowBook메서드는 다음 세 가지 conditions을 순서대로 Check하고 다음의 정확한 메시지를 반환해야 합니다:"Book not found": 책이 exist하지 않는 경우"Book is not available": already 대출된 경우"Borrowing limit reached": 사용자가 3권의 책을 has 경우"Successfully borrowed: [title]": 성공한 경우
returnBook메서드는 책이 exist하지 않으면"Book not found"를 반환하고, 성공하면"Successfully returned: [title]"을 반환해야 합니다.- ISBN으로 indexed된 책을 저장하는 private
main.php: Library 파일을 포함합니다. ISBN과 책 제목, 두 개의 입력을 받습니다.Library, ID1과 이름"Alice"을 가진User, 그리고 제공된 ISBN과 제목 및 author"Unknown"을 가진Book을 Create합니다. 책을 library에 추가한 다음, 다음 작업을 수행하고 각 결과를 새 line에 출력합니다:- 책을 borrow
- 같은 책을 다시 borrow 시도
- 책을 반납
- 책을 한 번 더 borrow
이 challenge는 Library 클래스가 business logic을 중앙에서 관리하는 방식을 보여 줍니다. conditions을 검증하고, Book 및 User 객체 전체의 상태 변경을 조정하며, 각 작업에 대해 의미 있는 피드백을 반환합니다.
직접 해보기
<?php
require_once 'Library.php';
// 입력 읽기
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));
// TODO: Library 인스턴스 생성
// TODO: ID 1과 이름 "Alice"인 User 생성
// TODO: 제공된 ISBN, title, 저자 "Unknown"으로 Book 생성
// TODO: 책을 library에 추가
// TODO: 다음 작업들을 수행하고 각 결과를 새 줄에 출력:
// 1. 책 대출
// 2. 같은 책을 다시 대출 시도
// 3. 책 반납
// 4. 책을 한 번 더 대출
?>객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 PHP 컴파일러