PracticU

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

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

הדגמה של Singleton - חלק 5
השיעור ממשיך את פתרון ה-Singleton ומעביר את ערוץ התקשורת לתבנית Instance. בנוסף הוא מציג עוד שני ערוצים, לאודיו ולווידאו, ומראה איך כל אחד מהם הוא מופע יחיד נפרד.
הפעולה על מופעים
1. אובייקט Communication כמופע מלא: השדה והמאפיין Instance מחזירים את אותו מופע בכל פנייה.
2. Send packet: מתודה שמקבלת חבילה ומדפיסה אותה. הודעת הלוגין הופכת לחבילה כמו כל חבילה אחרת.
3. בדיקה: פעם ראשונה שנשלחת חבילה מופיע בנאי ההתחלה, ואחר כך רק שליחה.
שלושה ערוצים
4. ערוץ אודיו: מופע Singleton נפרד שמשמש את רכיב הקלטת הקול.
5. ערוץ וידאו: מופע נפרד שמשמש את רכיב הקלטת הווידאו.
6. ערוץ מטא: מופע נפרד ללוגין ולוגאאוט ופקודות שקשורות למערכת.
7. הסיבה להפרדה: פקודות ההתחברות חשובות יותר מהאודיו, והאודיו חשוב יותר מהווידאו. אם חבילות וידאו ממתינות בתור, לא נרצה שהן יחסמו חבילות מטא.
שינויים בקוד
8. שמות: המופעים מקבלים שמות שמתארים אותם, כמו audio channel ו-video channel.
9. בחירה: רכיב ההקלטה פונה לערוץ שלו, ולא לערוץ אחר.
10. חלון ראשי: לחיצה על סטארט מפעילה את רכיב ההקלטה, ורכיב ההקלטה שולח חבילה לערוץ שלו.
הערוץ הנוסף לא משנה את עקרון התבנית: לכל ערוץ מופע יחיד, וכולם זמינים מכל מקום.
השיעור הבא בקורס: הדגמה של Singleton - חלק 6

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

  1. 00:00

    ארבע מחלקות סינגלטון בפרויקט אחד

  2. 00:50

    שינוי שם המשתנה ל-Instance

  3. 01:25

    יצירת מחלקות אודיו רקורדר וכפתורים

  4. 03:33

    הוספת לוגין ולוגאוט לקומיוניקיישן

  5. 05:11

    הוספת שדה Instance לאודיו רקורדר

  6. 08:19

    קונסטרקטור פרטי למניעת יצירה מבחוץ

  7. 09:53

    שליחת Audio Packet מתוך הפעלת ההקלטה

  8. 10:56

    בדיקת הפלט: לוגין, לוגאוט ושליחת פאקט

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

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

  1. 00:08

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

  2. 00:37

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

  3. 01:01

    אינסטאנס, נסיר את השיא ונעשה Alt Shift F10, Rename, Enter ונעשה F6. אין עם זה שום בעיה. ואינסטאנס, אלט שיפט F10, אנטר, אינסטאנס, ולזה נקרא אינסטאנס קטן.

  4. 01:21

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

  5. 01:43

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

  6. 02:23

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

  7. 03:07

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

  8. 03:49

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

  9. 04:34

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

  10. 05:06

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

  11. 05:16

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

  12. 05:33

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

  13. 06:09

    אנחנו רוצים שדה אינסטאנס, השדה הזה יהיה public והוא יהיה static והוא יהיה מסוג אודיו רקורדר ויקראו לו אינסטאנס וכאלה יהיו שניים ctrl cv אחד עם i קטנה זה יהיה השדה עצמו והשני יהיה התכונה ובתכונה אנחנו רק רוצים את get ובגט אנחנו בסוף רוצים לעשות ריטרן לאינסטאנס, אינסטאנס הקטן, אבל הוא עלול להיות נאל,

  14. 06:50

    אז אם הוא נאל, אז אנחנו רוצים להקצות אותו לאודיו רקורדר חדש. מה שמבטיח לנו שכרגע אנחנו יכולים לעשות New Audio Recorder, אבל איך אנחנו מונעים יצירת אודיו רקורדרים מחוץ למחלקה?

  15. 07:12

    אנחנו רוצים למזער את האפשרות שמשתמשי המחלקה, מתכנתים שהם משתמשים במחלקה, לא מפתחי המחלקה. מי שמפתח את המחלקה יכול לקרוא ל-New Audi Recorder כמה שהוא רוצה.

  16. 07:29

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

  17. 07:47

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

  18. 08:03

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

  19. 08:23

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

  20. 08:43

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

  21. 09:08

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

  22. 09:33

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

  23. 10:00

    להדפיס אודיו רקורדר סטארטד ואז גם לפנות אל קומוניקיישן ולהגיד לו send audio packet אז בואו נעשה את זה. אז מתוך סטארט אודיו רקורדר אנחנו מדפיסים cw start audio recorder invoked ונוציא וגם אנחנו רוצים לפנות אל קומיוניקיישן תראו איזה יופי נקודה אינסטנס נקודה ואנחנו רוצים לשלוח אודיו פאקט וזה יהיה סנד סנד אודיו פאקט וניצור את הפונקציה על שיפט f10 enter f12 סנד אודיו פאקט ופשוט

  24. 10:56

    נדפיס cw אודיו פאקט סנד או סנד אודיו פאקט אינבוקט גם טוב אינבוקט וקונטרול F5 ולוגין 5, F9, F5, אז לוגין אינבוקט, לוגאוט, F9, F5 ואת זה נקטין, יופי, אז כשאני עושה לוגין אז הוא אומר Communication, sit or invoke, לוגין אינבוקט, אם אני אעשה שוב לוגין אז הוא רק יגיד לוגין אינבוקט,

  25. 11:37

    לוגאוט, לוגאוט, יופי, מצוין, סטארט אודיו רקורדר, אז אנחנו רואים אודיו רקורדר, או Invoked, Start Audio Recorder Invoked ו-Send Audio Packet Invoked.

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

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

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

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

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

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

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