פורסם 2012 בדצמבר 812 שנים כמו שהסברתי לך קודם:איברים/תכונות זה מידע שנשמר על גבי האובייקט.פונקציות/שיטות זה פעולות שאפשר לעשות עם האובייקט.אז איזה פונקציות יש למכונית? כל מה שהמכונית יודעת "לעשות". המכונית יודעת להאיץ, ולכן צריך לתת לה פונקצית האצה (מה שקראת לו increase), והמכונית יודעת להאט, ולכן צריך לתת לה פונקצית האטה (מה שקראת לו decrease).אבל השמות increase ו-decrease הם לא שמות טובים, כי הם אומרים "העלה" ו"הורד", ואין כזה דבר "להעלות" ו"להוריד" את המכונית - השם של הפונקציה צריך לתאר מה היא עושה. לדוגמה, פונקציית האצה יכולה להיקרא accelerate, שזה מילולית "האץ", או increaseSpeed, שזה מילולית "הגבר מהירות". שניהם שמות טובים. תחשוב בהתאם לכך מה צריך להיות שם פונקציית ההאטה.איזה איברים/תכונות/שדות יש למכונית? כל פרט מידע שנשמר על המכונית. איזה פרטי מידע יכולים להיות למכונית? מהירות נוכחית, צבע, מספר גלגלים, שם הנהג וכן הלאה וכן הלאה. כמובן, לא נשמור את כל המידע הזה כי הוא מיותר - נשמור רק את המידע שמעניין אותנו. במקרה הזה, מה שמעניין אותנו הוא המהירות, ולכן נשמור אותה בשדה בשם מתאים - speed (ואם נרצה יותר לדייק - currentSpeed, דהיינו מהירות נוכחית).תחשוב איזה עוד תכונה צריך להוסיף, איפה צריך לשים לה ערך (לדוגמה, את המהירות הגדרת ל-0 בבנאי, וזה הגיוני - הרי המכונית מתחילה ממצב עצירה), וכמובן איך אתה מגביל את המהירות ל-100 (רמז: איך דאגת שהמהירות לא תוכל לרדת מתחת ל-0?)בהצלחה.
פורסם 2012 בדצמבר 812 שנים מחבר השאלה שלי עוד לפני זה איך אתה בוחר את הערכים ומתאים אותם לתכונות..לגבי התוכנות עשיתי משהו דומה אני יכול לשנות את השמות באמת לפי מה שרשמת, כל התוכנות רשומות לי בעצם בשאלה עצמה..עשיתי תכונה של הגבלת מהירות, זו לא דרך טובה?תראה את התוכנית החדשה: (הרבה דברים לא מדוייקים)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);}}
פורסם 2012 בדצמבר 812 שנים יש לך שגיאה בסיסית בהבנה של איך מחלקה בנוייה.נניח והייתי רוצה לכתוב מחלקה שתייצג כלב.הייתי כולל תכונות כמו: סוג הכלב, שמו של הכלב, הצבע שלו ונניח, הנביחה שלו.ראשית, אני צריך בנאי (והשתדל לכתוב את הפונקציה של הבנאי ראשונה). הבנאי בעצם אמור לאתחל את כל המשתנים הללו שהגדרנו עבור התכונות.אם נניח הבנאי מקבל את סוג הכלב, שם הכלב והצבע שלו, זה בדיוק מה שאני אעשה. אני גם אתן איזה ערך ברירת מחדל לנביחה שלו.הנה הדוגמא: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 שמקיימים את שני התנאים. למה אתה בודק מתי המהירות שלילית (מתי זה יכול לקרות?)
פורסם 2012 בדצמבר 912 שנים מחבר מצטער אבל לא הבנתי את ההסברים...אני לא יודע באיזה תכונות לבחור, איזה פונקציות לעשות ואיך לכתוב את הבנאי \:
פורסם 2012 בדצמבר 912 שנים זה באמת פשוט ולא מסובך.לרכב שלך יש תכונות של מהירות ומספר הרכב.הבנאי שלך אמור לתת להם ערכים.
פורסם 2012 בדצמבר 912 שנים מחבר סבבה...אז רשמתי נגיד תכונותint speed int carnumberנגיד הוא רוצה שני רכבים במחלקהאני יוצר שני אובייקטים של car1 ו- car2איך אני יוצר בנאי שנותן לכל מכונית מספר רכב שונה אם אפשרות לשנות את המספר
פורסם 2012 בדצמבר 912 שנים יש לך חוסר הבנה בסיסי במה מייצג מחלקה.המחלקה Car מייצגת רכב שיש לו מהירות ומספר. אם אתה רוצה 2 רכבים, אתה פשוט משתמש בבנאי פעמיים.נניח אני רוצה שתי מחרוזות:String str1 = new String("hello");String str2 = new String("world");
פורסם 2012 בדצמבר 912 שנים מחבר אז רשמתי ככה: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;איפה הטעות שלי? ומה צריך להוסיף?
פורסם 2012 בדצמבר 912 שנים מה השיטה הזו עושה (מה המטרה שלה)? מה זה mispar? מה המשמעות של הפרמטרים שהיא מקבלת?כשאתה כותב שיטה, אתה צריך להיות מסוגל לתאר במילים מה היא עושה (או אמורה לעשות), וביחס לפרמטרים שלה. חוץ מזה, השם של השיטה והפרמטרים שלה צריכים להתאים לתיאור הזה. לדוגמה, את השיטה increase אפשר לתאר במילים "מעלה את מהירות המכונית". אם לדוגמה הפונקציה הייתה מקבלת פרמטר שאומר בכמה להעלות את המהירות, אז אפשר היה לתאר את השיטה כ"מעלה את מהירות המכונית בכמות שהועברה כפרמטר".אם לדוגמה עשית בנאי שמקבל את מספר המכונית, אז אתה יכול לתאר אותו במילים "יוצר מכונית חדשה עם מספר הזיהוי שהועבר כפרמטר".
פורסם 2012 בדצמבר 912 שנים מחבר השיטה הזאת נקראת מספר, היא צריכה להציג את מספר הרכב.. הפרמטרים היא מקבל לפי המספרים שמזינים בבנאי..
פורסם 2012 בדצמבר 912 שנים קודם כל, אם היא צריכה להציג משהו, אז שיקראו לה בשם המתאים - לדוגמה showNumber,printNumber או getNumber (גם בין השמות האלה יש הבדל סמנטי כלשהו, אבל אני לא אכנס אליו).חוץ מזה, למה היא צריכה לקבל פרמטרים? פרמטרים זה מידע שהפונקציה צריכה לקבל ממי שקורא לה על מנת לעשות את עבודתה. כשאתה שואל את בעל הרכב "אמור לי, מה מספר הרכב שלך?" האם אתה נותן לו מספרים לבחור מהם? לא, אתה פשוט שואל אותו שאלה כללית (בלי מידע נוסף) והוא זה שצריך לומר מה המספר.
פורסם 2012 בדצמבר 912 שנים מחבר אז אתה יכול להראות לי מה הדרך הנכונה בכדי שיהיה ניתן להתקדם וללמוד מזה?
פורסם 2012 בדצמבר 912 שנים אני מציע שפשוט תקרא שוב דוגמאות למחלקות שקיבלתם בכיתה, או שכתובים לך בספר, ושתנסה לחבר שוב בין מה ששניצל אמר למה שאתה רואה בדוגמאות.שניצל כאן נתן לך את כל הכלים, וכמעט ממש האכיל בכפית. השלב הבא זה פשוט לתת לך את התשובה וזה כבר לא לעניין.
פורסם 2012 בדצמבר 912 שנים מחבר מצטער אבל אני בשלב כבר שאני מבולבל מהכל... אני צריך לראות מבנה של התוכנית ומזה להבין מה עלי לעשות.
פורסם 2012 בדצמבר 912 שנים חפש באינטרנט דוגמאות למחלקות פשוטות. פשוט יש לך בעיה בסיסית בהבנה שלא תיפתר בלי "ללכלך את הידיים"
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.