PracticU

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

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

פרויקט מעשי ב-#C - תוכנת צייר - חלק 22
בשיעור הזה מעבירים את הפונקציה שמציירת קו חופשי מתוך הטופס למחלקה Freehand. הטופס מבקש מהאובייקט לצייר את עצמו, ואינו צריך לדעת איך זה נעשה.
השלבים העיקריים
1. הוספת פונקציה לאובייקט: מוסיפים למחלקה Freehand פונקציה בשם Draw. Visual Studio יכול ליצור את השלד שלה בעזרת הצעה של השם.
2. העברת הקוד: הלולאה שמציירת את הקו מועתקת לתוך Draw. בתוך המחלקה השדות נגישים ישירות, בלי שם האובייקט מלפנים.
3. קבלת Graphics: הפונקציה מקבלת Graphics כפרמטר, כי היא צריכה ערוץ ציור. הטופס מעביר לה את e.Graphics מתוך אירוע Paint.
4. קריאה מ-Paint: אירוע Paint הופך לפשוט: הוא מבקש מהאובייקט לצייר, ולא מציג את פרטי הלולאה.
5. אחריות: המורכבות של הציור נשארת בתוך האובייקט. הטופס מאציל את העבודה.
שימו לב
- הרעיון נקרא אנקפסולציה: האובייקט אחראי על הנתונים שלו ועל הפעולות שמתבצעות עליהם.
- כתרגיל, מוסיפים גם לליין פונקציית ציור משלו, והשלב הבא יציג עקרונות נוספים ויפתור את הבעיה של הקו הישר.
בסיום השיעור התלמיד יודע להעביר לוגיקת ציור לתוך מחלקה, ולקרוא לה מהטופס עם ערוץ הציור המתאים.
השיעור הבא בקורס: פרויקט מעשי ב-#C - תוכנת צייר - חלק 23

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

  1. 00:00

    מגבלות הקוד הקיים לפני השינוי

  2. 01:26

    מעבר לתכנות מונחה עצמים OOP

  3. 03:36

    הוספת מתודת Draw למחלקת FreeHand

  4. 05:42

    העברת Graphics כפרמטר לציור

  5. 06:29

    בדיקת הציור בעזרת נקודת עצירה

  6. 07:07

    Encapsulation: האובייקט אחראי על הנתונים שלו

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

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

  1. 00:09

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

  2. 00:27

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

  3. 00:45

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

  4. 01:17

    מה שאנחנו רוצים עכשיו בשיעורים הקרובים זה להתעסק בטכניקות פיתוח שמקרבות אותנו למושג Object Oriented. פרוגרמינג, OOP או Object Oriented Design, OOD. אז זה, בואו ננסה לעשות את זה.

  5. 01:41

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

  6. 01:59

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

  7. 02:32

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

  8. 02:50

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

  9. 03:30

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

  10. 03:45

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

  11. 04:13

    למעשה כשאנחנו מוסיפים לו את הפונקציה draw שואל אותנו הvisual studio האם אנחנו מעוניינים to generate method stop for draw in freehand האם אנחנו רוצים שיהיה לו מין כזו פונקציה זה בדיוק מה שאנחנו רוצים אז נגיד לו כן אז הוא יצר אותה בואו ונלך אליה זה Go-To-Definition.

  12. 04:36

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

  13. 05:01

    ולמעשה לפי דעתי לא צריך להגיד This, כי יש לי את ה-Color. ואני גם לא אגיד לו FH, אני אגיד לו With, זה הוויץ שלי, אני לא צריך להגיד לו הוויץ של FH, יפה, כנ"ל לגבי FH הזה, יש לי כבר את הפוינט, כנ"ל לגבי זה, כנ"ל לגבי זה, יפה.

  14. 05:34

    הבעיה היא שאין לי את ה-E, אוקיי? אז את E גרפית אני אקבל כפרמטר, נגדיר פה את, נשים פה את גרפי, נקרא לו G, ונגיד כאן G.drawLine, עם קונטרול מינוס לנקודה הזו ונעביר כפרמטר את e נקודה גרפית יפה מאוד אותו הדבר אנחנו עוד מעט נעשה גם לליין אבל בואו נראה איזה עובד קודם כל f5 יפה אז

  15. 06:23

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

  16. 06:53

    בואו נלך לתוך דרו. הנה דרו. הגענו לדרו שממומשת בתוך freehand. ל-freehand עד היום רגע רק דאטה.

  17. 07:06

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

  18. 07:21

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

  19. 07:52

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

  20. 08:11

    זה כמו שראש הממשלה יכול להיות יותר אפקטיבי אם הוא יותר עצלן. עצלן זה שם המשחק Object Oriented Incapsulation

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

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

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

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

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

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

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