דף 1 מתוך 1

שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 22:45 22/12/2009
על ידי eliranyo
בבנאי PolygonContainer(PolygonContainer other)
עליי ליצור העתקים חדשים של הפוליגונים שנמצאים בother או פשוט להצביע על הפוליגונים שנמצאים בother?
תודה :)

Re: שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 09:15 23/12/2009
על ידי רפי_כהן_TA
תצביע על אותם פוליגונים (כמו שלא משכפלים פוליגון בעת ההכנסה).

Re: שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 23:11 24/12/2009
על ידי jinj
אממ אתה לא סותר את מה שכתוב בעבודה? - ציטוט:
public PolygonContainer(PolygonContainer other)
"העתקה העמוקה" - אוסף הצורות של האובייקט הקיים ישתכפל באובייקט החדש כסדרן. "

Re: שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 12:18 25/12/2009
על ידי olegkap
גם לדעתי חייב העתקה עמוקה, אחרת גם הבדיקות שלכם לא עוברות

Re: שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 19:52 29/12/2009
על ידי Fogpiskalo
אז... מה התשובה? :shock:

Re: שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 21:15 29/12/2009
על ידי Shahar
אפשר לגשת לפוליגונים רק עם polygonAt, שמחזיר עותק של הפוליגון.
אז אין אפשרות לעשות shallow copy

Re: שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 21:30 29/12/2009
על ידי בר כהן
Shahar כתב:אפשר לגשת לפוליגונים רק עם polygonAt, שמחזיר עותק של הפוליגון.
אז אין אפשרות לעשות shallow copy
אפשר, מכיוון שאתה מעתיק אוביקט מאותו מחלקה יש לך גישה לשדות הפרטיים שלו, אז אתה יכול לעשות השמה ישירה של המצביע, בלי שימוש בפונקציות שלו.

Re: שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 22:04 29/12/2009
על ידי Shahar
מה פתאום... רק המופע יכול לגשת לשדות הפרטיים של עצמו.
תנסה לכתוב משהו שעושה את שאתה אומר...

Re: שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 22:18 29/12/2009
על ידי בר כהן
תאמין לי שאפשר, ואני כותב ככה וזה עובד :)
בהתחלה גם אני הבנתי שזה המשמעות של private, אבל זה מורחב יותר.
ככה שאם אתה מקבל למחלקת point אוביקט אחר שהוא point אתה יכול לגשת ישירות לשדות ולשיטות שלו.
אתה מוזמן לבדוק :shock:

Re: שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 22:21 29/12/2009
על ידי Shahar
O_o
מוזר...

יצאתי אידיוט, כי כשבדקתי את זה, לפני ההודעה הקודמת, הדפסתי את other.polygons, כש-i לא היה מוגדר :S
אז קבלתי שגיאה.

אכן עובד:)

Re: שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 23:26 29/12/2009
על ידי Fogpiskalo
זה לא כזה מוזר כשחושבים על זה - הרעיון של הכמסה הוא שכמישהו שמשתמש בשיטה מבחוץ הוא לא יוכל להתעסק לה עם הבפנוכו ולעשות שטויות (כמו שבוינדוז אחריי התקנה, הוא 'מסתיר' את הקבצים שנמצאים ב-program files...)
אבל כשאתה מתעסק מבתוך המחלקה באובייקט ששייך למחלקה אתה לא עושה את זה בתור מישהו מבחוץ, אתה עושה את זה בתור מי שיודע איך הדברים עובדים - במילים אחרות, אין הגיון בלהסתיר דברים מעצמך! אתה מסתיר אותם רק מהטמבלים שיבואו אחריך...

Re: שאלה בנוגע לבנאי PolygonContainer(PolygonContainer other)

נשלח: 23:33 29/12/2009
על ידי Fogpiskalo
בכל אופן, נראה לי שהדרישה ל-deep copy במקרה של polygonContainer היא שהמערך של הפוליגונים שבתוך האובייקט יועתק עמוקות, לא הפוליגונים. כלומר, אם יש לך PolygonContainer בשם pc1, ואתה יוצר ממנו העתק pc2, אז pc1.arrayOfPolygons ו-pc2.arrayOfPolygons יהיו זהים מבחינת התוכן, אבל יצביעו על כתובות שונות. מה שזה *לא* אומר זה שצריך לשכפל את הפוליגונים עצמם, כי כמו שנאמר גם בהוספה אנחנו לא משכפלים אותם. אין צורך שבעולם שלנו יתקיימו שני אובייקטים שונים שמייצגים את אותו הפוליגון בדיוק. מספיק אובייקט אחד, שיכול להופיע כמה פעמים שנרצה בכל מערך שנרצה.