דילוג לתוכן הראשי

וידאו

מממשקים
-----------------------------------------------------------------------------------------------------------------------------
630. ממשקים - Complex Flexible System כאן
        מאת Derek Banas 
        זמן: כ- 8 דקות. (טווח הזמן הרלוונטי: 6:41-14:27. הסרטון יתחיל אוטומטית בדקה 6:41).
        1. יצירת ממשק עבור מכשיר אלקטרוני גנרי כמו טלויזיה או רדיו: IElectronicDevice.   
            הפעולות שיש לממש לפי ממשק זה: On/Off/VolumeUp/VolumeDown.
            בהמשך: ממשק עבור שלט רחוק גנרי וממשק עבור כפתור גנרי להדלקה/כיבוי.
            נסתכל על התמונה הגדולה וממנה נרד לעומקם של דברים.
        2. יצירת מחלקת טלויזיה Television המממשת את IElectronicDevice.
            מימוש הפעולות On/Off/VolumeUp/VolumeDown.
        3. יצירת הממשק ICommand.
             ממשק זה מייצג פקודה דו-מצבית כמו הלוך/שוב, הפעל/כבה, עלה/רד.
             במקרה שלנו, הממשק מייצג מה קורה כאשר נלחץ כפתור ה- כיבוי/הדלקה (Power)
             במכשיר האלקטרוני.
             למשל: הדלקה או כיבוי של הטלויזה, הדלקה או כיבוי של הרדיו.
             הממשק יכיל את ההצהרות הבאות:
void Execute();
void Undo();
            
        4. יצירת המחלקה PowerButton  המייצגת כפתור-Power ומממשת את ICommand.
            המחלקה תכיל אובייקט מטיפוס IElectronicDevice, שערכו יתקבל כפרמטר של הבנאי,
            וכמובן את הפעולות:
public void Execute();
public void Undo();
        5. יצירת המחלקה TVRemote המייצגת שלט-רחוק של מכשיר אלקטרוני, כלומר מהווה
            מידול עבור נטילת השלט ממקום הימצאו (למשל: על השולחן) ליד כדי להשתמש בו.
            מחלקה זו מהווה מחלקת-שירות בנושא שלטי-טלויזיה, מכילה פעולה בשם GetDevice,
            אשר יכולה להחזיר כל מוצר אלקטרוני, ובמקרה שלנו, תחזיר טלויזיה חדשה.
            בכל אופן, הטיפוס המוחזר יהיה IElectronicDevice. 
            מדוע? כיוון שאנו יכולים להוסיף למחלקת-שירות זוח פעולה נוספת, למשל: GetDevice2
            המחזירה רדיו חדש.
        6. במחלקה Program:
            א. יצירת שלט-טלויזיה בשם TV אשר הייחוס המפנה אליו יהיה מטיפוס הממשק 
                IElectronicDevice.
                הערה: מכיוון שמדובר בשם של אובייקט, עדיף היה לקרוא לו tv באותיות אנגליות קטנות.
                שאלה:  מדוע על TV להיות מטיפוס הממשק IElectronicDevice ולא מטיפוס TVRemote?
                תשובה: המחלקה TVRemote לא מייצרת אובייקטים מסוגה. המחלקה TVRemote היא
                           מחלקת-שירות המכילה את הפעולה GetDevice המחזירה אובייקט מטיפוס
                           המחלקה Television. מחלקה זו יכולה היתה להכיל גם פעולה כמו GetDevice2 
                           המחזירה אובייקט מטיפוס Radio.
                שאלה:  מדוע על TV להיות מטיפוס הממשק IElectronicDevice ולא מטיפוס Television?
                תשובה: TV הוא ייחוס המפנה לטלויזיה, אך אינו טלויזיה. זהו שלט.
                           כאשר ניצור כפתור מטיפוס המחלקה PowerButton, הבנאי של מחלקה זו
                           יקבל כפרמטר את TV, על-מנת שידע על איזה סוג-מכשיר להפעיל את הפעולות שלו,
                           שהן: Exectue/Undo. מבחינת הבנאי, הוא יכול לקבל גם אובייקט רדיו, לאו דוקא
                           טלויזיה. מכיוון שהבנאי של מחלקת PowerButton מקבל אובייקט מטיפוס
                           IElectronicDevice, היה עלינו ליצור את השלט TV מטיפוס זה.
                           אם בהמשך, היינו יוצרים שלט בשם radioRemoteControl, גם הייחוס של שלט זה
                           היה מטיפוס IElectronicDevice, כיוון שכאשר נשלח אותו כפרמטר לבנאי של מחלקת   
                           PowerButton, בנאי זה יצפה לפרמטר מטיפוס IElectronicDevice.
            ב. יצירת אובייקט כפתור בשם pwrBut (אובייקט מטיפוס PowerButton) עבור הדלקה/כיבוי
                של טלויזיה. שימו לב: לא של ה-טלויזיה.
            ג. הדלקת הטלויזיה כך:
powBut.Execute();
            ד. כיבוי הטלויזיה כך:
