נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: שאלת מציאת תכונה בjava

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
זיו1
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 30 November 2007
משתמש: מנותק/ת
הודעות: 66
נשלח בתאריך: 11 December 2007 בשעה 15:56 | IP רשוּם
ציטוט זיו1

יש לי מחלקת אב ושני מחלקות בנים יורשות מהאב

בנוסף יש לי מחלקה שמחזיקה מערך של מחלקת האב

אני רוצה לכתוב שיטה שתקבל כפרמטר תכונה ששייכת בעיקרון למחלקת האב שם היא נמצאת במצב פרטי(protected)

אתן דוגמא

יש לי מחלקת אב animal

ומחלקות בנים dog,cat

יש לי תכונה שנקראת name

שנמצאת במחלקת האב במצב protected

כך:

protected String Name

כעת יש לי את המחלקה collection שהיא מחזיקה את המערך של animal

שם אני רוצה לכתוב את השיטה שמחזירה את מספר החיסונים שיש לכלב מסויים

public int howMuchAnimlnames  (String animname)ddd

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

הבעיה שלי בגישה של התנאי חשבתי על משהו כזה

if (animname.equals( (name)))ddd

אבל זה לא עובד למישהו יש רעיון?

חזרה לתחילת העמוד הצג את כרטיס החבר של זיו1 חפש הודעות אחרות של זיו1
 
לוק
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 13 December 2007 בשעה 00:43 | IP רשוּם
ציטוט לוק

אם הבנתי נכון זה לא עובד לך בגלל שאתה מנסה לגשת ממחלקת ה-collection למשתנה
שהוא protected במחלקה אחרת.

