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

تنفيذ المستطيل

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

challenge icon

التحدي

سهل

لنواصل بناء مشروع "Shape Drawer" من خلال تنفيذ Rectangle — وهو شكل ملموس آخر يدمج هيكل Shape الأساسي، تماماً كما فعلنا مع الدائرة (Circle).

بناءً على مشروعك الحالي، ستضيف وظائف المستطيل عبر هذه الملفات:

  • shape.h: احتفظ بواجهة Shape الأساسية مع أنواع مؤشرات الدوال DrawFunc و AreaFunc من الدروس السابقة.
  • circle.h و circle.c: احتفظ بتنفيذ الدائرة (Circle) من الدرس السابق.
  • rectangle.h: قم بتعريف هيكل Rectangle هنا. يدمج المستطيل Shape كـ عضو أول ويضيف حقلي width و height (كلاهما من نوع double). قم بالتصريح عن دالة منشئ create_rectangle تأخذ معلمات العرض والارتفاع وتعيد Rectangle بالقيمة.
  • rectangle.c: قم بتنفيذ السلوك الخاص بالمستطيل:
    • draw_rectangle — يطبع Drawing Rectangle with width: X.XX and height: X.XX (كلا القيمتين تظهران بمنزلتين عشريتين)
    • area_rectangle — يعيد العرض × الارتفاع
    • create_rectangle — يقوم بتهيئة Rectangle، وربط مؤشرات دوال Shape المدمجة بدوال المستطيل، وتعيين الأبعاد، وإعادة المستطيل
  • main.c: قم باستعراض عمل كلا الشكلين من خلال نفس الواجهة. اقرأ مدخلين: العرض والارتفاع للمستطيل. أنشئ مستطيلاً باستخدام المنشئ الخاص بك، ثم استدعِ كلاً من draw و area من خلال مؤشرات دوال Shape المدمجة. اطبع المساحة بمنزلتين عشريتين.

سيتلقى برنامجك مدخلين: قيم width و height (كأرقام فاصلة عائمة).

مثال على المخرجات عندما تكون المدخلات 4.0 و 3.0:

Drawing Rectangle with width: 4.00 and height: 3.00
Area: 12.00

مثال على المخرجات عندما تكون المدخلات 7.5 و 2.5:

Drawing Rectangle with width: 7.50 and height: 2.50
Area: 18.75

تماماً كما هو الحال مع الدائرة، يدمج المستطيل Shape كعضو أول له، مما يسمح لك بالوصول إلى مؤشرات الدوال من خلال العضو المدمج. هذا النمط المتسق هو ما يسمح بتعدد الأشكال (polymorphism) — حيث يمكن التعامل مع كلا الشكلين بشكل موحد من خلال واجهة Shape الخاصة بهما. تذكر استخدام حراس التضمين (include guards) في جميع ملفات الترويسة.

جرّب بنفسك

#include <stdio.h>
#include "shape.h"
#include "rectangle.h"

int main() {
    double width, height;
    scanf("%lf", &width);
    scanf("%lf", &height);
    
    // TODO: create_rectangle(width, height) قم بإنشاء مستطيل باستخدام
    
    // TODO: المضمنة Shape من خلال مؤشر الدالة الخاص بـ draw استدعِ
    
    // TODO: المضمنة Shape من خلال مؤشر الدالة الخاص بـ area استدعِ
    // TODO: "Area: %.2f\n" :اطبع المساحة مع منزلتين عشريتين
    
    return 0;
}

جميع دروس Object Oriented Programming