도서 및 사용자 클래스
Coddy PHP 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 91개 중 83번째.
챌린지
쉬움Book 및 User 클래스를 만들어 Library Management System의 기반을 구축해 보겠습니다. 이러한 핵심 도메인 객체는 함께 작동하여 라이브러리 작업을 관리합니다.
코드를 세 개의 파일로 구성합니다:
Book.php: 라이브러리 도서를 추적하는Book클래스를 만듭니다. 도서에는 생성자 프로모션을 통해 설정되는 세 개의 readonly 프로퍼티인isbn,title,author가 있어야 합니다.true로 시작하는 private$isAvailable프로퍼티를 포함합니다. 다음 세 가지 메서드를 추가합니다:isAvailable(): bool: availability 상태를 반환합니다markAsBorrowed(): void: availability를 false로 설정합니다markAsReturned(): void: availability를 true로 설정합니다
User.php: Book 파일을 포함하고 라이브러리 회원을 나타내는User클래스를 만듭니다. 사용자에게는 생성자 프로모션을 통한 두 개의 readonly 프로퍼티인id(int)와name(string)이 있어야 합니다. private array$borrowedBooks(initially empty)와3으로 설정된 constantMAX_BOOKS를 포함합니다. 다음 메서드를 추가합니다:getBorrowedBooks(): array: borrowed books array를 반환합니다canBorrow(): bool: 사용자가 MAX_BOOKS보다 fewer한 도서를 borrowed한 경우 true를 반환합니다addBook(Book $book): void: 도서를 borrowed array에 추가합니다removeBook(string $isbn): void:array_filter를 사용하여 ISBN으로 도서를 제거합니다
main.php: User 파일을 포함하고 클래스를 실제로 사용합니다. 네 가지 inputs를 받습니다: 사용자 ID, 사용자 이름, 도서 ISBN, 도서 제목입니다 (author는"Unknown"이 됩니다).제공된 값으로
User와Book을 Create합니다. 먼저 사용자가 initially 도서를 borrow할 수 있는지 출력한 다음, 사용자가 도서를 borrow하도록 합니다 (도서를 borrowed로 Mark하고 사용자에게 추가). 마지막으로 도서의 availability와 borrowed books의 count를 출력합니다.출력 Format:
Can borrow: [yes/no] Book available: [yes/no] Books borrowed: [count]
캡슐화가 내부 상태를 어떻게 보호하는지 확인하세요. 도서의 availability는 전용 메서드를 통해서만 변경되고, 사용자의 borrowed books는 제어된 access를 통해 관리됩니다. 이 기반은 다음에 구축할 borrow 시스템을 지원합니다.
직접 해보기
<?php
require_once 'User.php';
// 입력 읽기
$userId = intval(trim(fgets(STDIN)));
$userName = trim(fgets(STDIN));
$bookIsbn = trim(fgets(STDIN));
$bookTitle = trim(fgets(STDIN));
$bookAuthor = "Unknown";
// TODO: 제공된 id와 name으로 User 객체 생성
// TODO: 제공된 isbn, title, author로 Book 객체 생성
// TODO: 사용자가 처음에 대출할 수 있는지 출력
// Format: "Can borrow: yes" or "Can borrow: no"
// TODO: 사용자가 책을 대출하게 하기:
// - 책을 대출됨으로 표시
// - 사용자의 대출 도서에 책 추가
// TODO: 책의 이용 가능 여부 출력
// Format: "Book available: yes" or "Book available: no"
// TODO: 대출한 책의 수 출력
// Format: "Books borrowed: [count]"
?>객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 PHP 컴파일러