PracticU

יצירת מחלקת מודל - Model Class

בלי כתוביותעם כתוביות
PracticU › קורס ריאקט - React › יצירת מחלקת מודל - Model Class
מילון מושגים:
מודל - רכיב שמייצג את הנתונים ואת הלוגיקה העסקית באפליקציה. גם ייצוג מופשט של מערכת או תהליך.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
TypeScript - שפת תכנות המרחיבה את JavaScript בהוספת טיפוסים, ומתקמפלת ל-JavaScript רגיל.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
Northwind - מסד נתונים לדוגמה של מיקרוסופט, המדמה חברת מסחר ומשמש ללימוד ולהדגמת שאילתות SQL.
צד שרת - החלק של היישום שרץ בשרת ואחראי על הלוגיקה, מסדי הנתונים והעיבוד שמאחורי הקלעים.
באג - תקלה או שגיאה בקוד שגורמת לתוכנה להתנהג בניגוד למצופה.

יצירת מחלקת מודל - Model Class
לפני שמושכים מידע מהשרת צריך להגדיר מחלקת מודל, כלומר טיפוס שמתאר בדיוק את האובייקטים שהשרת מחזיר. ההרצאה מראה איך בונים אותה ב-TypeScript ולמה כדאי להגדיר אותה כ-interface ולא כ-class.
קודם מסתכלים על המידע
גולשים לכתובת המוצרים ורואים JSON: סוגריים מרובעים הם מערך, וסוגריים מסולסלים הם אובייקט. לכל מוצר יש id, name, price, stock ו-imageName. המידע בשרת המקומי שונה מעט מהמידע המקורי של Northwind (שבו השדות נקראים product ID, product name ו-unit price ואין תמונות), כדי שיהיה קל יותר לפתח.
איך בונים את המודל
1. מחלקת מודל: זו מחלקה שמכילה מידע טהור בלבד, כלומר רק הנתונים שמגיעים מה-Backend.
2. תיקייה וקובץ: בתוך src פותחים תיקייה models ויוצרים בה קובץ product-model.ts. כדאי לסיים את השם ב-model, כדי שלא יתבלבלו עם קומפוננט בשם product.
3. שמות זהים בדיוק: שמות המשתנים חייבים להיות זהים לאלה שהשרת שולח, כולל אותיות גדולות וקטנות. אם מגדירים ID והשרת שולח id, המידע ייכנס למשתנה אחר ולא נוכל להגיע אליו.
4. הגדרת השדות: id, price, stock הם number, ו-name ו-imageName הם string. אחר כך מחצינים עם export default.
class או interface
מה שמגיע מהשרת הוא literal object, ולא אובייקט מהמחלקה שלנו. לכן הוא מכיל רק משתנים. השרת לא שולח פונקציות, וכל פונקציה כמו toString שנגדיר במחלקה תיראה קיימת ב-TypeScript, אבל לא תהיה באובייקט בפועל. זה מקור לבאגים.
מכאן ההעדפה לשימוש ב-interface: הוא רק דקלרטיבי, לא מאפשר להגדיר בו פונקציות, ומתאר היטב literal object. מורידים את ה-public. במחלקה אפשר להגדיר פונקציות סטטיות, כי הן שייכות למחלקה ולא לאובייקט. בהרצאה בוחרים להשאיר interface, ואם יהיה צורך בהמשך עוברים ל-class.
כעת אפשר לבנות מהמודל מערכים ולקבל מהשרת את הנתונים עם השלמה אוטומטית (IntelliSense) מ-TypeScript.
השיעור הבא בקורס: שליפת מידע עם Azios

פרקי ההרצאה: יצירת מחלקת מודל - Model Class

  1. 00:00

    בחינת המידע המוחזר מהשרת

  2. 01:15

    מהי מחלקת מודל

  3. 02:35

    יצירת קובץ product model

  4. 03:30

    התאמת שמות המשתנים לשרת

  5. 05:04

    הוספת מאפיינים וחציית המחלקה

  6. 05:41

    מחלקה מול Interface

תמלול ההרצאה: יצירת מחלקת מודל - Model Class

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

  1. 00:02

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

  2. 00:22

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

  3. 00:34

    יש לו name, יש לו price, יש לו stock, יש לו image name. הערה קלה, זה דומה למידע האמיתי של חברת Northwind.

  4. 00:47

    יש פה קצת שינוי מהמידע האמיתי. המידע האמיתי נקרא product ID ו-product name ו-unit price ואין לו באמת תמונות. יש לו פה בסרבר המקומי הזה קצת שינויים שהם יהיו יותר קלים לפיתוח, מי שרוצה להשתמש במידע הזה של Northwind.

  5. 01:09

    מה שאנחנו רואים זה כל אובייקט, זה מה שיש לו. ID, Name, Price, Stock ו-Image Name. מה שאנחנו צריכים לעשות זה לבנות משהו שנקרא מחלקת מודל.

  6. 01:22

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

  7. 01:40

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

  8. 02:00

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

  9. 02:14

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

  10. 02:41

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

  11. 03:12

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

  12. 03:47

    שלנו, זאת אומרת אם יש לי ID אז אני חייב שהוא יהיה באותו ניימינג אני לא יכול לבנות אותו ID בצורה כזאת לא יודע בא לי שה-i יהיה i גדולה doesn't fly לא יעבוד למה מפני שהשרת הולך להביא לנו ID עם i קטנה אם אנחנו נגדיר ID עם i גדולה או ID עם כל אותיות גדולות בצורה כזאת כמובן פה זה number זה אומר שיהיה לנו משתנה במחלקה שנקראת ID בצורה כזאת,

  13. 04:24

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

  14. 04:49

    במילים אחרות, אתם חייבים להגדיר את המשתנים בול לפי מה שהשרת מביא לכם, טוק קיי סנסיטיב, לא לשנות אותם במילימטר. אז הנה יש לנו ID באותיות קטנות, ID בצורה כזאת, ובואו נוסיף public name, זה כמובן סטרינג, בואו נוסיף public price, זה כמובן number,

  15. 05:12

    בואו נוסיף public stock, זה number, היה לנו שם public image name, וזה סטרינג, בואו נסתכל שזה המידע, name, price, stock, image name, שימו לב ל-N הגדולה ול-I הקטנה, זה חייב להיות אותו דבר, בול.

  16. 05:31

    בואו נחצין את זה, export default product model וסיימנו לבנות את מחלקת המודל. אז קודם כל עיקרון מאוד חשוב, אמרנו naming חייבים להיות אותו דבר.

  17. 05:46

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

לקורס המלא: קורס ריאקט אונליין

ההרצאה הקודמת: התקנת Northwind אוטומטית דרך npm

ההרצאה הבאה: שליפת מידע עם Azios

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

  • יצירת מודל - Product Model
  • The V Model
  • הרחבת מחלקת Model - C# Entity Framework
  • The R Class

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

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