מתודות של אובייקטים - Object Methods (Video Version)
-
0:01 - 0:06בפעם האחרונה, למדנו איך ליצור טיפוס אובייקט כדי לייצג את שני האובייקטים דמויי-ווינסטון שלנו
-
0:06 - 0:09ואז לאתחל אותם עם בנאי (constructor).
-
0:09 - 0:13טיפוס אובייקט לא חייב להיות מקושר רק עם מאפיינים.
-
0:13 - 0:19הוא יכול להיות מקושר גם עם פונקציונליות. תחשבו על העולם וכל טיפוסי האובייקטים בעולם
-
0:19 - 0:26כמונו, בני האדם. לכולנו יש גובה וגיל, אבל יש לנו גם דברים שאנחנו יכולים לעשות, כמו לישון, לאכול, ולתכנת.
-
0:26 - 0:31ואנחנו רוצים להיות מסוגלים לקשר את הפונקציות האלו עם טיפוסי האובייקטים האלו.
-
0:31 - 0:36בתוכנית הזאת, שהיא בדיוק כמו שהשארנו אותה בפעם שעברה, יש לנו את הפונקציה
-
0:36 - 0:43drawWinston, שאנחנו יכולים לקרוא לה עם שני אובייקטי ווינסטון. אבל זה היה יותר נחמד אם היינו יכולים פשוט לחבר
-
0:43 - 0:49את זה לטיפוס של אובייקט ווינסטון. אנחנו יכולים, וזה די קל לעשות זאת.
-
0:49 - 0:56אז מתחת לבנאי, אנחנו נכתוב Winston - עם אות W גדולה - נקודה prototype,
-
0:56 - 0:59אב הטיפוס (prototype), זאת מילה חדשה שכנראה לא ראיתם קודם.
-
0:59 - 1:06אב הטיפוס הוא מאפיין של האובייקט שאנחנו יכולים לצרף לו פונקציות
-
1:06 - 1:13וזה אומר שלכל אובייקט שהוא מופע של הטיפוס יהיו את הפונקציות האלו.
-
1:13 - 1:20אז נוכל לרשום נקודה, prototype, ואז נקודה, ואז את שם הפונקציה, draw
-
1:20 - 1:26ונרשום שווה, ואז נוכל לקחת את הקוד של פונקציית הציור שלנו ולשים אותו
-
1:26 - 1:33כאן. אז מה שעשינו עכשיו, זה לחבר את פונקציית הציור
-
1:33 - 1:40לאב הטיפוס של ווינסטון. וזה אומר שאנחנו אמורים להיות מסוגלים לקרוא ל-draw על כל אובייקט מסוג ווינסטון.
-
1:40 - 1:45אז זה יהיה אפשרי לקרוא ל-draw על האובייקטים winstonTeen ו-winstonAdult.
-
1:45 - 1:50וכשיש לנו פונקציה כזאת, שאנו יכולים לקרוא לה על אובייקט
-
1:50 - 1:55אנו קוראים לזה "מתודה", אז מעתה אשתמש גם במילה "מתודה".
-
1:55 - 1:58אז נאמר שזו "מתודת הציור". אוקיי.
-
1:58 - 2:04אז עכשיו נמחק את כל זה, ונראה אם אנחנו יכולים לקרוא ל-draw?
-
2:04 - 2:07winstonTeen.draw()
-
2:07 - 2:14אוקיי. יש לנו שגיאה, ראינו אותה קופצת כאן, וכתוב: "winstObject is not defined" (האובייקט winstObject לא מוגדר).
-
2:14 - 2:21אוקיי. קודם, היינו מעבירים את הפרמטר הזה, האובייקט ווינסטון, לפונקציה drawWinston
-
2:21 - 2:26אבל עכשיו אנחנו לא מעבירים אותו יותר. אז אנחנו יכולים להעביר אותו
-
2:26 - 2:31ומה אנחנו אמורים להעביר פה? נרצה להעביר את winstonTeen. אוקיי.
-
2:31 - 2:38זה עבד, אבל זה גם נראה ממש טיפשי. אני כבר קוראת לפונקצית draw על האובייקט עצמו.
-
2:38 - 2:44לא הגיוני שאצטרך להעביר את האובייקט כפרמטר בנוסף, זה נראה מיותר
-
2:44 - 2:48זה נכון, אנחנו לא צריכים לעשות את זה, אז בואו נמחק את זה, ונחשוב רגע.
-
2:48 - 2:54אם אנחנו בתוך האובייקט, במה נוכל להשתמש כדי לגשת למאפיינים של האובייקט?
-
2:54 - 3:00אם תסתכלו על הבנאי (constructor) שלנו, תיזכרו במילה המיוחדת this
-
3:00 - 3:09מה אם פשוט נשנה את מה שכתוב כאן, ל-"this"! נחליף את winstObject ב-this.
-
3:09 - 3:13כי עכשיו אנחנו בתוך האובייקט. הפונקציה הזאת מופעלת
-
3:13 - 3:17על האובייקט, כך ש-this יתייחס לאובייקט הנוכחי.
-
3:17 - 3:23אז אנו יכולים פשוט לרשום this ולגשת לכל המאפיינים של האובייקט הנוכחי.
-
3:23 - 3:27וזה עובד, רואים?
-
3:27 - 3:32אנחנו כותבים winstonAdult.draw()
-
3:32 - 3:38טה-דה! זה ניגש למאפיינים של winstonAdult כי זה האובייקט שעליו קוראים לפונקציה
-
3:38 - 3:46זה מה שממש מגניב במילה this, אפילו שזה יכול להיות קצת מבלבל לפעמים.
-
3:46 - 3:52אוקיי, זה היה ממש כיף, אז בואו נוסיף עוד מתודה. מה עוד אפשר שווינסטון יעשה?
-
3:52 - 4:01אולי נגרום לו לדבר. ניצור את Winston.prototype.talk. אנחנו יכולים לחבר כמה מתודות שנרצה לאב הטיפוס.
-
4:01 - 4:05נכתוב: "I'm Winston!" (אני ווינסטון)
-
4:05 - 4:13ואז נרשום כאן this.x+20 ו-this.y+150.
-
4:13 - 4:20וכמובן, לא קרה שום דבר, כי לא קראנו עדיין לפונקיה הזו.
-
4:20 - 4:25אז בואו נגרום לו לדבר. winstonTeen.talk()
-
4:25 - 4:30והופיעו המילים "אני ווינסטון"! ואם נקרא גם ל-winstonAdult.talk()
-
4:30 - 4:37טה-דה! אוקיי, עכשיו יש לנו טיפוס אובייקט Winston שיש לו מאפיינים: כינוי, גיל, מיקום X, מיקום Y
-
4:37 - 4:45ויש לו גם פונקציונליות - התנהגויות, מתודות - שמתנהגות בצורה שונה בתלות במאפיינים
-
4:45 - 4:51ואנחנו יכולים ליצור כמה מופעים שנרצה של Winston ולקרוא לכל המתודות האלו.
-
4:51 - 4:54מגניב, לא?
- Title:
- מתודות של אובייקטים - Object Methods (Video Version)
- Description:
-
זהו פשוט צילום מסך של שיעור הקוד האינטראקטיבי שלנו, שהוכן כדי להקל על הכנת כתוביות ותרגום. עדיף לצפות בשיעורים שלנו בכתובת:
https://www.khanacademy.org/cs/programming/This is just a screen grab of our interactive coding talk-through, prepared to make captioning and translation easier. It is better to watch our talk-throughs here:
https://www.khanacademy.org/cs/programming/ - Video Language:
- English
- Duration:
- 04:54
nataly.eliyahu edited Hebrew subtitles for Object Methods (Video Version) | ||
nataly.eliyahu edited Hebrew subtitles for Object Methods (Video Version) |