PracticU

פרויקט מעשי ב-#C - תוכנת צייר - חלק 20

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

פרויקט מעשי ב-#C - תוכנת צייר - חלק 20
בשיעור הזה מתגלה באג בציור: כשמופיע קו ישר (Line) ברשימה, הקוד שמנסה להמיר כל איבר לציור חופשי (Freehand) נופל בשגיאת המרה. הפתרון הראשון שנבחר מסורבל, והשיעור מסביר למה צריך דרך טובה יותר.
השלבים העיקריים
1. זיהוי הבעיה: Paint מנסה להמיר כל איבר ברשימה לטיפוס Freehand, ולכן קו ישר גורם ל-InvalidCastException. בלחיצה על כפתור הכלי אי אפשר לדעת מה נמצא ברשימה.
2. בדיקת הטיפוס בזמן ריצה: כל איבר נבדק כ-object, ולפי הטיפוס שלו מצייר כ-Freehand או כ-Line. כך הקוד יודע מה הוא מצייר.
3. ציור בקריאה אחת: קו ישר מצויר בקריאה אחת ל-DrawLine בין שתי הנקודות שלו, בלי לולאה.
4. התוצאה: הקוד עובד, אבל הוא מסורבל. כל סוג ציור חדש ידרוש עוד בדיקה ועוד ענף בתוך הפונקציה.
שימו לב
השיעור מציב כאתגר לחשוב על תכנות מונחה עצמים. המטרה היא שכל סוג ציור ידע לצייר את עצמו, כך שהפונקציה הראשית לא תצטרך לדעת על כל הסוגים.
בסיום השיעור התלמיד מבין למה בדיקות טיפוס רבות בתוך לולאה הן סימן להצורך בפתרון מונחה עצמים, ומכיר את הבעיה שמונעת את קריסת התוכנה.
השיעור הבא בקורס: פרויקט מעשי ב-#C - תוכנת צייר - חלק 21

פרקי ההרצאה: פרויקט מעשי ב-#C - תוכנת צייר - חלק 20

  1. 00:00

    שגיאת InvalidCast באירוע Paint

  2. 01:16

    זיהוי סוג האובייקט לפני ההמרה

  3. 01:58

    המרה ל-FreeHand או ל-Line

  4. 03:33

    ציור הקו בעזרת DrawLine

תמלול ההרצאה: פרויקט מעשי ב-#C - תוכנת צייר - חלק 20

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

  1. 00:06

    טוב אז בשיעור הקודם הכל עבד יפה מאוד עד שהגענו לנקודה של הפיינט בפיינט הכל קרה אז אם נצייר שוב free hand ונגרום לפיינט להתרחש אז לא תהיה קריסה נוסיף אולי line ונגרום לפיינט להתרחש ויש לנו קריסה מה בעצם קרה הוא אומר שיש לנו invalid cast exception wasn't handled טוב בכלל לא טיפלנו בפיינט אני יכול לקחת אובייקט of type line to

  2. 00:51

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

  3. 01:23

    הפעם אנחנו צריכים להחליט מה יש לנו בפנים, מה בעצם קיבלנו, איך נדע שבעצם יש לנו freehand או line. השאלה היא איך הוא יודע שיש שם בעצם, נכון?

  4. 01:40

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

  5. 01:48

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

  6. 02:09

    נשים פה אובייקט. אובייקט זה בעצם כל דבר, נקרא לו או. ופה נשאל, אם או is free-hand, אז ככה וככה, זה כמו שהיה עד היום, לולאה וכולי.

  7. 02:39

    אבל רגע, אבל אין לנו פה את freehand, אז ניצור freehand מתוך o, נעשה פה casting ל-freehand, ואם זה freehand ואם זה line, אז נגדיר פה line l שווה ל-line מתוך o, זה נוציא, ובמקום FA נשים L. יפה, אבל אנחנו לא מציירים באותה שיטה.

  8. 03:33

    למעשה אנחנו לא צריכים תלולאה, אנחנו בסך הכל צריכים קריאה אחת פשוטה. אנחנו רוצים לצייר על ידי P אמנם מ-L.P1X ל-L.P1Y ל-L.P1Y.

  9. 04:05

    E2X אל נקודה 2Y. בואו נריץ את זה.

לקורס המלא: פרויקט מעשי ב‑#C אונליין

ההרצאה הקודמת: פרויקט מעשי ב-#C - תוכנת צייר - חלק 19

ההרצאה הבאה: פרויקט מעשי ב-#C - תוכנת צייר - חלק 21

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

  • תרגיל 24 - תוכנת צ'אט - חלק 1
  • פרויקט מעשי ב-#C - ספר טלפונים - חלק 1
  • תרגיל מעשי Delegate Event
  • שדרוג צייר שלנו על canvas

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

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס תכנות מתקדם - #Advanced .NET C
  • קורס WCF - תקשורת למתקדמים בדוט-נט