JAVE

shlomit291

New member
JAVE

היי חברים , אני פשוט מיואשת , מנסה לבנות מחלקה פשוטה בגאווה עם 3 תכונות : קוד מוצר , מחיר , כמות במלאי

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

אני מקבלת את השגיאה identifier expected למישהו יש מושג ?

// class i build !


public class Product {

public long _catalogNo ;
public double _price ;
public int _numOfProducts ;


// 2 Bilders :

public Product ( )
{
_catalogNo = 1234567890 ;
_price = 5 ;
_numOfProducts = 100 ;
}

public Product (long _catalogNo , double _Price ,int _numOfProducts )
{

_catalogNo = catalogNo ;
_price = price ;
_numOfProducts = numOfProducts ;
}

// METHODS - 1 :

public long getCatalogNo ()
{
return _catalogNo ;
}



// METHODS - 2 :

public double getPrice ()

{
return _price ;
}




// METHODS - 3 :

public int getPriceInAgorot (int_price)

{
return (_price * 100) ;
}







}
 

BravoMan

Active member
יש לך בעיית שמות רצינית בבנאי השני,

זה שמקבל פרמטרים.

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

הבעיה השנייה היא, שהחלטת להמציא כמה שמות שלא קיימים בשום מקום אחר ולהציב אותם לתוך הפרמטרים:
catalogNo (בלי קו תחתון בהתחלה), price (עם p קטנה ובלי קו תחתון) ו-numOfProducts (שוב, בלי קו תחתון).

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

shlomit291

New member
ל BravoMan

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

אני לא מכירה עדיין את המושג this אז אתה מציע שפשוט אשנה את שמות השדות של המחלקה (שדות הכוונה לתכונות שרשמתי למעלה נכון ? )
 

BravoMan

Active member
או אותם, או את שמות הפרמטרים של הבנאי.

את המושג this תלמדי בהמשך, בינתיים, את חייבת לתת שמות שונים לדברים שונים.

"תכונות" כפי שאת מכנה אותן, נקראים בד"כ "שדות" או "איברים".
הם כמו משתנים (למדת כבר משתנים?), ותפקידם לשמור מידע.

שם של כל אחד מהם חייב להיות ייחודי מכל שם אחר שיש בתוך אותה מחלקה.

פתרון אפשרי פשוט אחד לבעיה שלך, הוא להשאיר את השמות של ה-"תכונות" כפי שהם, ולהוריד את הקו התחתון מהשמות של פרמטרים לבנאי.
זה יהיה הבדל מספיק.
רק שימי לב לגודל האות p ב-price.
זה מאוד משנה ב-Java אם האות גדולה או קטנה, ושם Price הוא שם שונה ונפרד מ-price.
 
למעלה