הגדרת הפרויקט
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Lua של Coddy. שיעור 55 מתוך 70.
אתגר
קלבואו נבנה את הבסיס למערכת לניהול צורות! הפרויקט הזה יתפתח במהלך השיעורים הבאים, אז נתחיל בהגדרת מבנה קבצים מסודר עם מחלקת בסיס Shape.
תיצרו שני קבצים כדי לארגן את הקוד שלכם:
Shape.lua: הגדירו מחלקת בסיסShapeבאמצעות תבנית האב־טיפוס. לכל צורה יש מאפייןname(כמו "Circle" או "Rectangle"). כללו בנאי:new(name)שמקבל את שם הצורה, ומתודה:getName()שמחזירה אותו.main.lua: הפיחו חיים במחלקת Shape שלכם על ידי ייבוא המודול ויצירת מופע של צורה. קראו שם של צורה מהקלט, צרו צורת Shape עם השם הזה והדפיסו את התוצאה של קריאה ל־:getName().
מחלקת הבסיס הזאת תשמש כמחלקת האב של צורות ספציפיות כמו Rectangle ו-Circle בשיעורים הבאים. לעת עתה, התמקדו במבנה המחלקה: הגדרת __index, תבנית הבנאי ומתודת האחזור.
קלט: שורה אחת המכילה את שם הצורה (מחרוזת).
פלט: שם הצורה שמוחזר על ידי :getName().
נסו בעצמכם
-- טענו את המודול Shape באמצעות require
local Shape = require('Shape')
-- קראו את שם הצורה מהקלט
local shapeName = io.read()
-- TODO: צרו מופע חדש של Shape עם השם הנתון
-- TODO: הדפיסו את התוצאה של הקריאה ל־:getName() על הצורה שלכם
כל השיעורים ביחידה תכנות מונחה עצמים
4פרויקט: בנק דיגיטלי
הגדרת הפרויקטפעולת הפקדה7פולימורפיזם ודריסת מתודות
דריסת מתודותקריאה למתודות של מחלקת האבטיפוסיות ברווזממשק משותףבדיקת טיפוססיכום – תפקידי עובדים2תבנית אב־טיפוס למחלקה
מושג אב־הטיפוסקישור באמצעות __indexהבנאי :new()אתחול מאפייניםמופעים עצמאייםסיכום – מפעל מכוניות5העמסת אופרטורים בתכנות מונחה עצמים
חיבור אובייקטיםחיסור אובייקטיםשרשור אובייקטיםהשוואת אובייקטים (<, >)חזרה – חישובים עם ארנק8כימוס
כללי מתן שמותClosures לשמירה על פרטיותגישה באמצעות Closuresטבלאות לקריאה בלבדלוגיקת אימותסיכום – כספת מאובטחת11תבניות עיצוב (בקצרה)
פונקציות Factoryטבלת Singletonתבנית IteratorObserver (מאזין)סיכום – מפעל Logger3מצב והתנהגות של אובייקטים
משתני מופעמתודות Getterמתודות Setterמאפיינים מחושביםעיצוב מחרוזותבדיקות שוויוןסיכום – ציון תלמיד6יסודות הירושה
הכנת מבנה הירושהירושת מתודותהרחבת הבנאיהוספת מתודות למחלקת הבתמשותף לעומת ייחודיסיכום – היררכיית צורותתרגלו בעצמכם: קומפיילר Lua אונליין