מחלקת עיגול
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Lua של Coddy. שיעור 57 מתוך 70.
אתגר
קלנמשיך לבנות את מנהל הצורות שלנו על ידי הוספת מחלקת 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: הדפס את השם והשטח של העיגול
כל השיעורים ביחידה תכנות מונחה עצמים
4פרויקט: בנק דיגיטלי
הגדרת הפרויקטפעולת הפקדה7פולימורפיזם ודריסת מתודות
דריסת מתודותקריאה למתודות של מחלקת האבטיפוסיות ברווזממשק משותףבדיקת טיפוססיכום – תפקידי עובדים2תבנית אב־טיפוס למחלקה
מושג אב־הטיפוסקישור באמצעות __indexהבנאי :new()אתחול מאפייניםמופעים עצמאייםסיכום – מפעל מכוניות5העמסת אופרטורים בתכנות מונחה עצמים
חיבור אובייקטיםחיסור אובייקטיםשרשור אובייקטיםהשוואת אובייקטים (<, >)חזרה – חישובים עם ארנק8כימוס
כללי מתן שמותClosures לשמירה על פרטיותגישה באמצעות Closuresטבלאות לקריאה בלבדלוגיקת אימותסיכום – כספת מאובטחת11תבניות עיצוב (בקצרה)
פונקציות Factoryטבלת Singletonתבנית IteratorObserver (מאזין)סיכום – מפעל Logger3מצב והתנהגות של אובייקטים
משתני מופעמתודות Getterמתודות Setterמאפיינים מחושביםעיצוב מחרוזותבדיקות שוויוןסיכום – ציון תלמיד6יסודות הירושה
הכנת מבנה הירושהירושת מתודותהרחבת הבנאיהוספת מתודות למחלקת הבתמשותף לעומת ייחודיסיכום – היררכיית צורותתרגלו בעצמכם: קומפיילר Lua אונליין