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

مراجعة - رياضيات المحفظة

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

challenge icon

التحدي

سهل

لنقم ببناء فئة Wallet تجمع بين مهارات تحميل المعاملات الزائد (operator overloading) التي تعلمتها في هذا الفصل. ستخزن محفظتك مبلغاً من المال وتدعم عمليتين رئيسيتين: دمج المحافظ باستخدام + ومقارنة المحافظ باستخدام <code>< و .

ستقوم بتنظيم الكود الخاص بك عبر ملفين:

  • Wallet.lua: قم بتعريف فئة Wallet الخاصة بك مع حقل amount يمثل مقدار المال الذي تحتويه. قم بتضمين منشئ :new(amount) وقم بتنفيذ طريقتين وراءيتين (metamethods):
    • __add: إضافة محفظتين يؤدي إلى إنشاء محفظة جديدة تحتوي على المجموع المشترك.
    • __lt: مقارنة المحافظ تحدد أيهما تحتوي على مال أقل.
  • main.lua: استدعِ وحدة Wallet الخاصة بك، وأنشئ مثيلات للمحفظة، واعرض كيفية عمل العمليتين معاً.

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

  1. المبلغ في المحفظة الأولى
  2. المبلغ في المحفظة الثانية
  3. المبلغ في المحفظة الثالثة

في ملفك الرئيسي، أنشئ ثلاث محافظ بالمبالغ المعطاة. ثم:

  1. أضف المحفظتين الأولى والثانية معاً لإنشاء محفظة مدمجة.
  2. اطبع مبلغ المحفظة المدمجة.
  3. قارن المحفظة المدمجة مع المحفظة الثالثة باستخدام <code>< واطبع النتيجة (true أو false).
  4. قارن المحفظة المدمجة مع المحفظة الثالثة باستخدام واطبع النتيجة (true أو false).

على سبيل المثال، إذا كانت المدخلات هي 50 و 30 و 100، يجب أن يكون الناتج:

80
true
false

المحفظة الأولى (50) زائد المحفظة الثانية (30) تنشئ محفظة مدمجة بقيمة 80. وبما أن 80 أقل من 100، فإن المقارنة الأولى هي true. وبما أن 80 ليست أكبر من 100، فإن المقارنة الثانية هي false.

جرّب بنفسك

local Wallet = require('Wallet')

-- قراءة المدخلات
local amount1 = tonumber(io.read())
local amount2 = tonumber(io.read())
local amount3 = tonumber(io.read())

-- TODO: إنشاء ثلاث محافظ بالمبالغ المعطاة

-- TODO: إضافة المحفظة الأولى والثانية معاً لإنشاء محفظة مجمعة

-- TODO: طباعة مبلغ المحفظة المجمعة

-- TODO: مقارنة المحفظة المجمعة بالمحفظة الثالثة باستخدام < وطباعة النتيجة

-- TODO: مقارنة المحفظة المجمعة بالمحفظة الثالثة باستخدام > وطباعة النتيجة

جميع دروس Object Oriented Programming