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

هيكلة المشروع

جزء من قسم Object Oriented Programming في رحلة C# على Coddy — الدرس 62 من 70.

challenge icon

التحدي

سهل

لنقم بإرساء الأساس لمشروع نظام المكتبة الخاص بك! ستقوم بإنشاء هيكل الملفات الأساسي الذي سينمو ليصبح تطبيقاً كاملاً لإدارة المكتبات خلال الدروس القادمة.

ستقوم بتنظيم الكود الخاص بك عبر أربعة ملفات، لكل منها مسؤولية محددة:

  • Book.cs: سيحتوي هذا الملف على نموذج الكتاب (Book model). في الوقت الحالي، قم بإنشاء فئة Book داخل مساحة الأسماء LibrarySystem مع ثلاث خصائص تلقائية التنفيذ (auto-implemented properties): Title (string)، و Author (string)، و IsAvailable (bool، وتكون قيمتها الافتراضية true). أضف منشئاً (constructor) يأخذ العنوان والمؤلف كمعاملات.
  • User.cs: سيحتوي هذا الملف على نموذج المستخدم (User model). قم بإنشاء فئة User في نفس مساحة الأسماء مع خاصيتين: Name (string) و MemberId (int). قم بتضمين منشئ يقبل كلتا القيمتين.
  • Library.cs: هذا هو المكان الذي سيعيش فيه منطقك الأساسي. قم بإنشاء فئة Library مع خاصية Name (string) ومنشئ لتعيينها. أضف طريقة تسمى GetInfo() تعيد سلسلة نصية بتنسيق "{Name} Library System Initialized".
  • Program.cs: اجمع كل شيء معاً هنا. هذه هي نقطة الدخول الخاصة بك حيث ستنشئ مثيلات (instances) من فئاتك وتتحقق من أن الهيكل يعمل بشكل صحيح.

ستتلقى ثلاثة مدخلات:

  • اسم المكتبة
  • إدخال كتاب بتنسيق title|author
  • إدخال مستخدم بتنسيق name|memberId

قم بإنشاء مثيل Library بالاسم المعطى، ومثيل Book بالعنوان والمؤلف المقدمين، ومثيل User بالاسم ومعرف العضو المقدمين. ثم اطبع ثلاثة أسطر:

  1. نتيجة استدعاء GetInfo() على مكتبتك
  2. معلومات الكتاب بتنسيق Book: {Title} by {Author} - Available: {IsAvailable}
  3. معلومات المستخدم بتنسيق User: {Name} (ID: {MemberId})

على سبيل المثال، إذا كانت المدخلات هي:

City Central
The Great Gatsby|F. Scott Fitzgerald
Alice Johnson|1001

يجب أن يكون المخرج:

City Central Library System Initialized
Book: The Great Gatsby by F. Scott Fitzgerald - Available: True
User: Alice Johnson (ID: 1001)

يتبع هذا الهيكل مبدأ المسؤولية الواحدة (Single Responsibility Principle) - حيث يتعامل كل ملف مع جانب محدد واحد. في الدروس القادمة، ستوسع هذه الفئات بمنطق الاستعارة، ووظائف البحث، وواجهة وحدة تحكم كاملة!

جرّب بنفسك

using System;

namespace LibrarySystem
{
    class Program
    {
        public static void Main(string[] args)
        {
            // قراءة المدخلات
            string libraryName = Console.ReadLine();
            string bookInput = Console.ReadLine();
            string userInput = Console.ReadLine();

            // تحليل مدخلات الكتاب (التنسيق: title|author)
            string[] bookParts = bookInput.Split('|');
            string bookTitle = bookParts[0];
            string bookAuthor = bookParts[1];

            // تحليل مدخلات المستخدم (التنسيق: name|memberId)
            string[] userParts = userInput.Split('|');
            string userName = userParts[0];
            int memberId = Convert.ToInt32(userParts[1]);

            // TODO: إنشاء مثيل Library باستخدام اسم المكتبة

            // TODO: إنشاء مثيل Book باستخدام العنوان والمؤلف

            // TODO: إنشاء مثيل User باستخدام الاسم و memberId

            // TODO: طباعة معلومات المكتبة باستخدام GetInfo()

            // TODO: طباعة معلومات الكتاب بالتنسيق: Book: {Title} by {Author} - Available: {IsAvailable}

            // TODO: طباعة معلومات المستخدم بالتنسيق: User: {Name} (ID: {MemberId})
        }
    }
}

جميع دروس Object Oriented Programming