البرمجة

إدارة الأشخاص باستخدام Ruby

في البرنامج الذي قمت بتوفيره، يتم تعريف فئة تسمى “Person” تمثل شخصًا، وتحتوي هذه الفئة على عدة متغيرات وطرق للتعامل مع معلومات الأشخاص.

بما أنك قمت بتحديد أنك واجهت صعوبة في تحديد الكائن “self” وباقي البرنامج، فسأقدم لك شرحًا لكل جزء من الكود وسأكمل البرنامج بالطريقة التي تبدو مناسبة:

  1. داخل الفئة Person، قمت بتعريف متغيرين للفئة: first_name و last_name. وأنت قمت بتعليق استخدام attr_accessor لتعريف الوصول العام لهذين المتغيرين.

  2. في الفئة Person، لديك أيضًا متغير فئة يسمى “people” يحتوي على مصفوفة من الكائنات. هذا المتغير يتم استخدامه لتخزين جميع الأشخاص التي تم إنشاؤها.

  3. تم تعريف طريقة initialize لتهيئة الكائنات من نوع Person بمتغيرات first_name و last_name التي تمرر إليها. هذه الطريقة تقوم بتعيين قيم هذين المتغيرين للكائن الحالي، وتضيف الكائن الحالي (self) إلى مصفوفة الأشخاص (people).

  4. لديك أيضًا طريقة بحث تُسمى “search” تأخذ معلمة last_name وتقوم بالبحث عن جميع الأشخاص الذين لديهم نفس last_name. هذه الطريقة ينبغي أن تعود بمصفوفة تحتوي على الأشخاص الذين تم العثور عليهم.

  5. لديك طريقة “to_s” التي تُرجع سلسلة نصية تحتوي على اسم الشخص بالتنسيق “first_name(space)last_name”.

بالنسبة لاستخدام “self” واستكمال البرنامج، يمكن تحقيق ذلك بتحديد أشكال معينة من الوصول للمتغيرات والطرق داخل الفئة. على سبيل المثال، لاستخدام المتغيرات الفئة داخل الطرق الفئة، يجب استخدام “self” تليه اسم المتغير. وهذا ينطبق على طرق الفئة أيضًا، حيث يجب استخدام “self” تليه اسم الطريقة.

لذا، سنقوم بتحديث البرنامج كالتالي:

ruby
class Person attr_accessor :first_name, :last_name @@people = [] def initialize(first_name, last_name) @first_name = first_name @last_name = last_name @@people << self end def self.search(last_name) @@people.select { |person| person.last_name == last_name } end def to_s "#{@first_name} #{@last_name}" end end p1 = Person.new("John", "Smith") p2 = Person.new("John", "Doe") p3 = Person.new("Jane", "Smith") p4 = Person.new("Cool", "Dude") puts Person.search("Smith") # Output: # John Smith # Jane Smith

في هذا البرنامج المكتمل، يتم إضافة الكائن الحالي إلى مصفوفة الأشخاص في طريقة initialize باستخدام “self”. وتم استخدام “self” في طريقة البحث للوصول إلى متغير الفئة “people”. وأخيرًا، يتم استخدام طريقة “to_s” لإعادة تنسيق الاسم.

المزيد من المعلومات

باستكمال البرنامج السابق، يمكننا إلقاء نظرة أعمق على كيفية عمل الشفرة وكيفية استخدام الكائنات والطرق في Ruby.

أولاً وقبل كل شيء، نلاحظ أننا استخدمنا متغير الفئة “@@people” لتخزين جميع الأشخاص الذين تم إنشاؤهم. هذا يسمح لنا بالوصول إليهم والبحث فيهم من داخل الفئة نفسها. هذه الطريقة شائعة الاستخدام في Ruby للحفاظ على البيانات بين كل الكائنات من نفس النوع.

في طريقة initialize، نستخدم متغير “self” للإشارة إلى الكائن الحالي الذي يتم إنشاؤه. هذا يعني أننا نقوم بإضافة الكائن نفسه إلى مصفوفة الأشخاص في كل مرة يتم فيها إنشاء كائن جديد من فئة Person.

ثم في الطريقة self.search، نستخدم مجددًا “self” للوصول إلى متغير الفئة “people”. نستخدم طريقة select لاختيار الأشخاص الذين يحملون نفس last_name الممرر إليها كمعلمة.

أخيرًا، في طريقة to_s، نستخدم ببساطة السلاسل المتعددة لتنسيق سلسلة الإخراج بشكل صحيح.

هذا البرنامج يعكس الطريقة التي يمكن أن يتم فيها تنظيم البيانات والوصول إليها في Ruby، حيث يسهل علينا استخدام الكائنات والطرق لتنفيذ الوظائف المطلوبة بسهولة وبشكل أنيق.

وبهذا، يكتمل البرنامج ونجد أنه يقوم بالمهمة المطلوبة بكفاءة، وهو مثال جيد على كيفية استخدام Ruby في بناء تطبيقات تعاملية وسهلة الفهم.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر