תחביר הנקודתיים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Lua של Coddy. שיעור 3 מתוך 70.
לכתוב counter.increment(counter) בכל פעם זה מייגע ומועד לטעויות. Lua מספקת דרך נקייה יותר: האופרטור נקודתיים (:).
כשמגדירים פונקציה באמצעות נקודתיים, Lua מוסיפה אוטומטית את self כפרמטר הראשון:
local player = {
name = "Hero"
}
-- שימוש בנקודתיים בהגדרה
function player:greet()
print("Hello, I am " .. self.name)
endהנקודתיים פועלות גם בעת קריאה לפונקציה. הן מעבירות אוטומטית את הטבלה כארגומנט הראשון:
player:greet() -- פלט: Hello, I am Heroזה שקול לכתיבה של player.greet(player), אבל הרבה יותר נקי. הנקודתיים מטפלים בפרמטר self בשני הקצוות: בזמן ההגדרה ובזמן הקריאה.
הנה השוואה שמראה ששתי הגישות מניבות תוצאות זהות:
local counter = { value = 0 }
-- תחביר נקודה (self מפורש)
function counter.increment(self)
self.value = self.value + 1
end
counter.increment(counter)
-- תחביר נקודתיים (self אוטומטי)
function counter:decrement()
self.value = self.value - 1
end
counter:decrement()אתגר
קלצרו טבלה בשם greeter עם שדה message שמאותחל לערך שתקבלו כקלט.
הוסיפו מתודה :sayHello(name) באמצעות תחביר הנקודתיים, שמדפיסה את הברכה בפורמט הזה:
[message], [name]!תקבלו שני קלטים:
- הודעת הברכה שיש לשמור ב-
greeter.message - שם להעביר למתודה
:sayHello()
הגדירו את המתודה באמצעות תחביר הנקודתיים וקראו לה באמצעות תחביר הנקודתיים. הדפיסו את הברכה בפורמט.
לדוגמה, אם ההודעה היא Welcome והשם הוא Luna, הפלט צריך להיות:
Welcome, Luna!נסו בעצמכם
-- קרא את הקלט
local message = io.read()
local name = io.read()
-- TODO: כתוב את הקוד שלך למטה
-- 1. צור טבלה בשם 'greeter' עם שדה 'message'
-- 2. הוסף מתודה :sayHello(name) באמצעות תחביר נקודתיים
-- 3. קרא למתודה באמצעות תחביר נקודתיים כדי להדפיס את הברכההשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
4פרויקט: בנק דיגיטלי
הגדרת הפרויקטפעולת הפקדה7פולימורפיזם ודריסת מתודות
דריסת מתודותקריאה למתודות של מחלקת האבטיפוסיות ברווזממשק משותףבדיקת טיפוססיכום – תפקידי עובדים2תבנית אב־טיפוס למחלקה
מושג אב־הטיפוסקישור באמצעות __indexהבנאי :new()אתחול מאפייניםמופעים עצמאייםסיכום – מפעל מכוניות5העמסת אופרטורים בתכנות מונחה עצמים
חיבור אובייקטיםחיסור אובייקטיםשרשור אובייקטיםהשוואת אובייקטים (<, >)חזרה – חישובים עם ארנק8כימוס
כללי מתן שמותClosures לשמירה על פרטיותגישה באמצעות Closuresטבלאות לקריאה בלבדלוגיקת אימותסיכום – כספת מאובטחת11תבניות עיצוב (בקצרה)
פונקציות Factoryטבלת Singletonתבנית IteratorObserver (מאזין)סיכום – מפעל Logger3מצב והתנהגות של אובייקטים
משתני מופעמתודות Getterמתודות Setterמאפיינים מחושביםעיצוב מחרוזותבדיקות שוויוןסיכום – ציון תלמיד6יסודות הירושה
הכנת מבנה הירושהירושת מתודותהרחבת הבנאיהוספת מתודות למחלקת הבתמשותף לעומת ייחודיסיכום – היררכיית צורותתרגלו בעצמכם: קומפיילר Lua אונליין