PracticU

הדגמה של Singleton - חלק 8

בלי כתוביותעם כתוביות
PracticU › קורס Design Patterns › הדגמה של Singleton - חלק 8
מילון מושגים:
Singleton - דפוס עיצוב שמבטיח שממחלקה מסוימת יהיה מופע אחד בלבד, עם נקודת גישה גלובלית אליו.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
תמונה - קובץ גרפי המוצג על המסך. בהקשר של וירטואליזציה או Docker, תבנית מוכנה שממנה יוצרים מכונה או קונטיינר.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.

הדגמה של Singleton - חלק 8
השיעור ממשיך את תרגיל ה-Singleton ומראה איך להפוך את התוכנה לכזו שרצה בלי חלון ראשי בעליית המערכת, ומציגה במקום זאת אייקון באזור ההודעות.
מה משתנה בתוכנית
1. התחלה מהקוד הקיים: המרצה מריץ את הפרויקט ובודק שלוגין יוצר חלון, לוגאאוט לא יוצר, ובחירת אודיו יוצרת את האובייקט רק בפעם הראשונה.
2. תוכנית בלי חלון בעלייה: התוכנית מוגדרת כ-Windows Application ולא כקונסולה, ולולאת ההרצה ממתינה לסגירת החלון הראשי. הקונסולה נשארת לצורך הדפסות בדיקה.
3. אייקון באזור ההודעות: מהמעצב מוסיפים NotifyIcon, נותנים לו תמונה מאתר אייקונים חינמי ואת הטקסט "וידאו קונפרנס", והאייקון מופיע כשמרחפים עליו.
4. הצגת החלון בלחיצה: בפונקציית הלחיצה על האייקון מציגים את החלון הראשי. הגישה אליו נעשית דרך מאפיין סטטי שמחזיר את האינסטנס ויוצר אותו רק בפעם הראשונה.
5. סגירה שלא הורגת את החלון: סגירת החלון משמידה אותו, ולכן בחלון עצמו משנים את אירוע הסגירה ומגדירים e.Cancel = true, כך שהחלון מוסתר במקום להיסגר.
מבנה הסינגלטון
המרצה משתמש שוב בקוד הסינגלטון מהשיעורים הקודמים: קונסטרקטור פרטי ומאפיין סטטי אחד שיוצר את האובייקט. בעליית המערכת נוצר רק האייקון, ורק בלחיצה נוצר החלון.
שימו לב
יצירת החלון בעלייה מאטה את עליית המחשב, ולכן הפתרון הוא לדחות את היצירה ללחיצה הראשונה. בסוף השיעור התוכנית עדיין לא רצה כצפוי, והמרצה מתחיל לאתר את הסיבה באמצעות נקודות עצירה.
בתום השיעור הסטודנט מבין איך בונים תוכנה שמציגה חלון רק לפי בקשה, ומה תפקידם של האייקון ואירוע הסגירה.
השיעור הבא בקורס: הדגמה של Singleton - חלק 9

פרקי ההרצאה: הדגמה של Singleton - חלק 8

  1. 00:00

    מטרה: חלון סינגלטון שנפתח מאייקון מערכת

  2. 01:58

    הפעלת הפרויקט ובדיקת התקינות

  3. 02:39

    הגדרת התוכנית בלי קונסול ובלי חלון

  4. 04:18

    דחיית יצירת החלון עד הפנייה הראשונה

  5. 04:59

    הוספת Notify Icon לחלון הראשי

  6. 06:16

    ביטול הופעת החלון בעליית המערכת

  7. 07:37

    יצירת Notify Icon בקוד והגדרת נתיב האייקון

  8. 08:47

    הגדרת טקסט ונראות לאייקון

תמלול ההרצאה: הדגמה של Singleton - חלק 8

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

  1. 00:02

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

  2. 00:15

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

  3. 00:27

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

  4. 00:43

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

  5. 01:14

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

  6. 01:43

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

  7. 02:02

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

  8. 02:31

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

  9. 02:54

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

  10. 03:26

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

  11. 04:06

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

  12. 04:51

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

  13. 05:15

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

  14. 05:47

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

  15. 05:56

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

  16. 06:28

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

  17. 06:43

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

  18. 07:19

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

  19. 07:43

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

  20. 08:15

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

  21. 08:36

    השדה הבא שחשוב זה טקסט וויזיבל. אז ni.text שווה וידאו קונפרנס ו-ni.visible שווה true. אם את זה אני מריץ, F11, F11, 11, 11, אני מחכה כאן לראות שיופיע לי האייקון, F11, 11, והנה הוא הופיע, והוא כבר מתפקד, יפה.

  22. 09:12

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

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

ההרצאה הקודמת: הדגמה של Singleton - חלק 7

ההרצאה הבאה: הדגמה של Singleton - חלק 9

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

  • הדגמה של הרובוט
  • הדגמה של Decorators
  • הדגמה של DRS
  • הדגמה של RESTCONF

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

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