Menu
Coddy logo textTech

Klasy książki i użytkownika

Część sekcji Programowanie obiektowe ścieżki PHP w Coddy. Lekcja 83 z 91.

challenge icon

Wyzwanie

Łatwy

Zbudujmy podstawy naszego systemu zarządzania biblioteką, tworząc klasy Book i User. Te kluczowe obiekty domenowe będą współpracować przy zarządzaniu operacjami biblioteki.

Rozmieścisz kod w trzech plikach:

  • Book.php: Utwórz klasę Book, która śledzi książki w bibliotece. Twoja książka powinna mieć trzy właściwości tylko do odczytu ustawiane przez promocję konstruktora: isbn, title i author. Dodaj prywatną właściwość $isAvailable, której początkową wartością jest true. Dodaj trzy metody:
    • isAvailable(): bool: zwraca status dostępności
    • markAsBorrowed(): void: ustawia dostępność na false
    • markAsReturned(): void: ustawia dostępność na true
  • User.php: Dołącz plik Book i utwórz klasę User reprezentującą członków biblioteki. Twój użytkownik powinien mieć dwie właściwości tylko do odczytu ustawiane przez promocję konstruktora: id (int) i name (string). Dodaj prywatną tablicę $borrowedBooks (początkowo pustą) oraz stałą MAX_BOOKS ustawioną na 3. Dodaj następujące metody:
    • getBorrowedBooks(): array: zwraca tablicę wypożyczonych książek
    • canBorrow(): bool: zwraca true, jeśli użytkownik wypożyczył mniej niż MAX_BOOKS
    • addBook(Book $book): void: dodaje książkę do tablicy wypożyczonych książek
    • removeBook(string $isbn): void: usuwa książkę na podstawie numeru ISBN przy użyciu array_filter
  • main.php: Dołącz plik User i ożyw swoje klasy. Otrzymasz cztery dane wejściowe: identyfikator użytkownika, imię użytkownika, numer ISBN książki i jej tytuł (autorem będzie "Unknown").

    Utwórz obiekt User i obiekt Book z podanymi wartościami. Wypisz, czy użytkownik może początkowo wypożyczyć książkę, a następnie wypożycz ją użytkownikowi (oznacz ją jako wypożyczoną i dodaj do użytkownika). Na koniec wypisz dostępność książki oraz liczbę wypożyczonych książek.

    Format wyjściowy:

    Can borrow: [yes/no]
    Book available: [yes/no]
    Books borrowed: [count]

Zwróć uwagę, jak enkapsulacja chroni stan wewnętrzny: dostępność książki zmienia się wyłącznie za pomocą dedykowanych metod, a wypożyczonymi książkami użytkownika zarządza się poprzez kontrolowany dostęp. Te podstawy posłużą do zbudowania systemu wypożyczania, który omówimy w następnej lekcji.

Spróbuj swoich sił

<?php

require_once 'User.php';

// Odczytaj dane wejściowe
$userId = intval(trim(fgets(STDIN)));
$userName = trim(fgets(STDIN));
$bookIsbn = trim(fgets(STDIN));
$bookTitle = trim(fgets(STDIN));
$bookAuthor = "Unknown";

// TODO: Utwórz obiekt User z podanymi id i nazwą

// TODO: Utwórz obiekt Book z podanymi isbn, tytułem i autorem

// TODO: Wyświetl, czy użytkownik może początkowo wypożyczyć książkę
// Format: "Can borrow: yes" lub "Can borrow: no"

// TODO: Spraw, aby użytkownik wypożyczył książkę:
// - Oznacz książkę jako wypożyczoną
// - Dodaj książkę do listy książek wypożyczonych przez użytkownika

// TODO: Wyświetl dostępność książki
// Format: "Book available: yes" lub "Book available: no"

// TODO: Wyświetl liczbę wypożyczonych książek
// Format: "Books borrowed: [count]"

?>

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator PHP online