PracticU

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

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

מחלקה אבסטרקטית ב-NodeJS
ב-JavaScript אין מילת המפתח abstract, ולכן הסרטון מראה דרך לדמות מחלקה ופונקציה אבסטרקטיות.
מחלקה שאי אפשר ליצור ממנה אובייקט
1. המצב הרגיל: בלי מניעה אפשר לכתוב new Person(...) וליצור אובייקט ממנה.
2. בדיקה בקונסטרקטור: new.target מחזיר את המחלקה שבה נעשה new. אם זו Person, זורקים TypeError עם ההודעה שאי אפשר ליצור מופע ממחלקה אבסטרקטית.
3. מחלקות יורשות: כשנוצר Employee, new.target הוא Employee והבדיקה עוברת.
פונקציה אבסטרקטית
1. אין תחביר: השפה לא מאפשרת להגדיר מתודה כאבסטרקטית.
2. הדמיה: המתודה greet ב-Person זורקת שגיאה: you must implement the function greet.
3. דריסה: Employee, Customer ו-Supplier מממשים את greet בעצמם.
4. חסרון: אין קומפיילר שבודק שהמתודה נדרסה. מתודה שלא נדרסה תיכשל רק בזמן ריצה, כשקוראים לה.
זו הדרך הקרובה ביותר לאבסטרקציה ב-Node.js, ואפשר להשתמש בה במערכות שבונים.
השיעור הבא בקורס: משתנה סטטי ב-NodeJS

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

  1. 00:00

    מהי מחלקה אבסטרקטית ואין לה מילה שמורה

  2. 00:40

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

  3. 01:36

    מניעת יצירת אובייקט בעזרת new.target

  4. 02:51

    פונקציה אבסטרקטית ופתרון עם throw

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

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

  1. 00:02

    לאובג'קט אוריינטד קיים הנושא של אבסטרקטיות. מה זה אומר? איך אנחנו יכולים בעצם למנוע יצירה של אובייקט ממחלקה מסוימת?

  2. 00:14

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

  3. 00:31

    זה קיים בהמון שפות Object Oriented, אין את זה ב-Aigma Script 6, אבל כן אפשר לגרום למחלקה להיות אבסטרקטית. אז בואו נראה איך עושים את זה ב-JavaScript או ב-Node.js.

  4. 00:41

    קודם כל, האם אני בעצם כן יכול לבנות אובייקט מהמחלקה Person? אז התשובה היא כמובן, כרגע, בואו נצרף כאן עוד אובייקט אחד, יש לנו כאן Person, האמת שאת שני אלה אפשר כבר להעיף, זה היה רק דמו, ובואו נניח שיש לנו את Kermit the Frog והוא בן 15. וכרגע אם אנחנו נבצע הרצה של התוכנית

  5. 01:14

    הזאת, בואו נרווח פה טיפה, ואנחנו רואים שיש לנו את Kermit the Frog והוא בן 15. אבל זה בדיוק הנקודה שאנחנו רוצים למנוע.

  6. 01:29

    הקטע של מחלקה אבסטרקטית היא מחלקה שאנחנו לא רוצים שמישהו ייצר ממנה אובייקט. המטרה שלה היה רק בשביל לרשת אותה. אז איך אנחנו גורמים למחלקה person שלא ניתן יהיה לייצר ממנה אובייקט?

  7. 01:43

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

  8. 02:02

    החריגה שמיועדת לזה היא טייפ אירור, טייפ אירור, וכלומר החריגה הנכונה יותר לשימוש, כי יש פה בעיה טייפים מסוימת, ובואו נכתוב cannot create an instance from the abstract last person זה כל מה שאנחנו צריכים לעשות במחלקה בכדי להפוך אותה לכביכול אבסטרקטית.

  9. 02:29

    בואו ניקח בדיוק את אותה התוכנית, נריץ אותה, ננקה רגע את המסך, נריץ והנה יש לנו כי not create an instance from the abstract class person.

  10. 02:41

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

  11. 02:57

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

  12. 03:16

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

  13. 03:40

    שיהיה להם את הגריט. אז אין באמת משהו כזה, כל מה שאנחנו עושים זה throw new arrow,

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

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

ההרצאה הבאה: משתנה סטטי ב-NodeJS

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

  • מחלקה אבסטרקטית ב-TypeScript
  • מחלקה אבסטרקטית - Abstract Class
  • יצירת מחלקה עם כל ההגדרות - Config Class - חלק 1
  • התקנה של NodeJS - פרויקט NodeJS

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

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