___תאריך הבחינה _______________ 28

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

מבוא למדעי המחשב

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

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

Slide 1

מבוא למדעי המחשב

מבוא לתכנות ב- JAVA תרגול 11

מבחן בפיתוח מערכות תוכנה בשפת Java ( )

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

Slide 1

מבוא למדעי המחשב

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

Slide 1

מבוא למדעי המחשב

מבוא לתכנות ב- JAVA תרגול 7

PowerPoint Presentation

מבוא למדעי המחשב

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

תרגול 1

מהוא לתכנות ב- JAVA מעבדה 3

מבוא למדעי המחשב

סדנת תכנות ב C/C++

Microsoft Word - Ass1Bgu2019b_java docx

PowerPoint Presentation

תרגול 1

PowerPoint Presentation

תוכן העניינים

Microsoft PowerPoint - rec3.ppt

תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

PowerPoint Presentation

Slide 1

תוכן העניינים

PowerPoint Presentation

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

Microsoft PowerPoint - 07_tdd.ppt

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

מבוא למדעי המחשב - חובלים

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

פקולטה: מחלקה: שם הקורס: קוד הקורס: מדעי הטבע מדעי המחשב ומתמטיקה מתמטיקה בדידה תאריך בחינה: _ 07/07/2015 משך הבחינה: 3 שעות סמ' _ב' מועד

1

תכנות מונחה עצמים א' – תש"ע

ייבוא וייצוא של קבצי אקסל וטקסט

