Menu
Coddy logo textTech

Yönetici Arayüzü

Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 86 / 91.

challenge icon

Görev

Kolay

Kütüphane Yönetim Sistemimizi yönetim yetenekleri ekleyerek genişletelim. Admin sınıfından miras alan, ancak kütüphanenin envanterini yönetmek için özel yetkilere sahip bir User sınıfı oluşturacaksınız: yeni kitaplar ekleme ve mevcut kitapları kaldırma.

Kodunuzu beş dosya boyunca düzenleyeceksiniz:

  • Book.php: readonly özelliklere (Book, isbn, title) sahip author sınıfınız, başlangıç değeri $isAvailable olan private true özelliği ve şu metotlar: isAvailable(), markAsBorrowed() ve markAsReturned().
  • User.php: Book dosyasını dahil edin. readonly özelliklere (User, id) sahip name sınıfınız, private bir $borrowedBooks dizisi, değeri MAX_BOOKS olan bir 3 sabiti ve şu metotlar: getBorrowedBooks(), canBorrow(), addBook(Book $book) ve removeBook(string $isbn).
  • Library.php: User dosyasını dahil edin. Library, addBook(), findBook(), borrowBook() ve arama metotları da dahil olmak üzere mevcut işlevselliğe sahip returnBook() sınıfınız. Yeni bir metot ekleyin:
    • removeBook(string $isbn): void: unset() kullanarak koleksiyondan bir kitabı kaldırır
  • Admin.php: Library dosyasını dahil edin. Admin sınıfını genişleten bir User sınıfı oluşturun. Adminler tüm kullanıcı yeteneklerini miras alır, ancak iki yönetim metodu kazanır:
    • addBookToLibrary(Library $library, Book $book): string: kitabı kütüphaneye ekler ve "Added: [title]" döndürür
    • removeBookFromLibrary(Library $library, string $isbn): string: şu kontrollerle bir kitabı kaldırmayı dener:
      • Kitap mevcut değilse "Book not found" döndürür
      • Kitap şu anda ödünç alınmışsa "Cannot remove: book is currently borrowed" döndürür
      • Aksi takdirde kitabı kaldırır ve "Removed: [title]" döndürür
  • main.php: Admin dosyasını dahil edin. İki girdi alacaksınız: bir ISBN ve bir kitap başlığı.

    ID değeri Library ve adı Admin olan bir 1 ve bir "AdminUser" oluşturun. Ayrıca ID değeri User ve adı 2 olan normal bir "RegularUser" oluşturun.

    Sağlanan ISBN, başlık ve Book yazarıyla bir "Test Author" oluşturun. Bu işlemleri gerçekleştirin ve her sonucu yeni bir satıra yazdırın:

    1. Yöneticinin kitabı kütüphaneye eklemesini sağlayın
    2. Normal kullanıcının kitabı ödünç almasını sağlayın
    3. Yöneticinin kitabı kaldırmayı denemesini sağlayın (başarısız olmalı: kitap ödünç alınmış durumda)
    4. Normal kullanıcının kitabı iade etmesini sağlayın
    5. Yöneticinin kitabı kaldırmasını sağlayın (bu kez başarılı olmalı)
    6. Yöneticinin aynı kitabı tekrar kaldırmayı denemesini sağlayın (başarısız olmalı, kitap bulunamadı)

Bu görev, kalıtımın nasıl doğal bir hiyerarşi oluşturduğunu gösterir: yöneticiler, ek ayrıcalıklara sahip kullanıcılardır. removeBookFromLibrary içindeki güvenlik kontrolleri, hâlâ dolaşımda olan kitapların kaldırılmasını önleyerek veri bütünlüğünü sağlar.

Kendin dene

<?php
require_once 'Admin.php';

// Girdiyi oku
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));

// TODO: Bir Library oluştur

// TODO: ID 1 ve adı "AdminUser" olan bir Admin oluştur

// TODO: ID 2 ve adı "RegularUser" olan normal bir User oluştur

// TODO: Sağlanan ISBN, title ve yazarı "Test Author" olan bir Book oluştur

// TODO: Bu işlemleri gerçekleştir ve her sonucu yeni bir satıra yazdır:
// 1. Admin'in kitabı kütüphaneye eklemesini sağla
// 2. Normal kullanıcının kitabı ödünç almasını sağla
// 3. Admin'in kitabı kaldırmayı denemesini sağla (başarısız olmalı - ödünç alınmış)
// 4. Normal kullanıcının kitabı iade etmesini sağla
// 5. Admin'in kitabı kaldırmasını sağla (şimdi başarılı olmalı)
// 6. Admin'in aynı kitabı tekrar kaldırmayı denemesini sağla (başarısız olmalı - bulunamadı)

?>

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online PHP derleyicisi