פורסם 2013 במאי 312 שנים ערב טוב לכולם,אני כתבתי את המחלקה הנ"ל (למטה) , איזו פקודה ב main יכולה להדפיס את ערכי הבנאי השני ?יש לי ב main יש את הפקודה :Product d1 = new Product (10,10,10);ניסיתי כל מיני קומבינציות עם d1. אבל לא הלך לי והוא המשיך להדפיס 10 10 10הקוד הוא :public class Product { private long _catalogNo ; private double _price ; private int _numOfProducts; public Product (long catalogNo,double price,int numOfProducts) { _catalogNo=catalogNo; _price=price; _numOfProducts=numOfProducts; } public Product (Product one) { one._catalogNo=1234567890; one._price=5; one._numOfProducts=100; _catalogNo=one._catalogNo; _price=one._price; _numOfProducts=one._numOfProducts; }
פורסם 2013 במאי 312 שנים מה זאת אומרת "ערכי הבנאי השני"?הבנאי השני הוא בנאי שמקבל Product כפרמטר. כלומר בשביל להשתמש בו צריך שכבר יהיה לך אובייקט קיים מסוג Product.
פורסם 2013 במאי 312 שנים אתה דורס אץ ערכי האובייקט one לפני שאתה מתחיל לבצע את ההשמות ... תמחק את אחלק הראשון וזה אמור להיות בסדר.
פורסם 2013 במאי 412 שנים מחבר אני אנסה לנסח את השאלה מחדש ,ב main יש כבר : Product d1=new Product(10,10,10);P(ה P עבור יישור השורה )עכשיו אם אני רוצה לבצע פקודה שתכניס את הערכים (1234567890,5,100) איך אני עושה זאת ?
פורסם 2013 במאי 412 שנים תוסיף SETTERS שיודעים לעדכן את ערכו של האובייקט.מה שאתה עשית זה להעביר אובייקט מוכן עם הערכים 10,10,10 לבנאי העתקה (כביכול) אבל לפני שביצעת העתקת נתונים דרסת אותם.מה שאתה צריך לעשות זה למחוק את 3 השורות הראשונות בבנאי "השני" שלך ולהוסיף פונקציות set שיודעות לעדכן את השדות.
פורסם 2013 במאי 412 שנים מחבר תודה הבנתי ,אני מבין שאין דרך אחרת לעשות זאת תו"כ שימוש ב Product one נגיד d1.Product one ();P
פורסם 2013 במאי 412 שנים אני רואה שיש לך בעיה עם דברים מאוד בסיסיים של OOP.כשאתה כותב ;Product one אתה בעצם מצהיר על משתנה מטיפוס Product שקוראים לו one. אחרי זה אתה יכול לאתחל אותו עם new ( גם בנאי העתקה,הבנאי השני שלך, מאתחל אותו). לאחר מכן אתה יכול להפעיל על one כל שיטה שתרצה של המחלקה, לכן אחרי שיש לך כבר משתנה מאותחל ואתה רוצה לשנות את השדות שלו אתה זקוק ל- getters/setters. בהצלחה
פורסם 2013 במאי 512 שנים מחבר אני פשוט לא מבין משהו ..אם אני רוצה לבנות בנאי שבמקרה ואני לא מכניס אליו נתונים הוא מכניס אוטומטית נתונים שהגדרתי מראש , איך אני עושה זאת ?(למעשה , זה מה שאני מתבקש לעשות ..)
פורסם 2013 במאי 512 שנים ממליץ לך לקבוע קבועים נוספים למחלקה ולהגדיר אותם כך:private static final long DEFAULT_CATALOG_NUMBER = 10;private static final double DEFAULT_PRICE = 10;private static final int DEFAULT_NUM_OF_PRODUCTS = 10;ככה אתה בעצם יוצר קבוע סטטי וסופי למחלקה שישמש כברירת מחדל עבור אותו ערך שאתה רוצה להגדיר.בבנאי הריק (בנאי שלא מקבל ארגומנטים) תכניס את המשתנה [DEFAULT_[VALUE וככה יהיה לך יותר קל ליישם את המחלקה ולבצע שינויים אח"כ במידה ותרצה.ועוד דבר, בבנאי ההעתקה, תבצע בדיקה שהאובייקט שאתה מעביר כפרמטר הוא לא null. אחרת, אם יקרה מצב כזה תקבל שגיאה בזמן ריצה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.