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

مراجعة: Greeter

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

challenge icon

التحدي

سهل

لنبنِ نظام Greeter يوضّح تعدد الأشكال من خلال مؤشرات الدوال: نفس نوع البنية ينتج مخرجات مختلفة استنادًا إلى دالة التحية التي تم ربطها به.

ستنظّم الكود الخاص بك عبر ثلاثة ملفات:

  • greeter.h: عرّف واجهة greeter هنا. أنشئ نوع مؤشر دالة يُسمى GreetFunc ويأخذ const char* (اسمًا لتحيته) ولا يعيد أي قيمة. ثم عرّف بنية Greeter تحتوي على language (وهو const char*) ومؤشر دالة greet من النوع GreetFunc.
  • greeter.c: نفّذ دوال التحية التي تمثل لغات مختلفة:
    • greet_english: تطبع Hello, name!
    • greet_spanish: تطبع Hola, name!
  • main.c: اجمع كل شيء هنا. أنشئ مثيلين من Greeter، أحدهما للغة English والآخر للغة Spanish، مع ربط كل منهما بدالة التحية الخاصة به. اقرأ اسمًا كمدخل، ثم استدعِ دالة greet لكلا الكائنين من نوع greeter لإظهار السلوك متعدد الأشكال.

سيستقبل برنامجك مدخلًا واحدًا: اسم لتحيته.

أنشئ greeter للغة English مع ضبط اللغة على English، وgreeter للغة Spanish مع ضبط اللغة على Spanish. لكل greeter، اطبع لغته متبوعة بنقطتين ومسافة، ثم استدعِ دالة greet الخاصة به مع الاسم المُدخل.

مثال على المخرجات عندما يكون الإدخال Maria:

English: Hello, Maria!
Spanish: Hola, Maria!

مثال على المخرجات عندما يكون الإدخال Carlos:

English: Hello, Carlos!
Spanish: Hola, Carlos!

كلا الـ greeter من النوع نفسه Greeter، ومع ذلك ينتجان تحيات مختلفة لأن لكل منهما دالة مختلفة مُعيّنة لعضو greet الخاص به. تذكّر استخدام حواجز التضمين في ملف الرأس.

جرّب بنفسك

#include <stdio.h>
#include <string.h>
#include "greeter.h"

int main() {
    // اقرأ إدخال الاسم
    char name[100];
    scanf("%s", name);
    
    // TODO: أنشئ مُرحِّبًا إنجليزيًا
    // - عيّن اللغة إلى "English"
    // - عيّن greet إلى دالة greet_english
    
    
    // TODO: أنشئ مُرحِّبًا إسبانيًا
    // - عيّن اللغة إلى "Spanish"
    // - عيّن greet إلى دالة greet_spanish
    
    
    // TODO: لكل مُرحِّب:
    // 1. اطبع اللغة متبوعة بـ ": "
    // 2. استدعِ دالة greet مع الاسم
    
    
    return 0;
}

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

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