Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

نظام الاستعارة

جزء من قسم Object Oriented Programming في رحلة Dart على Coddy — الدرس 103 من 110.

challenge icon

التحدي

سهل

في الدرس السابق، قمت بإنشاء فئتي Book و User بخصائص أساسية. الآن حان الوقت لبناء نظام استعارة مناسب باستخدام فئة Library التي تدير عملية الاستعارة بالكامل.

ستقوم بإنشاء ملف جديد وتحديث ملفاتك الحالية لتنفيذ منطق الاستعارة:

  • book.dart: احتفظ بفئة Book الحالية مع isbn، و title، و author، و isAvailable، و toString().
  • user.dart: احتفظ بفئة User الحالية مع id، و name، و borrowedBooks، و toString().
  • library.dart: أنشئ فئة Library جديدة تدير الكتب والمستخدمين. يجب أن تحتوي على قائمتين: واحدة لـ books وأخرى لـ users. قم بتضمين طرق (methods) لـ:
    • addBook(Book book) - يضيف كتاباً إلى مجموعة المكتبة
    • registerUser(User user) - يسجل مستخدماً في المكتبة
    • borrowBook(String isbn, String userId) - يبحث عن الكتاب والمستخدم، فإذا كان الكتاب موجوداً، ومتاحاً، والمستخدم موجوداً، يقوم بتمييز الكتاب كغير متاح، ويضيفه إلى الكتب المستعارة للمستخدم، ويطبع userId borrowed "title". إذا لم يكن الكتاب موجوداً، اطبع Book not found. إذا لم يكن الكتاب متاحاً، اطبع Book not available. إذا لم يكن المستخدم موجوداً، اطبع User not found.
    • returnBook(String isbn, String userId) - يبحث عن الكتاب والمستخدم، فإذا كان كلاهما موجوداً وكان الكتاب بحوزة المستخدم، يقوم بتمييز الكتاب كمتاح، ويزيله من قائمة الكتب المستعارة للمستخدم، ويطبع userId returned "title". إذا لم يكن الكتاب موجوداً، اطبع Book not found. إذا لم يكن المستخدم موجوداً، اطبع User not found.
  • main.dart: استورد جميع ملفاتك واستعرض نظام الاستعارة. أنشئ Library، وأضف كتابين (978-0-13-468599-1، The Pragmatic Programmer، David Thomas و 978-0-596-51774-8، JavaScript: The Good Parts، Douglas Crockford)، وسجل مستخدماً واحداً (U001، Alice Johnson). ثم:
    1. استعر الكتاب الأول لـ Alice
    2. حاول استعارة نفس الكتاب مرة أخرى (يجب أن يفشل)
    3. استعر الكتاب الثاني لـ Alice
    4. اطبع Alice لإظهار عدد الكتب المستعارة لديها
    5. أعد الكتاب الأول
    6. اطبع Alice مرة أخرى لإظهار العدد المحدث

المخرجات المتوقعة:

U001 borrowed "The Pragmatic Programmer"
Book not available
U001 borrowed "JavaScript: The Good Parts"
User U001: Alice Johnson (2 books borrowed)
U001 returned "The Pragmatic Programmer"
User U001: Alice Johnson (1 books borrowed)

جرّب بنفسك

import 'book.dart';
import 'user.dart';
import 'library.dart';

void main() {
  // TODO: إنشاء مثيل (instance) من Library
  
  // TODO: إنشاء كتابين:
  // - الكتاب 1: isbn '978-0-13-468599-1'، title 'The Pragmatic Programmer'، author 'David Thomas'
  // - الكتاب 2: isbn '978-0-596-51774-8'، title 'JavaScript: The Good Parts'، author 'Douglas Crockford'
  
  // TODO: إضافة كلا الكتابين إلى المكتبة
  
  // TODO: إنشاء مستخدم بـ id 'U001' واسم 'Alice Johnson'
  
  // TODO: تسجيل المستخدم في المكتبة
  
  // TODO: استعارة الكتاب الأول لـ Alice
  
  // TODO: محاولة استعارة نفس الكتاب مرة أخرى (يجب أن تفشل مع رسالة 'Book not available')
  
  // TODO: استعارة الكتاب الثاني لـ Alice
  
  // TODO: طباعة Alice لإظهار عدد الكتب المستعارة لديها
  
  // TODO: إرجاع الكتاب الأول
  
  // TODO: طباعة Alice مرة أخرى لإظهار العدد المحدث
}

جميع دروس Object Oriented Programming