בכיתה
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.
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.