Presentation is loading. Please wait.

Presentation is loading. Please wait.

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים 1 הפניות.

Similar presentations


Presentation on theme: "© המרכז להוראת המדעים האוניברסיטה העברית בירושלים 1 הפניות."— Presentation transcript:

1 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 1 הפניות

2 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 2 הנושאים הפניות לעומת עצמים. פעולה בונה מעתיקה. עצם (הפניה) כפרמטר של פעולה. עצמים מורכבים.

3 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 3 הפניות לעומת עצמים Bucket b1; Bucket b2 = b1; b2.fill(3); b1.fill(5); מה התוצאה ? NullPointerException

4 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 4 השמה של הפניות public static void main(String[] args){ Bucket buck1 = new Bucket(10); buck1.fill(3); Bucket buck2 = new Bucket(20); buck2.fill(5); Bucket buck3 = buck2; buck3.fill(4); IO.println(buck3.toString()); IO.println(buck2.toString()); } רוצים עצם שהוא העתק של buck2

5 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 5 העתקה בדרך אחרת דרך א: Bucket buck3 = new Bucket(buck2.getCapacity(), buck2.getCurrentAmount()); דרך ב: (ייתכן שכלל אין פעולות getXX) נגדיר פעולה בונה שמטרתה להעתיק את התכונות מעצם אחד לעצם שני: public Bucket (Bucket b2) { this.capacity = b2.capacity; this.currentAmount = b2.currentAmount; }

6 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 6 שימוש בפעולה בונה מעתיקה public static void main(String[] args) { Bucket buck1 = new Bucket(10); buck1.fill(3); Bucket buck2 = new Bucket(20); buck2.fill(5); Bucket buck3 = buck2; } Bucket buck3 = new Bucket(buck2);

7 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 7 עצמים מורכבים public class MilkBottle{ private int capacity; private double fat; private Date expiryDate; public MilkBottle(){…} public int getCapacity(){…} public double getFat(){…} public Date getExpiryDate(){…} } MilkBottle Date

8 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 8 בעיה 1 public class TestMilkBottle{ public static void main(String[] args){ Date d1 = new Date(12,4,2007); MilkBottle mb = new MilkBottle(5, 1.5, d1); d1.setYear(2008); } } public class MilkBottle{ public MilkBottle (int capacity, double fat, Date expiryDate){ this.capacity = capacity; this.fat = fat; this.expiryDate = expiryDate; } {

9 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 9 בעיה 1 - המשך public static void main(String[] args){ Date d1 = new Date (3, 6, 2005); MilkBottle mb = new MilkBottle (2, 0.5, d1); d1.setYear (2007); } 2005 63 d1 public MilkBottle (int capacity, double fat, Date expiryDate){ this.capacity = capacity; this.fat = fat this.expiryDate = expiryDate; } expiryDate mb 20.5 2007 2 capacity 0.5 fat

10 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 10 בעיה 2 public static void main(String[] args){ Date d1 = new Date (3, 6, 2005); MilkBottle mb = new MilkBottle (2, 0.5, d1); Date d2 = mb.getExpiryDate(); d2.setYear(2011); } public Date getExpiryDate(){ return this.expiryDate; }

11 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 11 פתרון בעיה 1 public MilkBottle (double capacity, int fat, Date expiryDate){ this.capacity = capacity; this.fat = fat this.expiryDate = new Date (expiryDate) ; } public Date(Date d){ this.year = d.year; this.month = d.month; this.day = d.day; }

12 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 12 פתרון בעיה 2 public Date getExpiryDate()} return new Date(this.expiryDate); } public static void main (String[] args){ Date d1 = new Date(1, 1, 2009); MilkBottle mb = new MilkBottle(5, 3, d1); Date d3 = mb.getExpiryDate(); d3.setMonth(); }

13 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 13 תרגול תרגיל תיאורטי פעולה בונה מעתיקה מלבן

14 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים 14 סיכום הפניות לעומת עצמים השמה של הפניות פעולה בונה מעתיקה עצם מורכב


Download ppt "© המרכז להוראת המדעים האוניברסיטה העברית בירושלים 1 הפניות."

Similar presentations


Ads by Google