Return to Video

טיפוסי אובייקטים - 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:30
    object 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/

more » « less
Video Language:
English
Duration:
06:51

Hebrew subtitles

Revisions