powBut.Undo();
            בשלב זה הכל כתוב טוב וחנכון. לוחצים בשלט על כפתור ה- power והטלויזיה נדלקת / נכבית.
            עברנו דרך עבודה על מספר מחלקות, ולבסוף נוכחנו לראות שלחיצה פשוטה על הכפתור עושה
            את העבודה.
            ראינו דרך פשוטה (שדורשת תרגול...) לשימוש בממשקים ובפעולותיהן האבסטרקטיות כדי ליצור
            אובייקטים שונים (טלויזיה / רדיו) וליצירת מערכות משוכללות יותר כמו משחקים, הנבנים בדרך
            דומה: מתחילים מהמופשט ביותר (הממשקים) ועד לספציפי ביותר, שהן המחלקות המיועדות ליצור
            אובייקטים מסוגן ועד לתוכנית עצמה (Main).
-----------------------------------------------------------------------------------------------------------------------------

620. ממשקים - Idrivable כאן
        מאת Derek Banas. 
        זמן: 6:40. (צפו מהתחלה עד לדקה 6:40).
        הממשק IDrivable עם המאפיינים Wheels/Speed/Brand והפעולות Move/Stop.
        מחלקת Vehicle המממשת את הממשק IDrivable.
        בדיקה האם אובייקט הוא יורש מטיפוס מסוים או מממש ממשק מסוים:
                   if(c1 is IDrivable) 
                        { c1.Move(); } 
                   else 
                        { cw("The {0} can't be driven", c1.Brand"); }               
-----------------------------------------------------------------------------------------------------------------------------
610. מהו ממשק ב- #C כאן
        מאת Ran Shahak. 
        זמן: 22:26.
        חוקים, אופן היצירה של ממשק חדש (IEmployee),
        מחלקה יכולה לרשת יותר מ- Interface אחד. Interface יכול לרשת מ- Interface אחד.
        יצירת ייחוס מטיפוס Interface המצביע על אובייקט ממחלקה הנגזרת מממשק זה.
        כלי של VS ליצירת מימוש מהיר של Interface במחלקה: קליק-ימני על שם הממשק
        (בכותרת המחלקה) ובוחרים ב- Implement Interface. יש למחוק את שורות ה-
        throw new Excemption.
-----------------------------------------------------------------------------------------------------------------------------
600. מבוא לממשקים כאן
        מאת DanWahlin
         זמן: 9:22
        ממשק ככלי מסייע ליצירת אחידות באמצעות חוזה.
        הדגמת הממשק IMachine והצהרת כותרות הפעולות Start ו- Stop.
        יצירת אובייקט ממחלקת Car ואובייקט ממחלקת LawnMower (מכסחת-דשא)
        המממשות את IMachine.     

מהורשה
-----------------------------------------------------------------------------------------------------------------------------
520. מחלקות #C - מלות-המפתח this VS base 
        מאת Ilan Tam 
        זמן: 18:03 כאן
           נושאים: this: בנאי מפעיל בנאי אחר באותה המחלקה. 
            יתרונות: חיסכון בכתיבת קוד בתוך המחלקה עצמה, נכון מתודולוגית.
         base: קביעת הבנאי הספציפי שיופעל במחלקת האב.

-----------------------------------------------------------------------------------------------------------------------------
510. מחלקות ועצמים - הורשה שיעור 2 #C 
        מאת Ilan Tam  
        זמן: 21:29 כאן
            חזרה1: חיסכון בכתיבת קוד.
            חזרה2: שדרוג התוכנה מבלי לכתוב אותה מחדש.
            מחלקות יורשות מקבילות לא יכולות לגשת לאלמנטים ייחודיים האחת של השנייה.
            אין הורשה מרובה ב- #C.
            אפשרות להיררכיית הורשה אב-בן-נכד... ("Multi-level"). 
            כאשר מופעל בנאי של מחלקת בן, מופעל לפניו אוטומטית בנאי של מחלקת האב.
            כברירת-מחדל, יופעל במחלקת האב הבנאי שלא מקבל פרמטרים.
            יש אפשרות לציין במחלקת הבן איזה בנאי יופעל במחלקת האב.
-----------------------------------------------------------------------------------------------------------------------------
500. מחלקות ועצמים - הורשה חלק א' #C מאת Ilan Tam זמן: 15:53 כאן
           נושאים: שימוש בקוד משותף ומניעת שכפול קוד.
              גישה ממחלקת הבן לאלמנטים הציבוריים הקיימים במחלקת האב.
            מחלקת הבן היא "שיפור" של מחלקת האב.

ממערך עצמים
-----------------------------------------------------------------------------------------------------------------------------
210. מערך עצמים חלק 1 #C
        מאת Ilan Tam 
        זמן: 06:10 כאן
           נושאים: הצהרה על מערך סטודנטים 
               לולאה להשמת אובייקטים מטיפוס סטודנט במערך
-----------------------------------------------------------------------------------------------------------------------------
200. מערך עצמים חלק 2 #C
        מאת Ilan Tam 
        זמן: 14:05 כאן
              נושאים: לולאה ליצירה ולקליטה של אובייקטים למערך הסטודנטים.
                פעולה להדפסת הסטודנטים שהציון שלהם גבוה מ- 80.