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

חוף 5.12 ה' - AnimalZoo

בכיתה
1. AnimalZoo
    ביצוע התרגיל AnimalZoo.

לבית
1. AnimalZoo 
    השלימו התרגיל והכינו שאלותיכם.
2. AnimalZoo - הערות ותוספות
    א. הוספת בעלי-חיים לגן-החיות
        הוסיפו עוד 9 בעלי-חיים לגן החיות.
        (שלושה מטיפוס Animal, שלושה מטיפוס Mammal, שלושה מטיפוס Bird).
    ב. ()AddAnimal
        הפעולה המוסיפה בעל-חיים חדש לגן-החיות, תוסיף אותו לאחר החיה האחרונה.
        למשל, אם גודל גן-החיות מיוצג באמצעות מערך Animal בגודל 100, ויש כרגע
        10 בעל-חיים בגן, הרי שבעל-החיים החדש יתווסף במיקום ה- 11, כלומר באינדקס 10.
        אם גן-החיות מלא (כלומר, מכיל 100 בעלי חיים באינדקסים 0-99), תודפס הודעה
        שגן-החיות מלא ולא ניתן כרגע להוסיף לו בעלי-חיים.
    ג. ()RemoveAnimal
        הפעולה המסירה בעל-חיים מגן-החיות, תסיר את בעל החיים האחרון הנמצא במערך.
        למשל, אם גן החיות מכיל כרגע 11 בעלי חיים (באינדקסים 0-10), אזי יוסר בעל החיים
        הנמצא באינדקס 10. אם אין כרגע בעלי-חיים בגן, תודפס הודעה שלא ניתן להוציא
        בשלב זה על-חיים מהגן, כיוון שהוא ריק.
    ד. (RemoveAnimal(Animal a
        הוסיפו פעולה חדשה בשם RemoveAnimal המקבלת כפרמטר אובייקט של בעל חיים.
        הפעולה תסיר מגן-החיות, באופן ספציפי, את בעל החיים שהתקבל כפרמטר.
        דוגמה
        אם גן-החיות מכיל כרגע 10 בעלי-חיים (באינדקסים 0-9) והתקבל כפרמטר
        האובייקט b1 (המייצג ציפור שערך התכונה name שלה הוא birdy), והציפור נמצאת
        בגן-החיות באינדקס 5, הרי שעל הפעולה למחוק את בעל-החיים b1 ממערך-החיות.
        פעולת המחיקה מתבטאת בכך שאינדקס 5 יהיה ריק, כלומר - יכיל את הערך null.       
        הערה
        הניחו כי שמה של כל חיה הנמצאת בגן-החיות חייב להיות ייחודי, כלומר - שונה
        משמם של יתר בעל-החיים בגן.
        הבעייתיות של הערך null
        כאן מתעוררת בעיה. הביטו בפעולת ההדפסה של כל בעלי-החיים.
        פעולה זו מכילה לולאה הרצה מאינדקס 0 ועד לאינדקס numOfAnimals.
        הלולאה מבצעת ToString על כל תא במערך הקיים בטווח זה.
        מכיוון שהתא באינדקס 5 מכיל כעת null, הרי שכאשר ננסה לזמן עליו את ToString,
        נקבל שגיאה ותתבצע "תעופה" של התכנית.
        פתרון הבעייתיות של הערך null
        לאחר הסרת בעל-חיים, יש להעביר את כל בעלי-החיים שהיו אחריו, תא אחד אחורנית.
        כמו כן, יש להפחית 1 מהערך של numOfAnimals.
        לסיכום
        על הפעולה (public void RemoveAnimal(Animal a לבצע הדברים הבאים:
        1) לבצע השמה של null באינדקס בו נמצא בעל-החיים אותו יש להסיר מגן-החיות.
        2) להזיז את כל בעלי-החיים הנמצאים במערך אחרי בעל-החיים שהוסר, תא אחד שמאלה.
        3) לשנות את הערך של numOfAnimal כך שיהיה שווה לערכו הקודם פחות 1.