Menu
Coddy logo textTech

מימוש מלבן

חלק מהיחידה תכנות מונחה עצמים במסלול ה-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 (שני הערכים מוצגים עם 2 ספרות אחרי הנקודה העשרונית)
    • area_rectangle: מחזירה רוחב × גובה
    • create_rectangle: מאתחלת Rectangle, מחברת את מצביעי הפונקציות של Shape המוטמע לפונקציות של המלבן, מגדירה את הממדים ומחזירה את המלבן
  • main.c: הדגם ששתי הצורות פועלות דרך אותו ממשק. קרא שני קלטים: רוחב וגובה עבור מלבן. צור מלבן באמצעות פונקציית הבנאי שלך, ואז קרא גם ל-draw וגם ל-area דרך מצביעי הפונקציות של Shape המוטמע. הדפס את השטח עם 2 ספרות אחרי הנקודה העשרונית.

התוכנית שלך תקבל שני קלטים: ערכי 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

בדיוק כמו עם Circle, ה-Rectangle מכיל את Shape בתור האיבר הראשון שלו, וכך אפשר לגשת למצביעי הפונקציות דרך האיבר המוטמע. הדפוס העקבי הזה הוא שמאפשר פולימורפיזם: אפשר להתייחס לשתי הצורות באופן אחיד דרך ממשק ה-Shape שלהן. זכור להשתמש בשומרי הכללה בכל קובצי הכותרת.

נסו בעצמכם

#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: קרא ל־draw דרך מצביע הפונקציה של Shape המוטמע
    
    // TODO: קרא ל־area דרך מצביע הפונקציה של Shape המוטמע
    // TODO: הדפס את השטח עם 2 ספרות אחרי הנקודה העשרונית: "Area: %.2f\n"
    
    return 0;
}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C אונליין