תכונות מחלקה שיטות מחלקה
עד עתה – תכונות שייכות לעצם
תלמידי בית הספר
יצירת עצמים
יצירת עצמים
מספר סידורי לתלמידים
איבר של מחלקה
איבר של מחלקה
איבר של מחלקה
public static int counter = 0;
public static int counter = 1;
שימוש במשתנה מחלקה
יצירת עצמים
התמונה המדוייקת
שיטות מחלקה
getCounter()
getCounter()
שימוש בשיטות מחלקה
שימוש בשיטות מחלקה
Pro’s and Con’s
קבועים בשימוש המחלקה
פעולות שאינן קשורות לעצם
למשל – המחלקה MATH
סטטי – JAVA – C
סיכום
603.50K
Категория: ПрограммированиеПрограммирование

Java static

1. תכונות מחלקה שיטות מחלקה

‫תכונות מחלקה‬
‫שיטות מחלקה‬
static variables
static methods

2. עד עתה – תכונות שייכות לעצם

‫עד עתה – תכונות שייכות לעצם‬
public class Student {
private String name;
private double grade;
public Student(String name, double grade) {
this.name = name;
this.grade = grade;
}
}

3. תלמידי בית הספר

‫תלמידי בית הספר‬
public class Student {
private String name;
private double grade;
public Student(String name, double grade) {
this.name = name;
?!?!?!? ‫סוס טרויאני‬
this.grade = grade;
}
!!! ‫אין שיטה בונה‬

4. יצירת עצמים

‫יצירת עצמים‬
Student avi = new Student(…);
avi
name = “avi cohen”
grade = 93.4
Student dani = new Student(…);
dani
name = “dani levi”
grade = 92.3

5. יצירת עצמים

‫יצירת עצמים‬
‫;)…(‪Student avi = new Student‬‬
‫‪avi‬‬
‫;)…(‪Student dani = new Student‬‬
‫‪dani‬‬
‫”‪name = “avi cohen‬‬
‫‪grade = 93.4‬‬
‫”‪name = “dani levi‬‬
‫‪grade = 92.3‬‬
‫התכונות שייכות לעצמים ‪ avi‬ו‪dani-‬‬
‫ גישה פרטית מתוך העצם לערכים‪.‬‬‫ אין קשר בין הערכים בשני העצמים‪.‬‬‫‪ -‬שניהם לפי תבנית המחלקה‬

6. מספר סידורי לתלמידים

‫מספר סידורי לתלמידים‬
‫‪ ‬בית הספר מבקש לתת לכל תלמיד מספר סידורי באופן‬
‫רצוף‪.‬‬
‫‪ ‬ניצור לכל תלמיד תכונה חדשה 'מספר סידורי'‪.‬‬
‫‪ ‬אבל !!! זו דרישה לקשר בין עצמים שונים מאותה‬
‫מחלקה‪:‬‬
‫‹ צריך לדעת מי היה התלמיד הקודם שנוצר‪.‬‬
‫‹ צריך לדעת מה היה מספרו הסידורי‪.‬‬
‫‹ צריך לספור באופן רצוף‪.‬‬

7. איבר של מחלקה

‫איבר של מחלקה‬
‫‪ ‬מספר סידורי הוא אכן תכונה ייחודית לכל תלמיד‪.‬‬
‫‪ ‬אבל מונה המספרים הסידוריים הינו משתנה‬
‫המשרת את כל העצמים במחלקה‪.‬‬
‫‹ הוא מאותחל ל‪ 0-‬לפני שנוצר עצם כלשהו‪.‬‬
‫‹ ערכו עולה ב‪ 1-‬בזמן יצירת העצם‪.‬‬
‫‹ ערכו מועתק למספר הסידורי של התלמיד‪.‬‬
‫‪ ‬מונה המספרים אינו משוייך לתלמיד ספציפי‪.‬‬

8. איבר של מחלקה

‫איבר של מחלקה‬
‫משתנה המשרת את כל עצמי המחלקה‬
‫ואינו משוייך לעצם כלשהו‪ ,‬קרוי‬
‫איבר של מחלקה‬

9. איבר של מחלקה

‫איבר של מחלקה‬
‫משתנה המשרת את כל עצמי המחלקה‬
‫ קרוי‬,‫ואינו משוייך לעצם כלשהו‬
‫איבר של מחלקה‬
:Java-‫הצהרה ב‬
public class Student {
private static int counter = 0;
private int id;
private String name;
private double grade;

10. public static int counter = 0;

‫;‪public static int counter = 0‬‬
‫‪ – private ‬מאפשר גישה מהמחלקה בלבד‬
‫‪ – static ‬מגדיר את המשתנה כמשתנה מחלקה‬
‫‪ ‬אתחול – כבר בשלב ההגדרה‬

11. public static int counter = 1;

‫;‪public static int counter = 1‬‬
‫‪ – private ‬מאפשר גישה מהמחלקה בלבד‬
‫‪ – static ‬מגדיר את המשתנה כמשתנה מחלקה‬
‫‪ ‬אתחול – כבר בשלב ההגדרה‬
‫‪ Java ‬יוצרת משתנה אחד עבור כל העצמים‬
‫‪ ‬לכל עצם יש גישה אליו‪.‬‬
‫‪ ‬כל עצם יכול לשנות את ערכו‬

12. שימוש במשתנה מחלקה

‫שימוש במשתנה מחלקה‬
public Student(String name, double grade) {
this.name = name;
this.grade = grade;
this.counter++;
this.id = this.counter;
}

13. יצירת עצמים

‫יצירת עצמים‬
Student avi = new Student(…);
Counter = 1
avi
Student dani = new Student(…);
dani
name = “avi cohen”
grade = 93.4
name = “dani levi”
id = 1
grade = 92.3
Counter = 2
id = 2;
Counter = 3

14. התמונה המדוייקת

‫התמונה המדוייקת‬
avi
dani
hagit
name = “avi cohen”
name = “dani levi”
name = “hagit til”
grade = 93.4
grade = 92.3
grade = 97.5
id = 1
id = 2;
id = 3;
3
counter
counter ‫יש עותק אחד בלבד של המשתנה‬

15. שיטות מחלקה

‫שיטות מחלקה‬
‫‪ ‬בג'אווה‪ ,‬הגישה לתכונות הינה באמצעות שיטות‬
‫המשוייכות לעצם ספציפי‪.‬‬
‫‪ ‬איך ניגש לתכונות מחלקה‪ ,‬שאינן משוייכות לעצם?‬
‫‪ ‬באמצעות שיטות מחלקה‪.‬‬

16. getCounter()

public static int getCounter() {
return this.counter;
}
!!! ‫שיטות סטטיות נגישות לתכונות סטטיות בלבד‬

17. getCounter()

public static int getCounter() {
return this.counter;
}
!!! ‫שיטות סטטיות נגישות לתכונות סטטיות בלבד‬
???? ‫ איך משתמשים בשיטה‬...‫אבל‬

18. שימוש בשיטות מחלקה

‫שימוש בשיטות מחלקה‬
? ‫כמה תלמידים נוצרו‬
public static void main(String[] args) {
int num = Student.getCoutner();
System.out.printtln(num);
}

19. שימוש בשיטות מחלקה

‫שימוש בשיטות מחלקה‬
? ‫כמה תלמידים נוצרו‬
public static void main(String[] args) {
int num = Student.getCoutner();
System.out.printtln(num);
}
,‫פנייה אל המחלקה‬
‫אליה שייכת השיטה‬

20. Pro’s and Con’s

‫‪Pro’s and Con’s‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫המשתנה הסטטי חוסך זכרון‬
‫מאפשר קשר בין עצמים‬
‫מאפשר ניהול עצמי המחלקה‬
‫מבצע בפשטות פעולה שהן מסובכות בלעדיו‪.‬‬
‫‪ ‬שובר את ההגיון של עצם ומחלקה סגורים‪.‬‬
‫‪ ‬פתח להשפעות הדדיות של עצמים זה על זה‪.‬‬
‫‪ ‬פתח לטעויות‪.‬‬

21. קבועים בשימוש המחלקה

‫קבועים בשימוש המחלקה‬
‫‪ ‬אין טעם ליצור משתנה קבוע עבור כל עצם‪.‬‬
‫‪ ‬כמו כן‪ ,‬בגלל שהוא קבוע‪ ,‬אין חשש שישונה‪.‬‬
‫‪ ‬לכן‪ ,‬נהוג ליצור קבועים של מחלקה באופן הבא‪:‬‬
‫;‪public static double GRAVITY = 9.81‬‬
‫‪ ‬לקבועים אלה ניתן לגשת גם מחוץ למחלקה‪:‬‬
‫= ‪double newton‬‬
‫;‪avi.getMass() * Student.GRAVITY‬‬
‫זאת בהנחה שהגדרנו את הקבוע במחלקה ‪Student‬‬

22. פעולות שאינן קשורות לעצם

‫פעולות שאינן קשורות לעצם‬
‫‪ ‬יש לא מעט פעולות שאינן קשורות לעצם‪:‬‬
‫חישובים מתימטיים‬
‫ריקורסיה‬
‫‪ ‬לשם כך יוצרים 'מחלקות שירות' שכל תפקידן‬
‫לספק את השירותים האלה‪.‬‬

23. למשל – המחלקה MATH

‫למשל – המחלקה ‪MATH‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪http://java.sun.com/j2se/1.3/docs/api‬‬
‫כל התכונות קבועים סטטים )‪(E, PI‬‬
‫כל השיטות סטטיות‪ ,‬למשל‬
‫)‪public static int abs(double d‬‬
‫‪ ‬חוסך יצירת עצם חסר משמעות‪.‬‬

24. סטטי – JAVA – C

‫סטטי – ‪C – JAVA‬‬
‫‪ ‬למעשה‪ ,‬שיטות סטטיות זהות לפונקציות ב‪ ,C-‬כי‬
‫אינו משוייכות לעצם‪.‬‬
‫‪ ‬כך גם יוצרים ריקורסיה ב‪:java-‬‬
‫שיטה סטטית‪ ,‬הקוראת לעצמה‪.‬‬

25. סיכום

‫סיכום‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫תכונות (איברי) מחלקה ‪ :‬אתחול וגישה‬
‫שיטות מחלקה‪ :‬הגדרה וגישה‬
‫קבועים סטטים‬
‫מחלקות עזר‬
‫ריקורסיות‬
English     Русский Правила