PracticU

הוספת לוגיקה במחלקות Model

בלי כתוביותעם כתוביות
PracticU › קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט › הוספת לוגיקה במחלקות Model
מילון מושגים:
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
מודל - רכיב שמייצג את הנתונים ואת הלוגיקה העסקית באפליקציה. גם ייצוג מופשט של מערכת או תהליך.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
בוליאני - סוג נתונים שיכול לקבל אחד משני ערכים בלבד: אמת (true) או שקר (false).
עדכון - שינוי שמביא תוכנה או מערכת לגרסה חדשה יותר, כדי לתקן תקלות, לסגור חולשות אבטחה או להוסיף יכולות.
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.
עמודה - שדה בטבלת מסד נתונים שמחזיק ערך מסוג מסוים עבור כל שורה, למשל שם או תאריך.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.

הוספת לוגיקה במחלקות Model
לפעמים כדאי להוסיף לוגיקה פשוטה ישירות למחלקות ה-Model, כדי לא לחזור על אותן בדיקות בכל מקום באפליקציה. ההרצאה מציגה שלוש דוגמאות: מאפיין, ToString ושם מלא.
איך זה עובד
1. המאפיין IsFreeGift: במחלקה Gift רוצים לדעת אם מתנה ניתנת בחינם, כלומר שהמחיר שלה שווה 0. מאחר שזה ערך בוליאני אחד, מגדירים פרופרטי עם get בלבד שמחזיר אם Price שווה 0, ולא פונקציה.
2. NotMapped: מעל הפרופרטי מוסיפים [NotMapped], כדי שמיגרציה או update database לא יוסיפו לו עמודה. אפשר להסתדר גם בלי זה כי אין set, אבל כדאי להגדיר כדי שיהיה ברור שזו לוגיקה ולא נתון בדאטה בייס.
3. ToString: ב-Customer דורסים את ToString כך שיחזיר שם פרטי, שם משפחה ואימייל. כך אפשר להציג את האובייקט בכל מקום, ושליחה שלו להדפסה קוראת ל-ToString אוטומטית.
4. FullName: מוסיפים פרופרטי FullName שמחזיר את השם הפרטי, רווח ושם המשפחה. גם כאן משתמשים ב-[NotMapped], ואין צורך בו מעל פונקציות.
5. הדגמה: בשירות כותבים PrintAllCustomers שמקבלת את כל הלקוחות ובלולאה foreach שולחת כל אחד להדפסה. המרצה מציין שזה לא משהו שכדאי לעשות בשירות, אלא רק לצורך הדוגמה.
6. בדיקת התוצאה: מוחקים את הלקוחות מהדאטה בייס, מריצים, ורואים את ההדפסה אחרי הוספה, אחרי עדכון (עם האימייל החדש) ואחרי מחיקה.
שימו לב
המרצה מדגיש שמדובר בלוגיקה קטנה בלבד. כשהלוגיקה מורכבת היא שייכת לשירות.
בסוף אפשר להוסיף מאפיינים ופונקציות פשוטות למחלקות המודל, ולסמן אותם כך שלא ישפיעו על הדאטה בייס.

פרקי ההרצאה: הוספת לוגיקה במחלקות Model

  1. 00:00

    הוספת לוגיקה למחלקות המודל

  2. 00:38

    הוספת מאפיין בוליאני IsFree

  3. 01:19

    הגדרת המאפיין כ-NotMapped

  4. 01:53

    דריסת פונקציית ToString

תמלול ההרצאה: הוספת לוגיקה במחלקות Model

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

  1. 00:02

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

  2. 00:21

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

  3. 00:34

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

  4. 00:52

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

  5. 01:23

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

  6. 01:41

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

  7. 01:57

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

לקורס המלא: קורס Entity Framework Core

ההרצאה הקודמת: שימוש במחלקת ה-Service

ההרצאה הבאה: יצירת מסד נתונים - של חנות בגדים

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

  • The V Model
  • הוספת VMkernel
  • יצירת מודל - Product Model
  • הוספת Request לטסט

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

  • קורס דוט-נט - NET Core. - עם Rest API
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio