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 bases de notre système de gestion de bibliothèque en créant les classes Book et User. Ces objets de domaine centraux travailleront 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 (readonly) définies via la promotion de constructeur : isbn, title, et author. Incluez une propriété privée $isAvailable qui commence à true. Ajoutez trois méthodes :
    • isAvailable(): bool — retourne le statut de disponibilité
    • markAsBorrowed(): void — définit la disponibilité à false
    • markAsReturned(): void — définit la disponibilité à 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 de constructeur : id (int) et name (string). Incluez un tableau privé $borrowedBooks (initialement vide) et une constante MAX_BOOKS fixée à 3. Ajoutez ces méthodes :
    • getBorrowedBooks(): array — retourne le tableau des livres empruntés
    • canBorrow(): bool — retourne true si l'utilisateur a moins de MAX_BOOKS empruntés
    • addBook(Book $book): void — ajoute un livre au tableau des emprunts
    • 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 ID utilisateur, un nom d'utilisateur, un ISBN de livre et un titre de livre (l'auteur sera "Unknown").

    Créez un User et un Book avec les valeurs fournies. Affichez si l'utilisateur peut emprunter initialement, puis faites en sorte que l'utilisateur emprunte 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 des méthodes dédiées, et les livres empruntés d'un utilisateur sont gérés par un accès contrôlé. Cette base soutiendra le système d'emprunt que nous construirons 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 nom fournis

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

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

// TODO: Faire en sorte que l'utilisateur emprunte le livre :
// - 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" ou "Book available: no"

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

?>

Toutes les leçons de Programmation Orientée Objet