ABA


"עזרה בjava"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #11180 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 11180
TomT 
חבר מתאריך 13.2.13
4 הודעות
   21:52   13.02.13   
אל הפורום  
  עזרה בjava  
 
   שלום וערב טוב,

אני מתלמד מתחיל בשפת Java וקיבלתי תרגיל
שבו אני צריך ליצור ספרייה.

הספרייה מחולקת לארבעה (class(im שונים:

- הclass הראשון מכיל פרטים על הסופר(שם הסופר , היכן נולד וכדומה)
- הclass השני מכיל פרטים על הספר (שם ספר , שם סופר , שנת פרסום ...)
- הclass השלישי מכיל בתוכו את הספרייה עצמה מערכים של הסופר והספרים.
הclass השלישי מכיל בתוכו גם פונקציות כמו:
להוסיף ספר (לבדוק שהספר לא קיים) , להוסיף סופר (לבדוק שהסופר לא קיים), להסיר ספר , להסיר סופר.

- הclass הרביעי הוא user interface שמכיל בתוכו את כל הממשק.
(להוסיף ספר , להוסיף סופר ...)

כרגע אני עומד במצב כזה שהclass הראשון והשני מוכנים.
אני נתקעתי בclass השלישי עשיתי את המערכים אבל אני לא יודע מאיפה להתחיל את הפונקציות
של להוסיף ספר/סופר, להסיר וכדומה. (דרך אגב עשיתי אותם מסוג boolean)

אשמח לסיוע, קבלת עצה,
בתודה מראש.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  לא הבנתי בדיוק מה חסר לך אורי  13.02.13 22:04 1
     כל הכבוד על המענה המהיר TomT  13.02.13 22:47 2
         תעלה מה שהתחלת לכתוב, לתת לך כיוון inno3D 13.02.13 22:54 3
             מה שהתחלתי לכתוב בclass TomT  13.02.13 23:17 4
  דברים שאתה צריך לעשות: Zvikadori 14.02.13 00:42 5
     ישנם כמה דברים שלא מובנים TomT  14.02.13 11:36 6

       
אורי 
חבר מתאריך 9.7.12
20459 הודעות
   22:04   13.02.13   
אל הפורום  
  1. לא הבנתי בדיוק מה חסר לך  
בתגובה להודעה מספר 0
 
   אתה לא מכיר הפרוצדורות/פונקציות על מנת לעבוד עם מערכים או שאתה לא יודע איך לכתוב את הפונקציות בclass השלישי מבחינה אלגוריתמית?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TomT 
חבר מתאריך 13.2.13
4 הודעות
   22:47   13.02.13   
אל הפורום  
  2. כל הכבוד על המענה המהיר  
בתגובה להודעה מספר 1
 
   ערכתי לאחרונה בתאריך 13.02.13 בשעה 22:53 בברכה, TomT
 
אני מתקשה להתחיל בכלל לכתוב את הפונקציות אשמח לקבל עצה מאיפה להתחיל.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   22:54   13.02.13   
אל הפורום  
  3. תעלה מה שהתחלת לכתוב, לתת לך כיוון  
בתגובה להודעה מספר 2
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TomT 
חבר מתאריך 13.2.13
4 הודעות
   23:17   13.02.13   
אל הפורום  
  4. מה שהתחלתי לכתוב בclass  
בתגובה להודעה מספר 3
 
   מה שהתחלתי לכתוב בclass מספר 3
https://rotter.name/User_files/nor/511c02e67896e4fc.txt


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zvikadori
חבר מתאריך 3.8.02
5369 הודעות
   00:42   14.02.13   
אל הפורום  
  5. דברים שאתה צריך לעשות:  
בתגובה להודעה מספר 0
 
   1)אם אתה ממשיך להשתמש במערכים(מס' ידוע ומוגבל מראש) של סופרים וספרים.
הייתי ממליץ לך לשמור משתנה סטאטי ציבורי המכיל את מס' הספרים/סופרים(אחד לכל אחד), כדי שבכל פעם שאתה צריך להשתמש בגודל המערך לא תרשום "80".
ככה במידה ויש שינוי אתה משנה בכל המקומות ביחד.
במקרה כזה, כדאי לשמור גם משתנה פרטי, שיגיד לך מה מכסת התאים שהשתמשת(bookCount, authorCount), ובאיזה תא להכניס את הספר הבא בתור.

2)במידה ואתה לא משתמש במערכים(אידאלי - שימוש ב-Vector עם generics של <Book> ו-<Author>) לא תצטרך לשמור את ה-bookCount(למרות שמומלץ), כי הווקטור כבר מנהל לך את כל הדברים שאתה צריך.

3)אתה לא מכניס ספרים/מחברים ב-constructor בצורה ידנית(אמרנו אם בחרת במערך אתה צריך לקדם את bookCount).
יש לך בשביל זה addBook ופונק' דומות, אתה משתמש רק בהן(אישית אני לא אוהב להשתמש בפונק' שעלולות להידרס בתוך קונסטרקטור, זה מתכון לבעיות בהורשה).

