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

אג' 16.12 ב' ShapesProject

בכיתה
1. התרגיל ShapesProject
    חלק א'
    א. יצירת הפרויקט
        צרו פרויקט בשם ShapesProject.
    ב. הוסיפו המחלקות הבאות
       1) Point
       1) Shape
       2) Rectangle
       3) Circle
       4) Line   
 ד. מחלקת Point
       1) תכונות
           תכיל x, y מטיפוס int עבור הקואורדינטות של הנקודות על ציר המספרים.
       2) בנאים
           * בנאי שלא מקבל פרמטרים ובנאי שמקבל שני שלמים.
           * הבנאי שלא מקבל פרמטרים יאתחל ערך התכונות ל- 0.
       3) Set/Get
           על 2 תכונות הנקודה.
       4) פעולות
           ToSTring.
    ג. מחלקת Shape
       1) תכונות
           תכונה אחת בשם p1 מטיפוס Point.
       2) בנאים
           בנאי אחד, יאתחל את הנקודה p1 להיות בעלת הערכים (0, 0).
       3) פעולות
           הוסיפו פעולה בשם ()GetKingName המחזירה את שם מלכת אנגליה אליזבת'.
    ה. מחלקת Rectangle: יורשת מ- Shape
        1) תכונות
            * p2 מטיפוס נקודה.
            * length מטיפוס ממשי.
            * width מטיפוס ממשי.
        2) בנאים
             * בנאי המקבל נקודה, אורך ורוחב.
             * בנאי המקבל שתי נקודות.
        3) Get/Set
            * עבור כל תכונות המחלקה.
        4) פעולות
            * ToString
               הפעולה תחזיר מחרוזת הכוללת את פרטי המידע הבאים:
               * אם המלבן נוצר באמצעות הבנאי הראשון, המחרוזת תכיל את פרטי נקודת האמצע,
                  את האורך ואת הרוחב.
               * אם המלבן נוצא באמצעות הבנאי השני, המחרוזת תכיל את פרטי שתי הנקודות.
    ו. מחלקת Circle: יורשת מ- Shape
       1) תכונות
           * נקודה.
           * רדיוס, ממשי.
       2) בנאים
           * בנאי אחד, מקבל נקודה ורדיוס.
       3) Get/Set
           עבור כל תכונות המחלקה.
       4) פעולות
           ToString.
    ז. מחלקת Lint: יורשת מ- Shape
       1) תכונות
           * תכיל תכונה מטיפוס Point.
           * תכיל תכונת אורך, ממשי.
       2) בנאים
           * בנאי אחד: מקבל שתי נקודות.
       3) Set/Get
           Get עבור כל תכונות המחלקה.
           Set עבור כל אחת משתי הנקודות, אך לא לאורך הקו (כי הוא נגזר משתי הנקודות).
       4) פעולות עזר
           GetLineLength תחזיר את אורך הקו, בהתבסס על שתי הנקודות אשר ביניהן הוא נמתח.
           GetMiddlePoint תחזיר את נקודת האמצע של הקו.
           הערה: פעולות עזר אלו נועדו עבור השגת נתונים ש- ToString אמורה להשיג.
                     פעולות אלו אינן מהוות ממשק עבור המשתמש, ולכן נעדיף לתת להן את
                     הרשאת הגישה private.
       5) פעולות
           ToString תחזיר את נקודות האמצע של הקו ואת אורכו.
    חלק ב' - Interface
    א. צרו ממשק בשם IMath המכיל את כותרות הפעולות שלהלן:
        * ()double GetArea             פעולה זו מחזירה את שטח הצורה.
        * ()double GetPerimeter    פעולה זו מחזירה את היקף הצורה.
    ב. על המחלקות Circle ו- Rectangle בלבד, לממש את הממשק IMath.
    חלק ג' - Program
    א. צרו נקודה בשם myPoint באמצעות מחלקת Point, שערכיה הם (10, 10).
    ב. צרו מלבן בשם r שערכיו הם הנקודה myPoint, האורך 400 והרוחב 300.
        שרטטו מה קורה בזיכרונות StackMemory ו- HeapMemory לאחר פקודה זו.
    ג. צרו מלבן בשם r2 שערכיו הם הנקודה myPoint, האורך 400 והרוחב 301.
        שרטטו מה קורה בזיכרונות StackMemory ו- HeapMemory לאחר פקודה זו.
    ד. הדפיסו את r ו- r2.
    ה. הדפיסו את תוצאת ההשוואה בין r ל- r2 השתמשו בפעולה Equale הנמצאת במחלקת Object.
        הסבירו מדוע זאת התוצאה, כלומר - מה עושה הפעולה Equals הנמצאת במח' Object?
    ו. בצעו השמה של r2 לתוך r.
    ז. הדפיסו את תוצאת ההשוואה בין r ל- r2 השתמשו בפעולה Equale הנמצאת במחלקת Object.
    ח. הדפיסו את האורך של המלבן r.
    ט. צרו עיגול עיגול בשם c1 שנקודת האמצע שלו נמצאת ב- myPoint וברדיוס 5.
    י. צרו ייחוס בשם s1 מטיפוס Shape המפנה ל- c1.
       הסבירו האם שורת קוד זו חוקית או לא. אם לא, הסבירו מדוע.
    יא. 1) צרו ייחוס בשם i1 מטיפוס IMath המפנה ל- r.
             הסבירו האם שורת קוד זו חוקית או לא. אם לא, הסבירו מדוע.
         2) שמרו ב- s1 את הערך r.
             הסבירו האם שורת קוד זו חוקית או לא. אם לא, הסבירו מדוע.
         3) צרו ייחוס בשם i2 מטיפוס IMath ובצעו בתוכו השמה של IMath חדש, ככתוב להלן:
IMath i2 = new IMath;
             הסבירו האם שורת קוד זו חוקית או לא. אם לא, הסבירו מדוע.
    יב. צרו ייחוס בשם i3 מטיפוס IMath  המפנה למלבן חדש שנקודת המרכז שלו היא myPoint,
         אורכו 40 ורוחבו 30.
         הסבירו האם שורת קוד זו חוקית או לא. אם לא, הסבירו מדוע.        
    יג. הדפיסו את שטחו של i3.
         הסבירו האם שורת קוד זו חוקית או לא. אם לא, הסבירו מדוע.
    יד. הדפיסו את i3.
         הסבירו האם שורת קוד זו חוקית או לא. אם לא, הסבירו מדוע.
    טו. זמנו את הפעולה GetKingName על אובייקט המלבן r.
         הסבירו האם שורת קוד זו חוקית או לא. אם לא, הסבירו מדוע.
    טז. זמנו את הפעולה GetKingName על i3.
         הסבירו האם שורת קוד זו חוקית או לא. אם לא, הסבירו מדוע.
    יז. כתבו פעולה חיצונית סטטית המקבלת שני מלבנים ומחזירה תשובה בוליאנית האם הם שווים.
        שני מלבנים נחשבים שווים אם אורכם שווה (אין משמעות לרוחב של כל אחד מהם).
        חתימת הפעולה:
public static bool Equals (Rectangle r1, Rectangle r2) { ... }
   יח. צרו קו בשם l1 מטיפוס Line ושלחו אליו כפרמטר את הנקודות (0, 0) ו- (10, 10).
        הדפיסו את l1. האם התוצאות נכונות?

לבית - לשיעור הראשון שלאחר חופשת החורף
1. סיימו תרגיל הכיתה ShapesProject.
2. תרגילים נוספים יועלו לכאן עד לסוף השבוע.
3. לאחר החופשה - בוחן על שיעורי הבית.

חופשה נעימה.