You are on page 1of 7

‫מחלקות עם פתרונות‬

"‫מחלקה "תעודת בגרות‬ 1 ‫דוגמה‬


.‫ ערך ציון‬,‫ מספר יחידות‬- ‫ רמה‬,‫ מקצוע‬-‫ תכונות‬,"‫לכתוב מחלקה "ציון בגרות‬ .‫א‬
,0 ‫פעולות – פעולה בונה שמקבלת שם ורמה ובונה ציון חדש שערכו‬
, ‫ לכל תכונה‬get ‫פעולות‬
.‫פעולת עדכון לערך הציון‬
‫ אם‬, 25 ‫ יחידות –להוסיף בונוס‬5 ‫ אם‬:‫פעולה נוספת שמחזירה ציון סופי לפי חוקים‬
‫ אז ציון עצמו‬4 -‫ אם פחות מ‬,12 ‫ – להוסיף בונוס‬4
‫פעולת הדפסה כרצונך‬
{public class Grade
;private String name
;private int grVal
;private int level
{public Grade(String name,int level)
;this.name=name
;this.level=level
;this.grVal=0
}
{)(public Srtring getName
;return this.name
}
{)(public int getLevel
;return this.level
}
{)(public int getGrVal
;return this.grVal
}
{public void setGrVal(int grVal)
{
;this.grVal=grVal
}
{)(public int totalGr
;if (this.level==5) return this.grVal+25
;if (this.level==4) return this.grVal+12
;return this.grVal
}
{)(public String toString
;return this.name+" --"+this. Level+" units "+ this.grVal
}
‫לכתוב מחלקה "תעודת בגרות"‪ ,‬תכונות – תז של בעל בגרות‪ ,‬כמות המקצעות‬ ‫ב‪.‬‬
‫שהוא עשה‪ ,‬מערך "ציוני בגרות" – גדלו ‪.25‬‬
‫פעולות‪ -‬פעולה בונה שמקבלת תז ובונה תעודה חדשה בלי ציונים‬
‫פעולה שמקבלת "ציון בגרות" במוסיפה אותה (הנחה – יש מקום במערך)‬
‫פעולה מחזירה כמות ציונים בבגרות‬
‫פעולה מחזירה כמות ציוני "עובר" בבגרות‬
‫פעולה מחזירה כמות יחידות (נחשבים רק ציונים שערכם לפחות ‪)55‬‬
‫ממוצע – ממוצע של ציונים – נחשבים רק ציוני שתלמיד קבלת לפחות ‪ 55‬וגם כולל‬
‫בונוס חובה להשתמש בפעולות שכתבת בסעיף א‪.‬‬
‫פעולת הדפסה כרצונך‪.‬‬
‫‪{public class Diploma‬‬
‫‪;privateString tz‬‬
‫‪;private int countGr‬‬
‫‪;private Grade[] ar‬‬
‫)‪{public Diploma(String tz‬‬
‫‪;this.tz=tz‬‬
‫]‪;this.ar=new Grade[25‬‬
‫‪;this.countGr=0‬‬
‫}‬
‫)‪{public void addGr(Grade gr‬‬
‫‪;this.ar[this.countGr]=gr‬‬
‫‪;++this.countGr‬‬
‫}‬
‫‪{)(public int getCountGr‬‬
‫‪;peturn this.countGr‬‬
‫}‬
‫‪{)(public int getCountPassGr‬‬
‫‪;int c=0‬‬
‫)‪for(int i=0;i<this.countGr;i++‬‬
‫)‪if(this.ar[i].getGrVal()>=55‬‬
‫‪;++c‬‬
‫‪;return c‬‬
‫}‬
‫‪{)(public int getCountPassGr‬‬
‫‪;int s=0‬‬
‫)‪for(int i=0;i<this.countGr;i++‬‬
‫)‪if(this.ar[i].getGrVal()>=55‬‬
‫‪;)(s=s+ this.ar[i].getLevel‬‬
;return s
}
{)(public double getAvg
;if(getCountPassGr()==0) return 0
;double s=0
for(int i=0;i<this.countGr;i++)
if(this.ar[i].getGrVal()>=55)
;)(s=s+ this.ar[i].totalGr
;)(return s/ getCountPassGr
}
{)(public String toString
;)(return this.tz+" average "+getAvg
}

.‫ ותזמן פעולות ממחלקות שכבת‬TEST ‫כתוב מחלקה‬ .‫ג‬


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

{public class Test


..……
;Grade g1,g2
;g1= new Grade("Literature",2)
;g2= new Grade("physics",5)
;g1.setGr(78)
;g2.setGr(66)
;System.out.println(g1)
;System.out.println(g2)
;Diploma d1=new Diploma("434555")
;d1.addGr(g2)
;d1.addGr(g1)
;System.out.println(d1.getAvg())
;System.out.println(d1)
,‫ אם אין מקצוע באותו שם ורמה– תוסיף‬:‫שנה את פעולת הוספת ציון בצורה הבאה‬ .‫ד‬
‫אם יש מקצוע באותו שם ואותה כמות יחידות – עדכן את הציון בהתאם לערך ציון‬
.‫חדש‬

{public void aggGr(Grade g)


;int pl=this.countGr
{for(int i=0;i<this.countGr;i++)
if(this.ar[i].getName().equals(g.getName() &&
this.ar[i].getLevel()==g.getLevel())
;pl=i
}
If(pl==this.countGr)
{
;this.ar[pl]=g
;++this.countGr
}
else
{
;this.ar[pl].setGrVal(g.getGrVal())
}
}
‫שנה את הפעולה ככתבת בסעיף ד כך שבמקרה שצריך להוסיף ציון נדרשת בדיקה‬ .‫ה‬
‫ בנוסף פעולה תחזיר אמת אם הוספה או שינוי הצליחו ושקר אם לא‬.‫האם יש מקום‬
.‫היה מקום‬

{public void aggGr(Grade g)


{for(int i=0;i<this.countGr;i++)
if(this.ar[i].getName().equals(g.getName() && this.ar[i].getLevel()==g.getLevel())
{
;this.ar[pl].setGrVal(g.getGrVal())

;return true
}
If(this.countGr<25)
{
;this.ar[pl]=g
;++this.countGr
;return true
}
;return false
}
2 ‫דוגמה‬
"‫מחלקה "מועדון ספורט‬
,‫ שם‬:‫ לכל חוג שומרים פרטים הבאים‬.‫נתונה מחלקה "חוג" במועדון ספורט‬ .‫א‬
)‫ זה אומר שהוא חינם לחברי מועדון‬0 ‫ (אם מחיר‬.‫ מחיר‬,)6-22( ‫ שעה‬,)1-7( ‫יום‬
.‫ פעולה בונה שמקבלת כל פרמטרים‬,‫כתוב מחלקה "חוג" – כותרת תכונות‬-
‫ יום ושעה ובונה חוג ללא תשלום‬,‫כתוב פעולה בונה שמקבלת שם‬-
‫ רלוונטיות‬set ‫ לכל תכונה ופעולות‬get ‫כתוב פעולות‬-
‫כתוב פעולה בוליאנית שמחזירה אמת אם חוג בחינם ושקר אחרת‬-
‫כתוב פעולת הדפסה רלוונטית‬-

{public class Section


;private String name
;private int day
;private int time
;private double price
{public Section (String name,int day,int time,double price)
;this.name=name
;this. day = day
;this. time = time
;this.price=price
}
{public Section (String name,int day,int time)
;this.name=name
;this. day = day
;this. time = time
;this.price=0
}
{)(public Srtring getName
;return this.name
}
{)(public int getDay
;return this day
}
{)(public int getTimel
;return this.time
}
{)(public double getPrice
;return this.price
}
‫)‪{public void setDay(int d‬‬
‫{‬
‫‪;this.day=d‬‬

‫)‪{public void setTime(int t‬‬


‫{‬
‫‪;this.time=t‬‬
‫{‬
‫)‪{public void setPrice(double p‬‬
‫{‬
‫‪;this.price=p‬‬
‫{‬
‫‪{)(public Boolean free‬‬
‫{‬
‫‪;return this.price==0‬‬
‫{‬

‫‪{)(public String toString‬‬


‫‪;return this.name+" -day:-"+this. day+" hour:"+ this.time+" price: "+this.price‬‬
‫}‬

‫ב‪ .‬מועדון ספורט מארגן עד ‪ 50‬חוגים ‪ .‬תכונות של מחלקה מועדון ‪ -SportClub‬שם המועדון‪,‬‬
‫כמות החוגים הנוכחית ומערך החוגים‪.‬‬
‫‪-‬כתוב מחלקה מועדון ספור‪ -‬כותרת תכונות‬
‫‪-‬ממש פעולה בונה שמקבלת שם המועדון ובונה מועדון ריק‬
‫‪-‬כתוב פעולה פנימית שמקבלת חוג חדש (מאותחל) ומוסיפה אוותו למועדון –אם יש מקום‪.‬‬
‫פעולה מחזירה אמת –אם הייתה אפשרות להוסיף ושקר‪ -‬אחרת‪.‬‬
‫‪-‬ממש פעולה פנימית שמקבלת יום שבוע (חוקי) ומחזירה כמות החוגים שמתקיימים באותו‬
‫יום‪.‬‬
‫‪-‬ממש פעולה פנימית שמקבלת יום שבוי ומדפיסה פרטים של כל החוגים שמתקיימים באותו‬
‫יום‪ -‬שם ושעה‪.‬‬
‫יש להניח שכל נתונים חוקיים – אין צורך לבדוק‪.‬‬
‫‪{public class SportClub‬‬
‫‪;private String name‬‬
‫‪;private int num‬‬
‫‪;private Section[] ar‬‬

‫)‪{public SportClass(String name‬‬


;this.name=name
;this.num=0
;this.ar=new Section[50]
}
{public Boolean add(Section s)
;if(this.num==50) return false
;this.ar[this.num]=s
;++this.num
;return true
}

{public int numDay(int d)


;int count=0
{for(int i=0;i<this.num;i++)
if(this.ar[i].getDay()==d)
;++count
}
;return count
}

{public void printDay(int d)


{for(int i=0;i<this.num;i++)
if(this.ar[i].getDay()==d)
;System.out.println(this.ar[i].getName()+ " "+ this.ar[i].getTime())
}
}

‫ שבדיקת מחלקות שכתבת‬TEST‫כתוב מחלקה‬ .‫ג‬

{public class Test


……
;Section s1,s2
;s1=new Section("footboll",4,13,120.0)
;s2=new Section("swimming",1,14,330)
if(c.add(s1))
;System.out.println("yes")

;c.add(s2)

;System.out.println(c.numDay(1))

;)c.printDay(4)

You might also like