לאובייקט library ישנה אינווריינטה(תנאי שמתקיים תמיד) , תמיד bookCount ו-authorCount יספרו את מס' הספרים שהוכנסו למערך(שזה בעצם המקום להכנסת הספר הבא במערך), כלומר עליך לקדם אותם בכל הכנסה למערך, ולהקטין אותם בכל הוצאה מהמערך.

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

דוג' למקום שזה בעייתי - הפונק' pop במחסנית, היא גם מחזירה את האיבר העליון במחסנית, וגם מוציאה אותו מהמחסנית(גם את זה ניתן לחלק אבל סתם שתכיר ותראה את הדברים בצורה חכמה כבר מההתחלה).

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

לסיכום, גם מימוש בממשק שמחזיר boolean כמו שעשית הוא ריאלי, רק כדאי שתכיר עוד דרך.

5)עבור ספרים וסופרים, תבנה פונק' שוויון לוגי(תדרוס את equals אם אתה יודע איך, אם לא פשוט תבנה פונק' דומה ל-equals רק שלא תקבל Object אלא Book או Author).
במידה ותעבוד עם Vector, אז תוכל בקלות לדעת האם הוקטור כבר מכיל סופר/ספר בעזרת פונק' מוכנה מראש שנקראת contains(במידה ודרסת את equals המקורית).
במידה ואתה ממשיך לעבוד עם מערכים, אתה תצטרך לממש פונק' דומה ל-contains שעוברת על המערך באופן סדרתי(מאינדקס 0 ועד אינדקס bookCount- לא כולל!!).
ולהפעיל את פונק' השוויון הלוגית שכתבת זה עתה.

אם סיבכתי אותך תגיד.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TomT 
חבר מתאריך 13.2.13
4 הודעות
   11:36   14.02.13   
אל הפורום  
  6. ישנם כמה דברים שלא מובנים  
בתגובה להודעה מספר 5
 
   עדיין לא למדנו מה זה Vector ככה שזה לא ממש רלוונטי.

אני אשאיר את זה כboolean , מכוון שאני לא ממש הבנתי (ולא למדתי)
מה זה commands ו-queries.(וגם כי ככה צריך)

לדרוס את equals לא ממש הבנתי את הקטע , עשיתי Override@ אבל מה אמור להיות
בתוכו איפוס של כל המשתנים ? (זה חומר שרק התחלנו לנגוע בו)

ולגבי addBook אני יצטרך לחשב בתוכו אם הספר/סופר הוכנס כבר ?
או שמומלץ לעשות פונקציות נוספות בשביל זה (נגיד foundBook שתכיל בתוכה
אולי איזה לולאה)

תודה על התשובה ,
שעשתה לי סדר במחשבה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net