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

ملخص - حاسبة الأشكال

جزء من قسم Object Oriented Programming في رحلة PHP على Coddy — الدرس 32 من 91.

challenge icon

التحدي

سهل

لنقم ببناء حاسبة أشكال توضح قوة الواجهات (interfaces) في إنشاء كود مرن وقابل للتوسيع. ستقوم بإنشاء واجهة تحدد عقداً لحساب المساحات، ثم تقوم بتنفيذها في فئات أشكال مختلفة.

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

  • Calculable.php — قم بتعريف واجهة Calculable مع توقيع طريقة واحدة: calculateArea(). يضمن هذا العقد أن أي شكل قابل للحساب يمكنه حساب مساحته.
  • Rectangle.php — أنشئ فئة Rectangle تقوم بتنفيذ Calculable. قم بتضمين ملف الواجهة. يجب أن تحتوي الفئة على خصائص خاصة $width و $height، يتم تعيينها من خلال المنشئ (constructor). قم بتنفيذ calculateArea() لإرجاع المساحة (العرض مضروباً في الارتفاع).
  • Circle.php — أنشئ فئة Circle تقوم أيضاً بتنفيذ Calculable. قم بتضمين ملف الواجهة. يجب أن تحتوي الفئة على خاصية خاصة $radius، يتم تعيينها من خلال المنشئ. قم بتنفيذ calculateArea() لإرجاع المساحة باستخدام الصيغة pi() * radius * radius.
  • main.php — قم بتضمين كلا ملفي الأشكال. أنشئ دالة تسمى displayArea تقبل معاملًا من نوع Calculable واسم شكل (string). يجب أن تطبع الدالة: "[name] area: [area]" حيث يتم تقريب المساحة إلى منزلتين عشريتين باستخدام number_format().

ستتلقى أربعة مدخلات: عرض المستطيل، ارتفاع المستطيل، نصف قطر الدائرة، واسم شكل للدائرة. أنشئ Rectangle بالعرض والارتفاع (قم بتحويلهما إلى floats)، و Circle بنصف القطر (قم بتحويله إلى float). استدعِ displayArea() مرتين — الأولى مع المستطيل باستخدام "Rectangle" كاسم، ثم مع الدائرة باستخدام اسم الشكل المقدم. اطبع كل نتيجة في سطر مستقل.

تعمل دالة displayArea() مع أي شكل ينفذ Calculable — فهي لا تحتاج إلى معرفة ما إذا كانت تحسب مساحة مستطيل أو دائرة أو أي شكل مستقبلي قد تضيفه. هذا هو جمال البرمجة الموجهة للواجهات!

جرّب بنفسك

<?php
// تضمين ملفات الأشكال
require_once 'Rectangle.php';
require_once 'Circle.php';

// TODO: قم بإنشاء دالة تسمى displayArea
// يجب أن تقبل معامل من نوع Calculable واسم الشكل (سلسلة نصية)
// اطبع: "[name] area: [area]" حيث يتم تقريب المساحة إلى منزلتين عشريتين باستخدام number_format()

// قراءة المدخلات
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));

// TODO: قم بإنشاء مستطيل (Rectangle) بالعرض والارتفاع

// TODO: قم بإنشاء دائرة (Circle) بنصف القطر

// TODO: قم باستدعاء displayArea() مع المستطيل باستخدام "Rectangle" كاسم

// TODO: قم باستدعاء displayArea() مع الدائرة باستخدام اسم الشكل المزود
?>

جميع دروس Object Oriented Programming