פורסם 2009 בפברואר 1916 שנים עשיתי מחלקה X שהיא טיפוס של עצמים שיווצרו במחלקות אחרות.במחלקה Y יצרתי עצמים מטיפוס X.אני רוצה לשנות את ערכי התכונות של עצם מטיפוס X במחלקה Y..הבנתי שאני לא יכולה לגשת לתכונות דרך מחלקה Y ופשוט לשנות אותן, אני חייבת להגדיר פונקציות במחלקה X שיגרמו לי לגשת לתכונות של העצם....אני רוצה בקיצור גישה לתכונה של עצם בלבד, ולא להגדיר במחלקה X פונקציה שמקבלת ערך מסויים ומכניסה אותו לתכונה של העצם.. כי אני מעוניינת לשים ערך בתכונה במחלקה Y עצמה.אפשר לעשות את זה? אם כן איך?
פורסם 2009 בפברואר 1916 שנים הכל את יכולה לעשות. לדוגמה, נניח שאת מגדירה מחלקה A שמכילה איבר בשם b מטיפוס B, שמכיל איבר בשם c.אם b ו-c מוגדרים כפומביים (public) אז את יכולה לגשת אליהם ישירות:a.b.cאבל לא נהוג להגדיר איברים במחלקה כפומביים.אם, לדוגמה, b אינו מוגדר כפומבי, אז יש שתי אופציות - או להגדיר ב-A פונקציית גישה אליו (פונקציה שתחזיר את b), או להגדיר ב-A פונקציה שתתן גישה ישירה ל-c (כלומר הפונקציה תחזיר את b.c).יש? אם לא, אז תסבירי קצת יותר טוב מה את רוצה לעשות (אולי עם דוגמת קוד קצרה).
פורסם 2009 בפברואר 1916 שנים מחבר לא הבנתי לגמרי... אני אסביר את הבעיה שלי עם קוד: עשיתי מחלקה בשם Days הגדרתי במחלקה אחרת מערך שהאיברים בו מטיפוס Days והשורה הבאה היא בעייתית: array.Day = (String) Acombo.getSelectedItem(); הגדרתי את התכונה/איבר Day כpublic במחלקת Days... הבעיה שלי היא שהייתי בטוחה שאי אפשר לגשת לתכונה עם סימון נק', כמו X.day, במחלקה שהיא אחרת מהמחלקה Days, וחשבתי שכששמים נק' אחרי המשתנה, במחלקה שהיא אחרת מDays מדובר בפונקציה אחר כך ולא בשום תכונה... אני טועה לגבי זה או שזה נכון? במילים אחרות, הקוד שהוספתי פה, הוא תקין לדעתך? לא מופיעה לי שגיאה בתוכנה שאני כותבת בה את הקוד, אני פשוט לא ידעתי בעצמי אם אפשר להתייחס לתכונה ציבורית כמו Day, בכל זאת, במחלקה אחרת מDays. ותודה
פורסם 2009 בפברואר 1916 שנים אפשר להתייחס לשדות ("תכונות") public ממחלקות אחרות, בשביל זה קיים public. עם זאת, לא בריא להצהיר על שדות כ-public. עדיף שתגדירי את השדה כ-private ותוסיפי accessors - פונקציות getDay() ו-setDay(). ראי דוגמא כאן:http://en.wikipedia.org/wiki/Field_encapsulation
פורסם 2009 בפברואר 2016 שנים מחבר השתמשתי הפעם בפונקציותכשאני מישתמשת בפונקציה של get שרק מחזירה ערך (שדה/תכונה), אני לא יכולה בעצם לעשות השמה של מה שהוחזר מהפונקציה לערך אחר?למשל:A.getDay= 2;
פורסם 2009 בפברואר 2016 שנים לא, בשביל זה תגדירי פונקציית set, שמקבלת בארגומנט את הערך שאת רוצה לשים.בכל מקרה, הנה דף שמסביר + דוגמאות:http://en.wikipedia.org/wiki/Mutator_method
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.