שאלה בג'אווה....

Amit Gal

New member
שאלה בג'אווה....

איך יוצרים רפרנס לאובייקט מסויים ? אני רוצה לשלוח את הרפרנס כפרמטר לפונקציה ב-class אחר.... תודה.
 

asihiz

New member
מחלקות והעברת אוביקטים...

אתה לא חושב נכון,אתה לא יוצר רפרנס של אוביקט(מופע) של מחלקה ושולח,אלא במחלקה שאתה רוצה לשלוח את האוביקט אליה עליך ליצור מופע של המחלקה שממנה אתה רוצה "לשלוח",ואז אתה יכול להשתמש במחלקה השניה בכל מתודות המחלקה הראשונה,ולעשות מניפולציות כרצונך.אם יש לך בעיה במשהו ספציפי אתה יכול לשאול ואני אתן לך פתרון.... בהצלחה...
 

Amit Gal

New member
אני לא בטוח שהבנתי אותך...

זה הולך ככה: יש לי מחלקה עם אובייקט מסויים, ואת אותו אובייקט אני רוצה שיהיה גם "זמין" במחלקה אחרת... חשבתי שהפתרון הכי טוב זה לעשות רפרנס לאותו אובייקט ולשלוח אותו כפרמטר בפונקציה תוכל לרשום כמה שורות קוד בודדות לדוגמא?
 

asihiz

New member
בוא נעשה סדר...

לא הסברת את עצמך טוב,אבל בוא ננסה... אם ברצונך לשלוח משתנה,רכיב גרפי,מבנה וכו. ממחלקה1 למחלקה2 עליך להעביר אותו בבנאי(אם חוקי הירושה מאפשרים)כאשר אתה יוצר מופע של המחלקה2... אם אתה רוצה להשתמש במתודה(פונקציה)של מחלקה1 במחלקה 2 עליך ליצור במחלקה2מופע של מחלקה1 ואז לגשת למתודה דרך המופע... דוגמא למקרה הראשון... Paintpanel paintpanel = new Paintpanel(30,50,play) ובבנאי של מחלקה 2 public class Paintpanel extends JPanel{ Paintpanel(int x,int y,JButton play){ העברנו את 2 המשתנים והכפתור כפרמטרים ליצירת האוביקט. אם במקרה השני... Humus humus = new Humus(); humus.thina(); פה יצרנו אוביקט מסוג חומוס והשתמשנו במתודה שלו טחינה.... בהצלחה...
 

Amit Gal

New member
אני מניח שלא הבנת אותי.....

בקוד שכתבת האובייקט שאתה מעביר הוא מועתק ולא ניתן לשנות אותו מחוץ לבנאי אני אסביר את עצמי שוב: יש לי מחלקה שיש בה אובייקט מסויים, למשל רשימה, שהיא כל הזמן מתעדכנת, ואני רוצה שהרשימה תהיה זמינה במחלקה אחרת. אם אני מעביר אותה בבנאי אז הבנאי מעתיק אותה ושם אותה במשתנה אחר שהוא בעצם העתק של הרשימה ולא הרשימה עצמה (זאת אומרת שאם אני משנה משהו במחלקה השניה אז הרשימה במחלקה הראשונה לא משתנה). מה שאני רוצה זה שדרך המחלקה השניה יהיה לך שליטה על האובייקט במחלקה הראשונה, ולכן הפתרון שחשבתי עליו הוא רפרנס, ככה שאפשר לשלוח את הרפרנס בבנאי ואז הכל מסתדר... ושוב, הבעיה שלי זה איך יוצרים רפרנס.... מקווה שתוכל לעזור
 

asihiz

New member
בוא נפתור את הבעיה...

שאתה מעביר בבנאי כל דבר שהוא,אתה יכול לשנות אותו בתנאי שהמחלקה יורשת מהמחלקה ששולחת את האוביקט... אם אני לא טועה גם אם אין ירושה יש מצבים שבהם ניתן לשנות את האוביקט. בכל אופן,צור ירושה בין המחלקות והבעיה נפתרה על בטוח.... מה דעתך????
 

Amit Gal

New member
קיבלתי את ההצעה.....

תודה.. ואם נניח הייתי רוצה לעשות עם רפרנס איך זה היה אמור להיות...?
 

asihiz

New member
הקונספט של גאווה שונה...

ראה הסברי הקודמים... אתה נמצא בקבעון של שפות כמו C,ב-C אתה יכול להעביר לפי ערך או by reference כמצביע.ב-JAVA התפיסה שונה,כאשר אתה מדבר על תקשורת בין מחלקות אין פוינטרים,תחומי ההגדרה והירושה בין המחלקות הם הגורמים לסוג העברת המשתנה... מקווה שעזרתי.. אני ממליץ לך לקחת ספר טוב על גאווה וללמוד לעומק את המהות של object oriented..
 

Amit Gal

New member
אהה... ידעתי את זה אבל לא ידעתי שזה

כוללני ויש אפשרות שלא להשתמש להשתמש במשתנה שהוא כתובת של פרמטר מסויים... כן, זה מההשפעה של C
 
למעלה