PracticU

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

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

פרויקט מעשי ב-#C - תוכנת צייר - חלק 26
הנושא בשיעור הוא קונסטרקטור (בנאי), הפונקציה שמאתחלת אובייקט ברגע היצירה. המטרה: לתת לקו ולמילוי צבע ועובי שאי אפשר לשנות אחרי שהאובייקט נוצר.
השלבים העיקריים
1. שדות לקריאה בלבד: העובי והצבע של הקו והמילוי הוגדרו כ-read only. מחוץ לבנאי אי אפשר לכתוב לשדה כזה, והקומפיילר מודיע על שגיאה.
2. בנאי במחלקת הבסיס: למחלקה Shape נוסף בנאי שמקבל float ושומר את העובי. רק הבנאי של Shape יכול לאתחל את השדה ה-read only שלה.
3. הפעלת הבנאי של הבסיס: הבנאי של FreeHand ושל Line קורא ל-base עם העובי, בשורה נפרדת כדי שיהיה ברור.
4. השגיאות שהופיעו: הקומפיילר הודיע שאין ל-Shape overload שמקבל ארגומנט אחד. בנוסף, השדה של העובי הוגדר כ-int במקום float, ותוקן.
איך זה עובד
הבנאי רץ כשכותבים new. ה-new מקצה מקום בזיכרון, ואז הבנאי מאתחל את המקום הזה. הבנאי עצמו לא מקצה זיכרון.
במחלקה אבסטרקטית אי אפשר לבצע new ישירות, אבל הבנאי שלה עדיין רץ כשיורש שלה נוצר. קודם רץ הבנאי של הבסיס, ורק אחר כך הבנאי של היורש.
הדבר הבא לתרגול: להשלים בנאי שמקבל את הצבע, עם שדה color לקריאה בלבד.
השיעור הבא בקורס: פרויקט מעשי ב-#C - תוכנת צייר - חלק 27

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

  1. 00:00

    הגדרת רוחב וצבע שלא ניתנים לשינוי

  2. 02:49

    הגדרת בנאי ל-FreeHand

  3. 04:16

    קריאה לבנאי של מחלקת הבסיס

  4. 05:01

    הוספת בנאי ל-Shape שמקבל רוחב

  5. 06:03

    מה קורה בזמן new ובקונסטרקטור

  6. 07:06

    אתחול חלק הבסיס לפני המחלקה היורשת

  7. 09:05

    בנאי של מחלקה אבסטרקטית בעקיפין

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

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

  1. 00:03

    טוב, אנחנו ממשיכים כרגע בלסדר את הקוד, אז דבר אחד נוסף שרצינו לעשות זה משהו שנקרא קונסטרקטור, וזה הדבר הבא. אז כאן אני בעצם מייצר לי את free end ופה את line, ופה אני נותן ל-s את width ואת color.

  2. 00:33

    עכשיו למעשה, אחרי שאני נותן ל-free end ול-line את ה-width ואת ה-color שלהם, ובוא נגיד שכרגע אני לא מעוניין שניתן יהיה לשנות אחרי זה את הצבע שלהם.

  3. 00:51

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

  4. 01:14

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

  5. 01:39

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

  6. 02:01

    מה שאני כן יכול לעשות זה את הדבר הבא. לפני האיפים אני אגדיר את FloatWe, S קל להם להשאיר כרגע פה כרגע, אני אגדיר את FloatWe וכשאני אצור לי את FreeHand אני אתן לו את We.

  7. 02:45

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

  8. 03:08

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

  9. 03:38

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

  10. 03:57

    read only field cannot be assigned חוץ מאשר לקונסטרקטור או בעידחול שדה. כאן אנחנו לא ניגשים לקונסטרקטור של הבסיס. אנחנו צריכים לאתחל את wits בקונסטרקטור של הבסיס.

  11. 04:17

    אז נוסיף פה גישה קונסטרקטור של הבסיס ופה אנחנו בטח אמורים להפעיל את הקונסטרקטור של שייפ וניתן לו פה את טוויט ולא כאן אולי נשים את הקונסטרקטור בסיס בשורה נפרדת שיותר ברור אם ננסה את זה להריץ עכשיו עדיין נקבל שגיאה כי הקונסטרקטור של הבסיס בואו נראה no overload for method shape takes one argument אין overload אין קונסטרקטור לשייפ אתם רואים בסוגריים בטורבונית את שייפ עם סוגריים

  12. 05:10

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

  13. 05:45

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

  14. 06:03

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

  15. 06:16

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

  16. 06:58

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

  17. 07:14

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

  18. 07:26

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

  19. 08:05

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

  20. 08:30

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

  21. 09:05

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

  22. 09:25

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

  23. 09:46

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

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

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

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

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

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

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

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