Menu
Coddy logo textTech

Classes Livre et Utilisateur

Fait partie de la section Programmation Orientée Objet du Journey PHP de Coddy. Leçon 83 sur 91.

challenge icon

Défi

Facile

Construisons les fondations de notre système de gestion de bibliothèque en créant les classes Book et User. Ces objets métier fondamentaux fonctionneront ensemble pour gérer les opérations de la bibliothèque.

Vous organiserez votre code sur trois fichiers :

  • Book.php : créez une classe Book qui suit les livres de la bibliothèque. Votre livre doit avoir trois propriétés en lecture seule définies via la promotion des paramètres du constructeur : isbn, title et author. Incluez une propriété privée $isAvailable qui commence avec la valeur true. Ajoutez trois méthodes :
    • isAvailable(): bool : renvoie l’état de disponibilité
    • markAsBorrowed(): void : définit la disponibilité sur false
    • markAsReturned(): void : définit la disponibilité sur true
  • User.php : incluez le fichier Book et créez une classe User représentant les membres de la bibliothèque. Votre utilisateur doit avoir deux propriétés en lecture seule via la promotion des paramètres du constructeur : id (int) et name (string). Incluez un tableau privé $borrowedBooks (initialement vide) et une constante MAX_BOOKS définie à 3. Ajoutez ces méthodes :
    • getBorrowedBooks(): array : renvoie le tableau des livres empruntés
    • canBorrow(): bool : renvoie true si l’utilisateur a emprunté moins de MAX_BOOKS livres
    • addBook(Book $book): void : ajoute un livre au tableau des livres empruntés
    • removeBook(string $isbn): void : supprime un livre par ISBN en utilisant array_filter
  • main.php : incluez le fichier User et donnez vie à vos classes. Vous recevrez quatre entrées : un identifiant utilisateur, le nom de l’utilisateur, l’ISBN du livre et le titre du livre (l’auteur sera "Unknown").

    Créez un User et un Book avec les valeurs fournies. Affichez si l’utilisateur peut initialement emprunter un livre, puis faites-lui emprunter le livre (marquez-le comme emprunté et ajoutez-le à l’utilisateur). Enfin, affichez la disponibilité du livre et le nombre de livres empruntés.

    Format de sortie :

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

Remarquez comment l’encapsulation protège l’état interne : la disponibilité d’un livre ne change que par l’intermédiaire de méthodes dédiées, et les livres empruntés par un utilisateur sont gérés grâce à un accès contrôlé. Cette base permettra de prendre en charge le système d’emprunt que nous allons construire ensuite.

Essayez vous-même

<?php

require_once 'User.php';

// Lire les entrées
$userId = intval(trim(fgets(STDIN)));
$userName = trim(fgets(STDIN));
$bookIsbn = trim(fgets(STDIN));
$bookTitle = trim(fgets(STDIN));
$bookAuthor = "Unknown";

// TODO: Créer un objet User avec l'id et le name fournis

// TODO: Créer un objet Book avec l'isbn, le title et l'author fournis

// TODO: Afficher si l'utilisateur peut emprunter initialement
// Format: "Can borrow: yes" or "Can borrow: no"

// TODO: Faire emprunter le livre par l'utilisateur :
// - Marquer le livre comme emprunté
// - Ajouter le livre aux livres empruntés de l'utilisateur

// TODO: Afficher la disponibilité du livre
// Format: "Book available: yes" or "Book available: no"

// TODO: Afficher le nombre de livres empruntés
// Format: "Books borrowed: [count]"

?>

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur PHP en ligne