Menu
Coddy logo textTech

מחלקת עיגול

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Lua של Coddy. שיעור 57 מתוך 70.

challenge icon

אתגר

קל

נמשיך לבנות את מנהל הצורות שלנו על ידי הוספת מחלקת Circle לצד Rectangle שיצרת בשיעור הקודם.

תעבוד עם ארבעה קבצים כדי לשמור על הצורות שלך מאורגנות:

  • Shape.lua: מחלקת הבסיס שלך Shape, עם :new(name) ו-:getName().
  • Rectangle.lua: מחלקת Rectangle שלך מהאתגר הקודם, עם :getArea().
  • Circle.lua: צור מחלקת Circle שיורשת מ-Shape. הבנאי צריך לקבל radius, לקרוא לבנאי של מחלקת האב עם השם "Circle", ולאחסן את הרדיוס. הוסף מתודה :getArea() שמחשבת את שטח המעגל באמצעות הנוסחה πr². השתמש ב-math.pi עבור הערך של π.
  • main.lua: טען באמצעות require את המודולים Rectangle ו-Circle. קרא שלושה ערכים מהקלט: רוחב מלבן, גובה מלבן ורדיוס מעגל. צור מופע אחד מכל צורה והדפס ארבע שורות: שם המלבן, שטח המלבן, שם המעגל ושטח המעגל.

לשתי הצורות יש עכשיו אותו ממשק באמצעות ירושה: לכל אחת יש מתודת :getName() מ-Shape ומימוש משלה של :getArea(). הממשק המשותף הזה יהיה שימושי בשיעורים הבאים.

קלט: שלוש שורות: רוחב (מספר), גובה (מספר) ורדיוס (מספר).

פלט: ארבע שורות: שם המלבן, שטח המלבן, שם המעגל ושטח המעגל.

נסו בעצמכם

-- טען את המודול Rectangle
local Rectangle = require('Rectangle')

-- טען את המודול Circle
-- TODO: טען כאן את המודול Circle

-- קרא את הרוחב והגובה מהקלט
local width = tonumber(io.read())
local height = tonumber(io.read())

-- TODO: קרא את הרדיוס מהקלט

-- צור מופע חדש של Rectangle עם הממדים הנתונים
local rect = Rectangle:new(width, height)

-- TODO: צור מופע חדש של Circle עם הרדיוס הנתון

-- הדפס את השם והשטח של המלבן
print(rect:getName())
print(rect:getArea())

-- TODO: הדפס את השם והשטח של העיגול

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

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