אם זאת הבעיה (קומפילציה) אז ישנן שתי דרכים להתמודד איתה:
1.לבנות שיטת public הנקראת ()getName במחלקת האב שתחזיר את ערך ה-name
וכך תוכל לבצע ((if (collection[i].getName().equals(animname

2.אתה יכול לעטוף את כל המחלקות ב-package אחד, וכך לכל מחלקה ב-package יש
גישה למשתנים שהם protected במחלקה אחרת.
חזרה לתחילת העמוד הצג את כרטיס החבר של לוק חפש הודעות אחרות של לוק בקר בדף הבית של לוק
 
זיו1
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 30 November 2007
משתמש: מנותק/ת
הודעות: 66
נשלח בתאריך: 13 December 2007 בשעה 10:59 | IP רשוּם
ציטוט זיו1

לוק כתב:
אם הבנתי נכון זה לא עובד לך בגלל שאתה מנסה לגשת ממחלקת ה-collection למשתנה
שהוא protected במחלקה אחרת.

אם זאת הבעיה (קומפילציה) אז ישנן שתי דרכים להתמודד איתה:
1.לבנות שיטת public הנקראת ()getName במחלקת האב שתחזיר את ערך ה-name
וכך תוכל לבצע ((if (collection[i].getName().equals(animname

2.אתה יכול לעטוף את כל המחלקות ב-package אחד, וכך לכל מחלקה ב-package יש
גישה למשתנים שהם protected במחלקה אחרת.

אוקיי אני שיניתי קצת את העיניין וכעת השמות נמצאים במחלקות הבנים איך כעת ניתן לגשת אליהם?

חזרה לתחילת העמוד הצג את כרטיס החבר של זיו1 חפש הודעות אחרות של זיו1
 
לוק
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 13 December 2007 בשעה 12:29 | IP רשוּם
ציטוט לוק

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

תפתור את זה בעזרת 1.
חזרה לתחילת העמוד הצג את כרטיס החבר של לוק חפש הודעות אחרות של לוק בקר בדף הבית של לוק
 
זיו1
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 30 November 2007
משתמש: מנותק/ת
הודעות: 66
נשלח בתאריך: 13 December 2007 בשעה 12:32 | IP רשוּם
ציטוט זיו1

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

תפתור את זה בעזרת 1.

אני יכול לשלוח לך את מה שעשית שתראה כי עכשיו זה עובר קומפילציה אבל לא עושה את מה שצריך..

חזרה לתחילת העמוד הצג את כרטיס החבר של זיו1 חפש הודעות אחרות של זיו1
 
זיו1
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 30 November 2007
משתמש: מנותק/ת
הודעות: 66
נשלח בתאריך: 13 December 2007 בשעה 12:45 | IP רשוּם
ציטוט זיו1

http://www.sendup.net/files.php?file=0827673370.rar

חזרה לתחילת העמוד הצג את כרטיס החבר של זיו1 חפש הודעות אחרות של זיו1
 
לוק
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 13 December 2007 בשעה 13:13 | IP רשוּם
ציטוט לוק

שים לב לאיך שכתבתי,
בדרך הזאת אתה משווה כתובות -> (if(items[index].getIName() == artist
String הוא אובייקט ולכן הדרך היחידה להשוות תוכן של שני אובייקטים היא בעזרת equals
כך: ((if(items[index].getIName().equals(artist.


חזרה לתחילת העמוד הצג את כרטיס החבר של לוק חפש הודעות אחרות של לוק בקר בדף הבית של לוק
 
זיו1
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 30 November 2007
משתמש: מנותק/ת
הודעות: 66
נשלח בתאריך: 13 December 2007 בשעה 13:18 | IP רשוּם
ציטוט זיו1

לוק כתב:
שים לב לאיך שכתבתי,
בדרך הזאת אתה משווה כתובות -> (if(items[index].getIName() == artist
String הוא אובייקט ולכן הדרך היחידה להשוות תוכן של שני אובייקטים היא בעזרת equals
כך: ((if(items[index].getIName().equals(artist.


כן שיניתי את זה,זה עובר קומפילציה אבל לא עושה מה שצריך...

כנראה משהו דפוק גם בaddItem

חזרה לתחילת העמוד הצג את כרטיס החבר של זיו1 חפש הודעות אחרות של זיו1
 
זיו1
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 30 November 2007
משתמש: מנותק/ת
הודעות: 66
נשלח בתאריך: 13 December 2007 בשעה 13:48 | IP רשוּם
ציטוט זיו1

ניסיתי להכניס פריט מסוג CD וכשרציתי להדפיס את הפריט שהוכנס זה הדפיס לי

Database@20fjasd

משהו כזה

ואז כשרציתי שיבדוק את מספר הדיסקים של אותו אמן הוא רשם לי 0

חזרה לתחילת העמוד הצג את כרטיס החבר של זיו1 חפש הודעות אחרות של זיו1
 
לוק
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 13 December 2007 בשעה 14:31 | IP רשוּם
ציטוט לוק

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

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

חזרה לתחילת העמוד הצג את כרטיס החבר של לוק חפש הודעות אחרות של לוק בקר בדף הבית של לוק
 
זיו1
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 30 November 2007
משתמש: מנותק/ת
הודעות: 66
נשלח בתאריך: 13 December 2007 בשעה 14:36 | IP רשוּם
ציטוט זיו1

לוק כתב:

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

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

כן זה מה שאני עושה מדבג אבל שום דבר לא עוזר כתבתי שוב ושוב מחדש את המחלקות

הבעיה העיקרית שלי זה בשיטה addItem שלא עושה מה שצריך

 

חזרה לתחילת העמוד הצג את כרטיס החבר של זיו1 חפש הודעות אחרות של זיו1
 
זיו1
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 30 November 2007
משתמש: מנותק/ת
הודעות: 66
נשלח בתאריך: 14 December 2007 בשעה 00:49 | IP רשוּם
ציטוט זיו1

לוק בבקשה אל תלך!!!

אתה הוא זה שדירבנת אותי ואני חייב לומר לך תודה ענקית!!

נתת לי רמזים אבל התעקשת שאבין לבד ואני עשיתי את התרגיל לבד יש לי עוד כמה באגים אבל העיקר הכוונה

ושוב תודה גבר!!

חזרה לתחילת העמוד הצג את כרטיס החבר של זיו1 חפש הודעות אחרות של זיו1
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה