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

مراجعة - مدير المستخدمين

جزء من قسم البرمجة كائنية التوجه في رحلة Lua على Coddy. الدرس 68 من 70.

challenge icon

التحدي

سهل

لنَبْنِ نظامًا لإدارة المستخدمين: تطبيقًا عمليًا قد تجده في العديد من البرامج الواقعية! ستنشئ فئتين تعملان معًا: إحداهما تمثل المستخدمين الفرديين، والأخرى تدير collection منهم بكفاءة.

ستنظّم شفرتك عبر ثلاثة ملفات:

  • User.lua: أنشئ فئة User تمثل مستخدمًا واحدًا في النظام. لكل مستخدم id وname. ضمّن أسلوب :getInfo() يعيد سلسلة نصية بالتنسيق "ID: {id}, Name: {name}".
  • UserManager.lua: أنشئ فئة manager تتعامل مع collection من المستخدمين. فكّر في كيفية تخزين المستخدمين لإجراء lookup بكفاءة: إن استخدام معرّف المستخدم كمفتاح للجدول يجعل العثور على المستخدمين وإزالتهم أبسط بكثير من البحث عبر list. يحتاج manager إلى:
    • :addUser(user): يضيف User object إلى collection
    • :removeUser(id): يزيل مستخدمًا باستخدام معرّفه
    • :findUser(id): يعيد User صاحب المعرّف المطابق، أو nil إذا لم يتم العثور عليه
    • :listUsers(): يطبع info جميع المستخدمين، واحدًا في كل line
  • main.lua: اجمع everything معًا! أنشئ UserManager، وأضف بعض المستخدمين استنادًا إلى inputs التي تتلقاها، ونفّذ العمليات، ثم اعرض النتائج.

ستتلقى خمسة inputs:

  1. معرّف المستخدم الأول (رقم)
  2. اسم المستخدم الأول
  3. معرّف المستخدم الثاني (رقم)
  4. اسم المستخدم الثاني
  5. معرّف المستخدم الذي تريد البحث عنه (رقم)

في ملفك الرئيسي:

  1. أنشئ UserManager وأضف both المستخدمين
  2. استدعِ :listUsers() لطباعة جميع المستخدمين
  3. أزل المستخدم الأول (باستخدام المعرّف الأول)
  4. اطبع "After removal:"
  5. استدعِ :listUsers() again
  6. ابحث عن المستخدم ذي معرّف الإدخال الخامس؛ إذا تم العثور عليه، اطبع info الخاص به؛ وإذا لم يتم العثور عليه، اطبع "User not found"

على سبيل المثال، إذا كانت inputs هي 101 وAlice و102 وBob و102، فينبغي أن يكون الناتج:

ID: 101, Name: Alice
ID: 102, Name: Bob
After removal:
ID: 102, Name: Bob
ID: 102, Name: Bob

إذا كانت inputs هي 201 وCharlie و202 وDiana و201، فينبغي أن يكون الناتج:

ID: 201, Name: Charlie
ID: 202, Name: Diana
After removal:
ID: 202, Name: Diana
User not found

لاحظ أنه في المثال الثاني، بعد إزالة المستخدم 201 (Charlie)، يعيد البحث عن ذلك المعرّف "User not found" لأنه لم يعد موجودًا في النظام!

REQUIRED OUTPUT FORMAT: [Your translated content here]

جرّب بنفسك

-- main.lua: اجمع كل شيء معًا

local User = require('User')
local UserManager = require('UserManager')

-- اقرأ المدخلات
local id1 = tonumber(io.read())
local name1 = io.read()
local id2 = tonumber(io.read())
local name2 = io.read()
local searchId = tonumber(io.read())

-- TODO: أنشئ مثيلًا من UserManager

-- TODO: أنشئ كائنين User ببيانات الإدخال

-- TODO: أضف كلا المستخدمين إلى المدير

-- TODO: استدعِ listUsers() لطباعة جميع المستخدمين

-- TODO: أزل المستخدم الأول (باستخدام id1)

-- TODO: Print "After removal:"

-- TODO: استدعِ listUsers() مرة أخرى

-- TODO: ابحث عن المستخدم باستخدام searchId
-- If found, print their info; if not found, print "User not found"

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم Lua عبر الإنترنت