לנץ קרן מרצה: תכנותמונחהעצמים) ( יוםשישי 15 אוקטובר 0202 ב מועד 0202, אביב סמסטר סמסטר סוף מבחן גוטמן אייל רביב, אריאל משנה, אלון מתרגלים: הנחי

Microsoft PowerPoint - 10_threads.ppt

Microsoft PowerPoint - 07_tdd.ppt

Overview of new Office 365 plans for SMBs

תרגול 1

תורת הקומפילציה

עוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכ

יוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן

מצגת של PowerPoint

Microsoft Word - pitaron222Java_2007.doc

PowerPoint Presentation

מצגת של PowerPoint

Slide 1

Microsoft Word B

ex1-bash

מבוא למדעי המחשב - חובלים

PowerPoint Presentation

תרגול 1

מרצים יקרים, אתר המכללה מאפשר למרצי המכללה להזין את פרטיהם וקורות חייהם. זאת בדומה לאתרים מקבילים של מוסדות אקדמיים בארץ ובעולם. עמודי המרצים נועדו לא

מבוא למדעי המחשב

Microsoft Word - c_SimA_MoedB2005.doc

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

Microsoft PowerPoint - meli-iso.ppt

איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl

שאלהIgal : מערכים דו מימדיים רקורסיה:

פקולטה לחינוך מנהל סטודנטים Beit Berl College الكلية االكاديمية بيت بيرل 20/06/2016 י"ד/סיון/תשע"ו ייעוץ וירטואלי הרכבת מערכת )רישום לקורסים( באמצעות

מדריך למרצים ומתרגלים 1

Tutorial 11

מכללת הדסה, הפקולטה למדעי המחשב מבוא לתכנות מונחה עצמים והנדסת תוכנה סמסטר א', תשע"ו תרגיל 2 תאריך אחרון להגשה: קמפוס הנביאים יום א', 29/11/2015 בשעה

WinZIP תוכנה לדחיסת קבצים ספטמבר 2007

PowerPoint Presentation

1

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

PowerPoint Presentation

הגשה תוך שבוע בשעת התרגול

Slide 1

Microsoft PowerPoint - lec10.ppt

מס' סידורי: ת.ז.: עמוד 1 מתוך 20 בחינה בתוכנה 1 סמסטר ב', מועד א',תשס"ט 5/7/2009 וולף, ליאור ליאור שפירא, נעמה מאיר, מתי שמרת הוראות )נא לקרוא!( משך ה

אתגר קוביות מחייכות תכולה: 12 קוביות חוברת הוראות ופתרונות ספרון הכולל 60 חידות חידות בדרגות קושי שונות תפיסה חזותית וחשיבה לוגית הקדמה המשחק פרצופים

Microsoft PowerPoint - lec2.ppt

HTML - Hipper Text Makeup Language

תוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגש

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

Slide 1

PowerPoint Presentation

תמליל:

30.01.2018 ד"ר עזאם מרעי. יסודות הנדסת תוכנה.. מועד: א'. 202-1-3051 תאריך הבחינה: שם המרצה: שם הקורס: מספר הקורס: שנה: 2018 משך הבחינה: סמסטר: א' 3 שעות הנחיות כלליות: נא לוודא כי בשאלון זה 17 עמודים + 17 עמודים שבנספח. יש לענות על כל השאלות בגוף המבחן בלבד. אין לחרוג מהמקום המוקצה )במקרים חריגים יש לבקש אישור ממרצה / מתרגל(. מומלץ להשתמש במחברת הבחינה כטיוטה. סך הניקוד במבחן הוא 100 כדלהלן: 25 נק' = שאלה 1: בדיקות, מבחני קבלה, TDD ו- XP 25 נק' = שאלה 2: תבניות עיצוב 25 נק' = שאלה :3 Refactoring 25 נק' = שאלה :4 Contract Design by אם אינך יודעים את התשובה, ניתן לכתוב "לא יודע" ולקבל 20% מהניקוד על הסעיף / השאלה. אין לכתוב בעיפרון. )1 )2 )3 )4 )5 1

שאלה [ 1 25 ] בדיקות,(T) מבחני קבלה TDD,(AT) ו- XP א. [ 2 ] )T( הסבירו כל אחת מן הבדיקות הבאות: Performance Testing Recovery Testing [ 4 ] )T( מהן בדיקות הנסיגה, מה מטרתן, ולמה הן עוזרות בעבודת התכנות? ב. ג. [ 6 ] (AT) השוו בין מבחני קבלה לבדיקות יחידה Unit Test לפי שלושה מדדים שונים מדד מבחני קבלה בדיקות יחידה [ 6 ] (AT) ציינו מהם שלושת הקריטריונים להערכת הזמן הדרוש לבודק לבצע כל אחת מהבדיקות הקבלה לסיפור משתמש. הסבירו כל אחד מהם במשפט אחד. ד. 2

ה. [ 3 ] (XP) תארו את שלושת כללי המשוב )Feedback( ב- XP. [ 4 ] (TDD) כחלק מתהליך ה- TDD מנהלים רשימת todo ובכל פעם יש לבחור מהרשימה את הבדיקה הבאה שאנו רוצים לבצע. ציינו איזה משפט מהמשפטים הבאים מגדיר את בחירת הבדיקה הבאה שנכתוב, נמקו את תשובתכם. 1. בדיקה שתקדם אותנו צעד קדימה בפיתוח הסיפור עליו אנו עובדים 2. בדיקה לפונקציונליות שאין לנו מושג כיצד לממש 3. שתי התשובות נכונות 4. אף תשובה אינה נכונה ו. 3

שאלה.2 [ 25 ] תבניות עיצוב [ 8 ] ברשת חברתית לכל משתמש יש פרופייל.(Profile) Profile מחזיק מידע על שם המשתמש, גיל, השכלה, אימייל וחברה. Profile יכול להיות,StudentProfile printprofile() לכולם יש שיטה.SeniorEmployeeProfile או FresherEmployeeProfile שמדפיסה את הפרופייל של המשתמש. מפתחי הרשת מעניינים להוסיף עוד אפשריות להדפסה של הפרופייל. למשל, לפורפייל של סטודנט מעוניינים להוסיף מידע על המכללה בה הוא לומד, לעובד טרי מידע על החברה בה הוא עובד. א. מפתחי המערכת בחרו להשתמש בתבנית העיצוב,Decorator על מנת לתת מענה לדרישה. הסבירו, מה הבעיה שעוסקת בה התבנית? הסבירו מדוע השימוש בתבנית מתאים לדרישה המתוארת לעיל. הדגימו את הפתרון בעזרת תרשים מחלקות. לכל מחלקה שציירתם, תנו שם משמעותי בהקשר של המערכת הנ"ל, כתבו בתוכה שדות חשובים ושיטות רלוונטיות לפתרון וציינו מעליה את שם התפקיד בו היא משמשת בתבנית. 4

ב. [ 5 ] השימוש בתבנית state לעתים יוצר מספר גדול של מופעים )אובייקטים(. הסבירו מדוע. באמצעות איזו תבנית ניתן להתגבר על חסרון זה? הסבירו כיצד. public abstract class HtmlTag { ג. [ 6 ] נתון הקוד הבא: public abstract String gettagname(); public abstract void setstarttag(string tag); public abstract void setendtag(string tag); public void settagbody(string tagbody){ throw new UnsupportedOperationException ("Current operation is not support for this object"); public void addchildtag(htmltag htmltag){ throw new UnsupportedOperationException ("Current operation is not support for this object"); public void removechildtag(htmltag htmltag){ throw new UnsupportedOperationException ("Current operation is not support for this object"); public List<HtmlTag>getChildren(){ throw new UnsupportedOperationException ("Current operation is not support for this object"); public abstract void generatehtml(); public class HtmlElement extends HtmlTag{ private String tagname; private String starttag; private String endtag; private String tagbody; public HtmlElement(String tagname){ this.tagname = tagname; this.tagbody = ""; this.starttag = ""; this.endtag = ""; 5

public String gettagname() { return tagname; public void setstarttag(string tag) { this.starttag = tag; public void setendtag(string tag) { this.endtag = tag; public void settagbody(string tagbody){ this.tagbody = tagbody; public void generatehtml() { System.out.println(startTag+""+tagBody+""+endTag); public class HtmlParentElement extends HtmlTag { private String tagname; private String starttag; private String endtag; private List<HtmlTag> childrentag; public HtmlParentElement(String tagname){ this.tagname = tagname; this.starttag = ""; this.endtag = ""; this.childrentag = new ArrayList<>(); public String gettagname() { return tagname; public void setstarttag(string tag) { this.starttag = tag; public void setendtag(string tag) { this.endtag = tag; public void addchildtag(htmltag htmltag){ childrentag.add(htmltag); public void removechildtag(htmltag htmltag){ childrentag.remove(htmltag); public List<HtmlTag>getChildren(){ return childrentag; public void generatehtml() { System.out.println(startTag); for(htmltag tag : childrentag) tag.generatehtml(); System.out.println(endTag); 6

public class Client { public static void main(string[] args) { HtmlTag parenttag = new HtmlParentElement("<html>"); parenttag.setstarttag("<html>"); parenttag.setendtag("</html>"); HtmlTag p1 = new HtmlParentElement("<body>"); p1.setstarttag("<body>"); p1.setendtag("</body>"); parenttag.addchildtag(p1); HtmlTag child1 = new HtmlElement("<p>"); child1.setstarttag("<p>"); child1.setendtag("</p>"); child1.settagbody("testing html tag library"); p1.addchildtag(child1); child1 = new HtmlElement("<p>"); child1.setstarttag("<p>"); child1.setendtag("</p>"); child1.settagbody("paragraph 2"); p1.addchildtag(child1); parenttag.generatehtml(); איזו תבנית מתאר הקוד? נמקו את תשובתכם: מה הפלט שיתקבל מריצת הקוד? 7

ד. [ 6 ] במערכת מבחני הקבלה שמימשתם במהלך הקורס השתמשנו בשלוש תבניות עיצוב. ציינו מה הן שלוש התבניות והסבירו איזה צורך במבחני הקבלה פותרת כל אחת מהן. ציירו את תרשים המחלקות של מערכת מבחני הקבלה ועבור כל מחלקה בתרשים ציינו את שמה בתוך הריבוע ומעליה את התפקיד/ים אותם היא ממלאה בתבנית. 8

שאלה [ 3 25 ] כללי שכתוב קוד (Refactoring) נתון ה- refactoring הבא: Replace Subclass with Fields You have subclasses that vary only in methods that return constant data. Change the methods to superclass fields and eliminate the subclasses. ] 8 [.1 איזה ריח רע עשוי להוביל אותנו להפעלת Refactoring זה? נמקו את תשובתכם. נסחו צעדים לביצוע ה- refactoring )מכניקה(. הקפידו על צעדים זהירים..1 הפעל את Replace Constructor with Factory Method לתתי המחלקות. 2. החלף את הקריאות לבנאי המחלקות בקריאות של Factory Method של מחלקת העל. _.3.4.5.6.7.8 _ 9

[ 5 ] הגדירו שתי ריחות רעים ולכל ריח רע ציינו Refactoring אחד שעוזר לבטל ריח רע זה..2.1 _.2 [ 6 ] בתבנית עיצוב composite נוטים לחשוף את המנשק של העלים ושל ה- composite במחלקת האב. מה החיסרון בכך? באיזה refactoring תשתמשו שהצעתם? ציינו את שם ה- refactoring ואת מטרתו. על מנת לוותר על אחידות המנשק ולהתגבר על החיסרון [ 6 ] נתון הקוד הבא:.3.4 void setvalue (String name, int value) { if (name.equals("height")) { _height = value; return; if (name.equals("width")) { _width = value; return; Assert.shouldNeverReachHere(); void setheight(int arg) { _height = arg; void setwidth (int arg) { _width = arg; המפתח ביצע refactoring על הקוד והתקבל הקוד הבא: 10

נסחו את ה- refactoring הנ"ל על פי המבנה הבא: שם: _ מטרה: צעדים לביצוע )מכניקה(:.1.2.3.4.5 11

Design by Contract שאלה [ 4 25 ] [ 10 ] במחלקת User ישנה שיטה file) submit(file שמאפשרת שליחה של קובץ עם טקסט לחברה המספקת שירותי עריכה לשונית. השיטה מחזירה את מספר ימי העסקים המוערך לסקירה של הטקסט, המחושב אוטומטית על פי מספר העמודים ומילות המפתח שהמשתמש מגדיר בתוך הקובץ. למחלקת File יש את השיטות getsize() ו-() getnumofpages. א. עליכם להשלים את החוזה של השיטה file).submit(file השיטה מטפלת רק בקבצים שהגודל שלהם קטן מ- 3M, ומספר העמודים של הטקסט בקובץ קטן מ- 21. השיטה מחזירה מספר בין 14 עד 21 )ימי עסקים(..1 Class User submit(file file): Integer require: ensure: 2. המחלקה Student מרחיבה את המחלקה,User כך שהיא מאפשרת טיפול מהיר לסטודנטים תוך 3 ימי עסקים אך מתנה מספר העמודים להיות קטן מ- 11. האם ניתן לכתוב חוזה שיאפשר את ההרחבה הנדרשת מבלי לשנות את החוזה של מחלקת האב? אם כן, רשמו חוזה לתת-המחלקה שיאפשר הרחבה כזאת. אם לא, הסבירו מדוע. _ 12

המחלקה Business מרחיבה את המחלקה,User כך שעכשיו לקוח עסקי יכול לשלוח.3 קבצים עם גודל עד 20M, ואין הגבלה על מספר העמודים. עבור לקוחות כאלה, הלקוח יקבל את הסריקה תוך 2 ימי עסקים אם מספר העמודים קטן מ- 18. אחרת הלקוח יקבל את הסקירה בלא פחות מ- 22 ימי עסקים. א. האם ניתן לכתוב חוזה שיאפשר את ההרחבה הנדרשת, כאשר אסור לשנות את החוזה במחלקת העל? אם כן, כתבו את החוזה, אחרת הסבירו מדוע. ב. האם ניתן לכתוב חוזה שיאפשר את ההרחבה הנדרשת כאשר מותר לשנות את החוזה במחלקת העל? אם כן, כתבו את החוזה, אחרת הסבירו מדוע. 13

ב. [ 15 ] כתיבת חוזה. השאלה מתמקדת בגרסת המבחן של מבוך חברת "נתע"ב", המתואר בסדרת הספרים "הרץ במבוך".(The Maze Runner) המבוך מוגדר על הלוח של 12X12 תאים כאשר לתא ארבעה כיוונים )ימינה, שמאלה, מעלה, מטה(. כל תא במבוך יכול להיות במצב פתוח, ואז ניתן לעבור דרכו, או במצב חסום. הלוח מחולק לתשעה אזורים, כשהאזור האמצעי, "הקרחת", מיועד למגורים, והשאר מכילים את חלקי המבוך. במבוך מטיילים ארבעה "מאמללים" יצורים מכאניים השואפים להרוג את השחקן. בתחילת המשחק "המאמללים" נמצאים בקואורדינטות )9,1(, )9,12(, )12,1(, )12,12(. בעמודה השמאלית ביותר של המבוך נמצא "הצוק", שם ניתן להרוג את "המאמללים" )ההסבר בהמשך(. שחקן יכול לטייל על הלוח על ידי מעבר דרך תאים לא סגורים הסמוכים זה לזה, כל מעבר כזה שמסתיים מחוץ לגבולות "הקרחת" נותן נקודה אחת. בתחילת המשחק השחקן נמצא בנקודה כלשהיא ב"קרחת". על השחקן להרוג את ה"מאמללים" בעזרת עמידה על סף ה"צוק". כשהוא עומד בתא (y,1), ויש "מאמלל" באותה שורה, בתא,(x,y) הוא יורה לכיוונה. המרחק ביניהם צריך להיות בנוי מתאים לא סגורים בלבד. למען הסר ספק, ההריגה מיועדת ל"מאמלל" ספציפי, ואין לדאוג בשום צורה לאחרים הנמצאים על קו הירי. הריגה כזאת מוסיפה עשר נקודות. לאחר שכל ה"מאמללים" נהרגו, על השחקן לקפוץ מהצוק בעצמו, באמצעות הגעה לנקודת )1,1(, נקודת סיום המבוך, אז הוא מוכרז כמנצח. לפיכך, התא הזה תמיד מוגדר כפתוח. ה"מאמלל" מחסל את השחקן, אם מגיע לאותו תא איתו. הוא לא מסוגל להימצא באזור "הקרחת". המשחק נגמר בהפסד כשהשחקן נאכל על ידי ה"מאמלל". y x 1 2 3 4 5 6 7 8 9 10 11 12 1 X X 2 X X X X X X X 3 X 4 X X X X X X X 5 X X X X 6 X X X X 7 X X X 8 X X X X X 9 X X X X X X 10 X X X X 11 X 12 X X X 14

1. initialize(): Maze Purpose: creates a new maze according to the game rules. על המחלקה Maze לספק את השירותים (features) הבאים: 2. move(direction dir):int Purpose: if possible, moves the player one cell to direction dir and returns the new points. 3. kill(int x):int Purpose: kills the griever in the column x and returns the new points. 4. getcell(int x, int y):cell Purpose: returns the cell in coordinates (x, y). 5. numofgrievers():int Purpose: returns the number of current grievers. 6. getx():int Purpose: returns the x coordinate of the player. 7. gety():int Purpose: returns the y coordinate of the player. 8. isgameover():boolean Purpose: returns true if the game is over. 9. iswin():boolean Purpose: returns true if the player won. False, otherwise 10. state():state Purpose: returns the state of the cell. על המחלקה Cell לספק את השירותים (features) הבאים: 11. hasgriever(int x, int y):boolean Purpose: returns true if there is a griever in the cell. פיתוח חוזה עבור המחלקה :Maze א. ] 12 [ עבור השיטות,1,2,3,6,8 9 של המחלקה Maze פתחו חוזה לפי הכללים לפיתוח חוזה שנלמדו בכיתה. ניתן להוסיף פעולות נחוצות חדשות אולם יש להצדיק כל הוספה ולכתוב חוזה עבורה אם יש צורך. אפשר כמובן להשתמש בשאר השאילתות שלא כתבתם עבורן חוזה. הערה: בכתיבה של החוזה, עבור פונקציה מסוימת, כאשר יש יותר ממקרה אחד, מותר לכם לכתוב פירוט עבור מקרה מייצג ולכתוב הערה ששאר המקרים דומים עם שינויים קטנים. הערה: ניתן להניח קיום שתי מחלקות :enumeration האחת היא,Direction עם ערכים.home, open, closed עם ערכים,State והשנייה היא,Left, Right, Up, Down 15

16

ב. ] 3 [ במנשק )interface( שהתקבל הבחינו בין סוגי השאילתות והפעולות. יש להציג ארבע קבוצות: פעולות רגילות ו- initialization, ושני סוגי שאילתות. בהצלחה! 17