טיפוסי אובייקטים - Object Types (Video Version)
-
0:01 - 0:06עכשיו שאתם מבינים את היסודות של Javascript, אני רוצה ללמד אתכם דרך מגניבה להשתמש ב-Javascript
-
0:06 - 0:10משהו שנקרא "תכנות-מונחה-עצמים" (OOP - "object-oriented programming")
-
0:10 - 0:13אבל קודם אנחנו צריכים להבין למה זה שימושי
-
0:13 - 0:18אז יצרתי תוכנה שתהיה טובה יותר ברגע שנשתמש בתכנות מונחה עצמים
-
0:18 - 0:25זו תוכנית די מגניבה מלכתחילה. למעלה, יש לי שני משתנים ששומרים אובייקטים פשוטים (object literal) בתוכם
-
0:25 - 0:30object literal זה סוג של אובייקט שכבר למדנו עליו, שאנו יוצרים עם שימוש בסוגריים מסולסלים
-
0:30 - 0:34ובתוכם אנו שמים את שמות המאפיינים והערכים שלהם.
-
0:34 - 0:39אז יש לנו שני משתנים שהם אובייקטים, וכאן למטה יש את הפונקציה drawWinston
-
0:39 - 0:41שמצפה לפרמטר יחיד
-
0:41 - 0:48ואז הפונקציה מציירת את הפרמטר שהועבר - היא מציירת תמונה המבוססת על מאפייני ה-X וה-Y של האובייקט
-
0:48 - 0:53וכותרת שמבוססת על מאפייני הגיל והכינוי שלו.
-
0:53 - 0:58וכאן בסוף למטה, אנחנו קוראים ל-drawWinston על שני האובייקטים, teen ו-adult,
-
0:58 - 1:01וזה מה שגורם להדפסות להופיע.
-
1:01 - 1:06נחמד. אם נסתכל כאן על האובייקטים,
-
1:06 - 1:11שימו לב שהם ממש דומים אחד לשני.
-
1:11 - 1:18לשניהם יש את אותם סוגי מאפיינים, ושניהם יכולים להיות מועברים לפונקציה drawWinston
-
1:18 - 1:24למעשה, אם תחשבו על זה, הם שניהם מתארים סוג של ווינסטון
-
1:24 - 1:29נוכל לחשוב שיש מעין סוג של ווינסטון מופשט בעולם
-
1:29 - 1:36ולכל ווינסטון יש את אותו סט של מאפיינים, כמו כינוי וגיל, ומיקום X ו-Y
-
1:36 - 1:42מה שעשינו כאן, זה יצרנו שני מופעים של ווינסטון
-
1:42 - 1:48כך שכל אחד מתאר ווינסטון ספציפי. אחד מהם הוא ווינסטון מתבגר, והשני הוא ווינסטון בוגר.
-
1:48 - 1:55אבל שניהם מאוד דומים, יש להם הרבה מאפיינים דומים.
-
1:55 - 2:01אם תחשבו על זה, הרבה דברים בעולם עובדים בצורה כזאת, שיש לנו סוגי מידע מופשטים כמו בני אדם או אנשים
-
2:01 - 2:06וכולנו פשוט מופעים ספציפיים של הסוג המופשט, עם המאפיינים הייחודיים שלנו.
-
2:06 - 2:15אנחנו יכולים להשתמש בשיטות של תכנות מונחה עצמים ב-Javascript, כך שמשתני ווינסטון האלו
-
2:15 - 2:22יהיו ממש מופעים של אובייקט ווינסטון מופשט, כך שהם ידעו שיש להם מאפיינים משותפים.
-
2:22 - 2:28כדי לעשות זאת, דבר ראשון עלינו לתאר את הטיפוס המופשט הזה של ווינסטון
-
2:28 - 2:31נעשה זאת על ידי כך שניצור משתנה
-
2:31 - 2:39נשמור את הטיפוס הזה בתוך משתנה. נרשום: var Winston, עם אות W גדולה - נרצה תמיד להתחיל את שמות טיפוסי האובייקטים שלנו עם אות גדולה -
-
2:39 - 2:42ונרשום שזה שווה לפונקציה.
-
2:42 - 2:47הפונקציה זו היא פונקציה מיוחדת שנקראת פונקציית בנאי (constructor)
-
2:47 - 2:52כי זה מה שהולך להיקרא כל פעם שנרצה ליצור מופע חדש של ווינסטון.
-
2:52 - 2:58אז אנחנו רוצים ליצור את teenageWinston, אז נקרא לפונקציה הזו, ואם נרצה ליצור adultWinston, גם אז נקרא לפונקציה הזו.
-
2:58 - 3:06זה אומר שהפונקציה הזו צריכה לקבל את הפרמטרים שהיא צריכה לדעת עליהם בשביל ליצור אובייקט ווינסטון שלם
-
3:06 - 3:11במקרה הזה, היא צריכה לדעת כינוי, גיל, מיקום X, ומיקום Y.
-
3:11 - 3:15אחרי שקיבלנו את הפרמטרים האלו אנחנו צריכים לעשות איתם משהו
-
3:15 - 3:21אז אנחנו צריכים לחבר את המידע הזה לאובייקט של ווינסטון.
-
3:21 - 3:29אז נשתמש במילה חדשה בשפה - "this". המילה this מתייחסת למופע הנוכחי של האובייקט.
-
3:29 - 3:35אז נרשום this.nickname, כלומר מאפיין הכינוי של האובייקט הזה שווה
-
3:35 - 3:38למה שמעובר לפונקציית הבנאי, אוקיי?
-
3:38 - 3:46ו-this.age שווה לגיל שמועבר, this.x שווה ל-x שמועבר, ו-this.y
-
3:46 - 3:48שווה ל-y שמועבר.
-
3:48 - 3:58אז עכשיו יש לנו את הטיפוס המופשט שנקרא ווינסטון, ויש לו פונקציית בנאי שאנחנו יכולים להשתמש בה כדי ליצור ווינסטון חדש.
-
3:58 - 4:00בואו ננסה להשתמש בה!
-
4:00 - 4:05ניצור את winstonTeen שוב, אבל הפעם נרשום winstonTeen שווה
-
4:05 - 4:10ובמקום סוגריים מסולסלים נרשום new Winston
-
4:10 - 4:14מה שאומר שאנחנו מנסים ליצור מופע חדש של ווינסטון
-
4:14 - 4:22ואז נעביר את המידע שצריך - "Winsteen", 15, 20, 50, אוקיי?
-
4:22 - 4:28ועכשיו נוכל למחוק את הקוד הישן כי אנחנו לא צריכים אותו יותר.
-
4:28 - 4:31בסדר? זה יצר ווינסטון חדש בשם Winsteen.
-
4:31 - 4:36ונוכל לרשום גם winstonAdult = new Winston
-
4:36 - 4:40והכינוי שלו יהיה "Mr. Winst-a-lot"
-
4:40 - 4:47והוא בן 30, והמיקום שלו הוא 229, 50. בסדר? ואז נוכל למחוק את האובייקט הפשוט
-
4:47 - 4:51טה-דה! הקוד שלנו עדיין עובד.
-
4:51 - 4:58מה שעשינו כאן זה לומר שיש סוג של אובייקט מופשט, סוג של מידע, שהוא Winston
-
4:58 - 5:05ואנחנו יכולים ליצור מופעים חדשים של ווינסטון שיש להם מאפיינים ייחודיים להם
-
5:05 - 5:09אנחנו זוכרים את ערכי המאפיינים האלו בתוכם
-
5:09 - 5:14ולזכור זה ממש חשוב. כאן בפנים, יש לנו את this.nickname, this.age
-
5:14 - 5:20אם בטעות לא היינו שומרים משהו ב-this.age, עכשיו זה אומר שזה "undefined" (לא מוגדר)
-
5:20 - 5:23זה כי כאן למטה, הפונקציה drawWinston
-
5:23 - 5:28מצפה שלאובייקט שמועבר אליה יהיה מאפיין age
-
5:28 - 5:31ואם לא היינו יוצרים את this.age
-
5:31 - 5:34אז אין לו מאפיין גיל, נכון? העברנו את הגיל לפונקציית הבנאי
-
5:34 - 5:39אבל אז לא עשינו איתו כלום, אנחנו צריכים לחבר את הגיל לאובייקט באמצעות המילה this.
-
5:39 - 5:41נחזיר את השורה הזאת.
-
5:41 - 5:46אולי אתם חושבים, יופי, הקוד עכשיו עובד, וכתבת קוד יפה
-
5:46 - 5:51אבל, בסופו של דבר כל מה שעשינו זה להשיג את מה שהיה לנו קודם
-
5:51 - 5:56אבל הנה הדבר המגניב. כל הWinstonים שלנו עוברים דרך אותה פונקציית בנאי
-
5:56 - 6:01אז אם נרצה, אנחנו יכולים לשנות דברים, לשנות משהו לגבי ווינסטון
-
6:01 - 6:06כל הווינסטונים, עם שינוי רק פה. אז למשל גיל, אם נרצה לרשום פה "yrs old"
-
6:06 - 6:13נוכל פשוט לשים את זה כאן, ועכשיו בכל הווינסטונים שלנו יהיה רשום "15 yrs old" או "30 yrs old", נכון?
-
6:13 - 6:17אז לוקחים את החלק שמיוחד בכל אחד מהם, אבל אז יש להם גם דברים משותפים
-
6:17 - 6:21וזה דבר ממש מגניב לגבי תכנות מונחה עצמים, הרעיון
-
6:21 - 6:27שיש סוגי אובייקטים בעולם, ואפשר ליצור מופעים של האובייקטים האלו
-
6:27 - 6:30ושישנם דברים דומים, משותפים לכולם, כמו שלכולם יש את אותם מאפיינים
-
6:30 - 6:36וישנם דברים שונים - הערך של המאפיין הזה שונה מהערך של המאפיין הזה אצל המופע השני
-
6:36 - 6:41אנחנו יכולים לבצע עם המופעים האלו את אותם התנהגויות, לקרוא לאותם פונקציות איתם
-
6:41 - 6:46ולהתשמש בהם בצורה דומה. אז זה כמה מהדברים המגניבים לגבי תכנות מונחה עצמים
-
6:46 - 6:49אבל כפי שתראו, יש גם עוד המון אחרים.
-
6:49 - 6:51הישארנו עימנו!
- Title:
- טיפוסי אובייקטים - Object Types (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:
- 06:51
nataly.eliyahu edited Hebrew subtitles for Object Types (Video Version) | ||
nataly.eliyahu edited Hebrew subtitles for Object Types (Video Version) |