PracticU

פולימורפיזם ב-NodeJS

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › פולימורפיזם ב-NodeJS
מילון מושגים:
פולימורפיזם - עיקרון בתכנות מונחה עצמים שבו אובייקטים ממחלקות שונות מגיבים לאותה פעולה כל אחד בדרכו.
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
JavaScript - שפת תכנות שרצה בעיקר בדפדפן ומוסיפה אינטראקטיביות לדפי אינטרנט. רצה גם בצד השרת באמצעות Node.js.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
ירושה - מנגנון בתכנות מונחה עצמים שבו מחלקה יורשת תכונות ופעולות ממחלקת אב, ויכולה להרחיב אותן.
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.

פולימורפיזם ב-NodeJS
הסרטון מסביר פולימורפיזם ב-JavaScript, ומראה מערך אחד שמכיל אובייקטים משלוש מחלקות שונות מאותו עץ ירושה.
הרעיון
1. אין טיפוס למשתנה: ב-JavaScript הטיפוס שייך לאובייקט ולא למשתנה. לכן משתנה אחד יכול להחזיק כל אובייקט מאותה היררכיה.
2. הגדרה: לפי הדובר, פולימורפיזם הוא משתנה שמחזיק אובייקטים שונים מאותו עץ ירושה, ולא רק דריסה של מתודה.
הדוגמה
1. שלוש מחלקות: Employee, Customer ו-Supplier יורשות מ-Person. ל-Customer יש כרטיס אשראי ול-Supplier יש מדינת משלוח.
2. מערך אחד: people.push(...) מכניס אובייקטים מכל סוג, ולולאת for...of קוראת ל-display של כל אחד.
3. תוצאה: כל אובייקט מדפיס את הפרטים של המחלקה שלו, למרות שכולם נמצאים באותו מערך.
מניעת קריסה
1. אובייקט לא מתאים: אם מכניסים למערך מספר, הקריאה ל-display נכשלת עם p.display is not a function.
2. בדיקת instanceof: if (p instanceof Person) מוודא שלאובייקט יש את המתודה, כי כל מחלקה שיורשת מ-Person מקבלת אותה. הדובר ממליץ על הבדיקה הזאת במערכים הטרוגניים.
כך אפשר לעבוד עם מערך של סוגים שונים בצורה בטוחה.
השיעור הבא בקורס: מחלקה אבסטרקטית ב-NodeJS

פרקי ההרצאה: פולימורפיזם ב-NodeJS

  1. 00:00

    מהו פולימורפיזם ב-JavaScript

  2. 00:42

    יצירת מחלקות Customer ו-Supplier שיורשות מ-Person

  3. 02:06

    הגדרת פולימורפיזם כמשתנה שמחזיק אובייקטים שונים

  4. 03:09

    מערך של אובייקטים מסוגים שונים

  5. 04:14

    הצגת כל אובייקט לפי המחלקה האמיתית שלו

תמלול ההרצאה: פולימורפיזם ב-NodeJS

הטקסט המלא של הדקות הראשונות בהרצאה «פולימורפיזם ב-NodeJS» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    הכלי הבא שקיים לנו ב-object-oriented זה הפולימורפיזם רב-צורתיות. בג'אווה סקריפט פולימורפיזם הוא מאוד נייטיב לשפה מפני שבג'אווה סקריפט נייטיב אין לנו טיפוס נתונים למשתנה, יש לנו טיפוס נתונים רק לאובייקט, כאשר בשפות אחרות יש טיפוס נתונים גם למשתנה וגם לאובייקט.

  2. 00:31

    בגלל שאין לנו טיפוס נתונים למשתנה אנחנו פשוט רושמים או const או var או let אז אוטומטית זה מאפשר כאן לבצע פולימורפיזם אבל בואו נראה דוגמה מהירה למה הכוונה בואו רגע נחזיר את זה לכאן נפתח את זה ונשכפל את employee ונייצר נניח customer עכשיו customer יורש מפרסון במקום salary

  3. 01:05

    יש לו נניח קרדיט קארד ובואו נכניס לכאן קרדיט קארד לכאן קרדיט קארד ונציג את הקרדיט קארד והנה יש לנו עכשיו customer בנינו אותו במהירות ובואו נבנה עוד אחד נניח שיש לנו supplier supplier וsupplier כבר נשים אותו פה גם יורש מפרסון אין לו קרדיט קארד יש יש לו שיפינג קאנטרי.

  4. 01:45

    בואו נדביק פה שיפינג קאנטרי, נדביק פה שיפינג קאנטרי, ויש לנו כאן שיפינג קאנטרי בהדפסה. והנה יש לנו עכשיו סדרה של מחלקות שכולם יורשים מפרסון.

  5. 02:05

    אנחנו רוצים לראות את הקונספט של הפולימורפיזם. חלק ממי שמגדיר פולימורפיזם או מהגדרות של פולימורפיזם אומרות שפולימורפיזם זה פשוט דריסה של פונקציה.

  6. 02:17

    אני פחות מתחבר להגדרה הזאת, דריסה של פונקציה זה אכן איזשהו רב-צורתיות של אותה פונקציה, אבל אני יותר מתחבר להגדרה של פולימורפיזם של איזשהו משתנה שיכול להחזיק בתוכו כל אובייקט שהוא מאותה היררכיית הורשה.

  7. 02:38

    בואו רק נבנה פה גם את אמפלואי, גם את קסטומר, הנה יש לנו פה את קסטומר וגם את סופלייר. יש לנו כבר את כל המחלקות, את פרסון כרגע אנחנו לא צריכים, רק נשים אותו בהולד.

  8. 02:54

    והנה בנינו כאן אמפלואי, האמת בואו נבנה את זה מחדש בצורה יותר נקייה. בואו ניקח הרי של אנשים, מערך של אנשים, ונכניס לתוכו סדרה של אובייקטים.

  9. 03:16

    נקודה פוש בוא תכניס אובייקט ראשון שיהיה ניו אמפלואי ולאמפלואי אמרנו שיש שם פרטי שם משפחה יש לו גיל ויש לו משכורת בואו נשכפל רגע ונכניס גם ניו קסטומר הנה שם אחר גיל אחר ולקסטומר היה קרדיט קארד 5, 3, 2, 6 in a credit card ויש לנו את supplier ויש לנו כאן את

  10. 04:06

    הוגי פלצת 14 שיפינג קאנטרי USA. עכשיו אנחנו רוצים לרוץ בלולאה P of people ולגשת ולהציג כל אחד מהם בואו אפילו נעשה פה איזשהו קונסולוג קו הפרדה כזה כדי לראות את זה בצורה יותר רגועה אם כל הדפסה תציג לנו את האובייקט האמיתי את הדיספליי של האובייקט האמיתי ובעצם פולימורפיזם שעובד בצורה טובה ובג'אווה סקריפט זה נייטיב לשפה

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: הורשה ב-NodeJS

ההרצאה הבאה: מחלקה אבסטרקטית ב-NodeJS

הרצאות קשורות מקורסים אחרים

  • פולימורפיזם ב-TypeScript
  • רב-צורתיות פולימורפיזם - Polymorphism
  • התקנה של NodeJS - פרויקט NodeJS

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React