שאלה בסיסית בג'אווה - עמוד 3 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלה בסיסית בג'אווה


spring10

Recommended Posts

כמו שהסברתי לך קודם:

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

פונקציות/שיטות זה פעולות שאפשר לעשות עם האובייקט.

אז איזה פונקציות יש למכונית? כל מה שהמכונית יודעת "לעשות". המכונית יודעת להאיץ, ולכן צריך לתת לה פונקצית האצה (מה שקראת לו increase), והמכונית יודעת להאט, ולכן צריך לתת לה פונקצית האטה (מה שקראת לו decrease).

אבל השמות increase ו-decrease הם לא שמות טובים, כי הם אומרים "העלה" ו"הורד", ואין כזה דבר "להעלות" ו"להוריד" את המכונית - השם של הפונקציה צריך לתאר מה היא עושה. לדוגמה, פונקציית האצה יכולה להיקרא accelerate, שזה מילולית "האץ", או increaseSpeed, שזה מילולית "הגבר מהירות". שניהם שמות טובים. תחשוב בהתאם לכך מה צריך להיות שם פונקציית ההאטה.

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

תחשוב איזה עוד תכונה צריך להוסיף, איפה צריך לשים לה ערך (לדוגמה, את המהירות הגדרת ל-0 בבנאי, וזה הגיוני - הרי המכונית מתחילה ממצב עצירה), וכמובן איך אתה מגביל את המהירות ל-100 (רמז: איך דאגת שהמהירות לא תוכל לרדת מתחת ל-0?)

בהצלחה.

קישור לתוכן
שתף באתרים אחרים

  • תגובות 48
  • נוצר
  • תגובה אחרונה

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

לגבי התוכנות עשיתי משהו דומה אני יכול לשנות את השמות באמת לפי מה שרשמת, כל התוכנות רשומות לי בעצם בשאלה עצמה..

עשיתי תכונה של הגבלת מהירות, זו לא דרך טובה?

תראה את התוכנית החדשה: (הרבה דברים לא מדוייקים)





public class Cars {

private int kmh;
private int x;
private int y;



public void stop(){
kmh=0;
}


public void decrease() {
if (kmh>0)
kmh=kmh-1;
}

public void increase() {
if (kmh>=0)
kmh=kmh+1;
if (kmh>=100)
kmh=0;
}


public Cars (int speed){
kmh=speed;

}


public void mispar (int a){

x=a;

}


public void show() {
System.out.println("Your speed is:");
System.out.println(kmh);
System.out.println("your car number is:");
System.out.println(x);



}
}

קישור לתוכן
שתף באתרים אחרים

יש לך שגיאה בסיסית בהבנה של איך מחלקה בנוייה.

נניח והייתי רוצה לכתוב מחלקה שתייצג כלב.

הייתי כולל תכונות כמו: סוג הכלב, שמו של הכלב, הצבע שלו ונניח, הנביחה שלו.

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

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

הנה הדוגמא:


private String _name;
private String _breed;
private String _color;
private String _bark;

public Dog(String breed, String name, String color){
_name = name;
_breed = breed;
_color = color;
_bark = "ruff ruff!";
}

אצלך למשל, מה משמעות התכונה x? מספר הרכב? אז תן לו שם משמעותי. ומי זה y?

יש לך את הפונקציה increase. שים לב שיש ערכים של KMH שמקיימים את שני התנאים. למה אתה בודק מתי המהירות שלילית (מתי זה יכול לקרות?)

קישור לתוכן
שתף באתרים אחרים

סבבה...אז רשמתי נגיד תכונות

int speed

int carnumber

נגיד הוא רוצה שני רכבים במחלקה

אני יוצר שני אובייקטים של car1 ו- car2

איך אני יוצר בנאי שנותן לכל מכונית מספר שונה אם אפשרות לשנות את המספר

קישור לתוכן
שתף באתרים אחרים

יש לך חוסר הבנה בסיסי במה מייצג מחלקה.

המחלקה Car מייצגת שיש לו מהירות ומספר. אם אתה רוצה 2 רכבים, אתה פשוט משתמש בבנאי פעמיים.

נניח אני רוצה שתי מחרוזות:


String str1 = new String("hello");
String str2 = new String("world");

קישור לתוכן
שתף באתרים אחרים

אז רשמתי ככה:

private int carnumber

יצרתי 2 אובייקטים של מכוניות והכנסתי להם מספר:

Cars car1=new Cars(12);

Cars car2=new Cars(15);

והשיטה היא:

public void mispar (int a, int b){

mispar1=a;

mispar2=b;

איפה הטעות שלי? ומה צריך להוסיף?

קישור לתוכן
שתף באתרים אחרים

מה השיטה הזו עושה (מה המטרה שלה)? מה זה mispar? מה המשמעות של הפרמטרים שהיא מקבלת?

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

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

קישור לתוכן
שתף באתרים אחרים

קודם כל, אם היא צריכה להציג משהו, אז שיקראו לה בשם המתאים - לדוגמה showNumber,printNumber או getNumber (גם בין השמות האלה יש הבדל סמנטי כלשהו, אבל אני לא אכנס אליו).

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

קישור לתוכן
שתף באתרים אחרים

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

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.


×
  • צור חדש...