1 / 25

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

תכונות מחלקה שיטות מחלקה. static variables static methods. עד עתה – תכונות שייכות לעצם. public class Student { private String name; private double grade; public Student( String name, double grade) { this.name = name; this.grade = grade; } }. תלמידי בית הספר.

eloise
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. avi dani name = “avi cohen” grade = 93.4 name = “dani levi” grade = 92.3 יצירת עצמים Student avi = new Student(…); Student dani = new Student(…);

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

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

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

  8. איבר של מחלקה משתנה המשרת את כל עצמי המחלקה ואינו משוייך לעצם כלשהו, קרוי איבר של מחלקה

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

  10. public static intcounter = 0; • private – מאפשר גישה מהמחלקה בלבד • static – מגדיר את המשתנה כמשתנה מחלקה • אתחול – כבר בשלב ההגדרה

  11. public static intcounter = 1; • private – מאפשר גישה מהמחלקה בלבד • static – מגדיר את המשתנה כמשתנה מחלקה • אתחול – כבר בשלב ההגדרה • Java יוצרת משתנה אחד עבור כל העצמים • לכל עצם יש גישה אליו. • כל עצם יכול לשנות את ערכו

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

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

  14. avi dani hagit name = “avi cohen” grade = 93.4 id = 1 name = “dani levi” grade = 92.3 id = 2; name = “hagit til” grade = 97.5 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 • המשתנה הסטטי חוסך זכרון • מאפשר קשר בין עצמים • מאפשר ניהול עצמי המחלקה • מבצע בפשטות פעולה שהן מסובכות בלעדיו. • שובר את ההגיון של עצם ומחלקה סגורים. • פתח להשפעות הדדיות של עצמים זה על זה. • פתח לטעויות.

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

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

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

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

  25. סיכום • תכונות (איברי)מחלקה :אתחול וגישה • שיטות מחלקה: הגדרה וגישה • קבועים סטטים • מחלקות עזר • ריקורסיות

More Related