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

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

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

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

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

Microsoft PowerPoint - rec3.ppt

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

Slide 1

Slide 1

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

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

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

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

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

PowerPoint Presentation

Microsoft PowerPoint - lec10.ppt

PowerPoint Presentation

PowerPoint Presentation

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

תרגול 1

תרגול 1

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

Microsoft PowerPoint - rec8.ppt

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

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

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

PowerPoint Presentation

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

Slide 1

Slide 1

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

PowerPoint Presentation

PowerPoint Presentation

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

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

1

PowerPoint Presentation

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

PowerPoint Presentation

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

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

Slide 1

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

Microsoft Word B

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

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

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

1

PowerPoint Presentation

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

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

Microsoft Word - דוגמאות ב

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

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

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

תרגול 1

Microsoft PowerPoint - 10_threads.ppt

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

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

Microsoft PowerPoint - lec2.ppt

תוכנה 1 אביב תשע"ח תרגיל מספר 8 אוספים גנריים ו- framework collection הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת ה

PowerPoint Presentation

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

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

פייתון

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

Slide 1

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

תרגול 1

תרגיל 1 בקורס תוכנה 1

Microsoft PowerPoint - lec9.ppt

1 תוכנה 1 תרגיל מספר 7 מנשקים Interfaces הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה- moodle ב

Microsoft Word - c_SimA_MoedB2005.doc

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

Microsoft PowerPoint - lec9.ppt

Slide 1

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

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

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

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

Microsoft PowerPoint - rec1.ppt

שעור 6

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

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

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

Slide 1

מס' ת"ז מס' מחברת מבחן בקורס מבוא מורחב למדעי המחשב CS1001.py ביה"ס למדעי המחשב, אונ' תל אביב סמסטר א' , מועד ב, 23/3/2018 מרצים: דניאל דויטש,

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

מצגת של PowerPoint

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

Microsoft Word - Ass1Bgu2019b_java docx

תוכן הגדרת שאלת רב-ברירה ]אמריקאית[...2 הגדרת שאלת נכון\לא נכון...8 שאלות אמריקאיות 1

234114

Tutorial 11

Microsoft Word - pitaron222Java_2007.doc

תמליל:

לנץ קרן מרצה: תכנותמונחהעצמים) 236703 ( א' מועד 2012, חורף סמסטר סמסטר סוף מבחן קרבי אלעד רביב, אריאל מושקוביץ, אייל מתרגלים: הנחיות:.1.2.3.4.5.6.7 השאלות. כל על לענות עליכם משקל. שוות שאלות 5 במבחן יוםשני 02 פברואר 0200 מהנקודות. 20% ותקבלו יודע/ת" "לא כתבו התשובה, את יודעים אינכם אם שאלה, בכל בכלשאלהבהנדרשלצייןאתפלטהקוד,ייתכןכיהקודלאמתקמפל.במקרהזהיש לצייןאתשגיאתהקומפילציהאוזמןהריצהולהסבירמדועהיאמתרחשת. על הניתן בציון תפגע נכון( הוא אם )אף בעליל רלוונטי לא מידע הוספת לעניין. ענו שלילי. ניקוד למתן אף קיצוניים ובמקרים התשובה, ברור. בכתב תשובתכם כתבו חדש. בעמוד תשובה כל התחילו עזר. חומר בכל להשתמש אין כולם. את שקיבלתם כעת וודאו (, זה עמוד כולל ( עמודים 6 במבחן 8..9 שעות. שלוש הבחינה משך בהצלחה!! 2112 חורף 1 236703 עצמים מונחה תכנות

שאלה 1 ++C, מבנה האובייקט נתונות המחלקות הבאות ב ++C: struct A { virtual void f(int i) { cout << i; A() { f(0); A(int i) { f(i); ; struct B1 : virtual A { B1(int i) : A(i) { f(i); virtual void f(int i) { cout << i+10; ; struct B2 : A { B2(int i) : A(i) { f(i); virtual void f(int i) { cout << i+20; ; struct C : B1, B2 { C() : B2(4),B1(5){ ; מה ידפיס הקוד הבא? הסבירו. C* c = new C(); א. ב. כעת הוסיפו למחלקה C את המתודה הבאה: virtual void f(int i) { cout << i+30; ((B1*)c)->f(6); ((B2*)c)->f(6); ג. האם תשובתכם לסעיף א' תשתנה? הסבירו. מה ידפיס הקוד הבא )בהמשך לקוד מהסעיפים הקודמים(? הסבירו. f במחלקה C כך: ד. כעת שינו את ההגדרה של virtual void f() { cout << 30; האם תשובתכם לסעיף ג' תשתנה? הסבירו. 2

שאלה 2 Variance ב-#C תזכורת: ב- 4.0 #C יש תמיכה ב covariance ו-contravariance עבור טיפוסים גנריים ב-interface ו-delegate. כך ש: interface I1<out T> { הוא קו-וריאנטי ביחס ל-T, ו- interface I2<in T> { הוא קונטרה-וריאנטי ביחס ל-T. א. אייל כתב את הקוד הבא: שגרם לשגיאת הקומפילציה: class A<out T>{ Invalid variance modifier. Only interface and delegate type parameters can be specified as variant. מהי הסיבה לכך שהשפה אינה תומכת ב-variance של טיפוסים גנריים במחלקות? בכל הסעיפים הבאים, עליכם להמיר קוד שנכתב לפני גרסא 4.0 לתמוך ב-variance. לכל טיפוס פרמטרי, ציינו האם ניתן לסמנו כ-out in, או אף אחת מהאפשרויות. הניחו קיום המחלקה הבאה: class Record<T>{ public readonly T data; Record(T t){data = t; interface I1<T>{T Data{get; ב. interface I2<T>{Record<T> Data{get; interface I3<T>{ void SetData(T data); delegate T F<T,U>(U u); delegate T F<T>(T t); ג. ד. ה. ו. 3

שאלה 3 קישור של מתודות ב-Java נתונות המחלקות הבאות ב :Java א. ב. public class A { public A(){f(this); public void f(a a) {System.out.println("A.f(A)"); public class B extends A{ public B(){f(this); public class C extends B { public void f(a a) {System.out.println("C.f(A)"); public void f(b b) {System.out.println("C.f(B)"); public void f(c c) {System.out.println("C.f(C)"); מה ידפיס הקוד הבא? הסבירו. כעת הוסיפו למחלקה B את המתודה הבאה: A a = new C(); public void f(b b) {System.out.println("B.f(B)"); האם תשובתכם לסעיף א' תשתנה? הסבירו. ג. כעת שינו את המתודה מהסעיף הקודם מ תשתנה? הסבירו. public ל.private האם תשובתכם לסעיף ב' B b = new B(); ד. ה. בהמשך לקוד מהסעיפים הקודמים, מה ידפיס הקוד הבא? הסבירו. בהמשך לקוד מהסעיפים הקודמים, מה ידפיס הקוד הבא? הסבירו. a.f(b); ו. כעת הוסיפו למחלקה B את המתודה הבאה: private void f(a a) {System.out.println("B.f(A)"); האם תשובתכם לסעיף ה' תשתנה? הסבירו. 4

שאלה 4 Arrays Java Generics and נתון הקוד הבא: public interface ExtendedIterator<T> extends Iterator<T>{ void set(t data); public interface ExtendedIterable<T> extends Iterable<T>{ public ExtendedIterator<T> iterator(); public class IterableArray<T> implements ExtendedIterable<T>{ T[] array; IterableArray(T[] a){ this.array = a; //* @Override public ExtendedIterator<T> iterator() { return new ExtendedIterator<T>() { int index = -1; @Override public boolean hasnext() { return index + 1 < array.length; @Override public T next() { return array[++index]; @Override public void remove() { throw new UnsupportedOperationException(); @Override public void set(t data) { array[index] = data; ; א. ב. נתון הקוד הבא: IterableArray i = new IterableArray<String>(new String[5]); האם קוד זה עובר קומפילציה? אם כן, מהי התכונה שמאפשרת זאת? אם לא, הסבר מדוע. השלימו את השורות החסרות בקטע הקוד הבא כך שהקוד יעבור קומפילציה אך יגרום לשגיאת זמן ריצה. הניחו קיום מחלקות A ו-B כך ש B. extends A זכרו לכתוב את תשובתכם במחברת הבחינה. IterableArray<A> ia1 = new ; //1 ExtendedIterator<A> ei = ia1.iterator(); A a = ei.next(); ei.set(new ); //2 סטודנטים בקורס תכנות מונחה עצבים הציעו מספר דרכים לפתרון חלק מהבעיות בקוד. בכל סעיף קבע/י האם ההצעה תצליח לפתור את הבעיה שהתכוונה לפתור. אם כן, איזו בעיה, אילו שינויים נוספים נדרשים בקוד. אם לא, הסבר מדוע ההצעה נכשלה. ג. אלעד מציע להחליף את הקוד בבנאי של IterableArray )מסומן ב-* ב( קוד הבא: this.array = new T[a.length]; for(int i = 0; i < a.length; ++i){ this.array[i] = a[i]; ד. אריאל מציע להחליף את הקוד בבנאי של IterableArray )מסומן ב-*( בקוד הבא: this.array = new ArrayList<T>(Arrays.asList(a)); ושינוי הטיפוס של השדה array ב-IterableArray ל-.ArrayList<T> 5

שאלה 5 Squeak copy Object במחלקת המוגדרת copy מתודת של הקוד להלן ^self shallowcopy postcopy הבאה: המחלקה את הגדירה קרן א. Object subclass: #MyClass instancevariablenames: 'x' classvariablenames: '' pooldictionaries: '' category: 'Exam' initialize x := OrderedCollection new. addtocollection: anobject x add: anobject. ב..MyClass מטיפוס משתנה להעתיק ננסה כאשר בעיה להיווצר יכולה זה, קוד בהינתן הבעיה. את המדגים קצר קוד כתבו תיפתר. שהבעיה כך MyClass במחלקת postcopy המתודה את ממשו hasthesameinstvariables ^self allinstvarnames hasequalelements: self class allinstvarnames הסעיפיםהבאיםאינםקשוריםלסעיפיםהקודמים. הבאה: המתודה את Object למחלקת מוסיף אריאל הבא: באופן Behavior במחלקה מוגדרת allinstvarnames המתודה allinstvarnames "Answer an Array of the names of the receiver's instance variables. The Array ordering is the order in which the variables are stored and accessed by the interpreter". vars superclass == nil iftrue: [vars := self instvarnames copy] "Guarantee a copy is answered". iffalse: [vars := superclass allinstvarnames, self instvarnames]. ^vars.instance תזכורת:למחלקותObjectו-ProtoObjectלאקיימיםvariables ג. ד. ה. תשובתכם את הסבירו הבאות? הקריאות יחזירו מה 3 hasthesameinstvariables Class hasthesameinstvariables Object hasthesameinstvariables 2112 חורף 6 236703 עצמים מונחה תכנות

רשמי: פתרון שאלה 0 א. ע"י הוירטואלי האב יאותחל כל שקודם מכתיב הבנייה אלגוריתם 415424. ידפיס הקוד המחלקה, בחתימת הסדר לפי מכן לאחר בבנאי(. סטטי קישור )בגלל 0 ולכן הדיפולטי הבנאי. 24 ידפיס ואז 4, שידפיס A את יאתחל B2 ואחריו 15, ידפיס B1 של בארגומנטים או הבנייה בסדר טעות כללו או בבנאי סטטי קישור ציינו שלא תשובות חלקי. ניקוד קיבלו הבנאים ב. ג. ד. של הבנאי לגוף מגיעים כאשר רק מתבצע בטבלה (השינוי בבנאי סטטי קישור בגלל שינוי, אין.)C חלקי. ניקוד קיבלו מספק הסבר כללו שלא תשובות הטבלאות. בשתי קודמותיה את דורסת C::f(int) המתודה 6666. ידפיס הקוד חלקי. ניקוד קיבלו טבלאות שתי שקיימות צוין לא שבהסבר או הסבר כללו שלא תשובות בהסתרה. מדובר שעתה כיוון 1626, ידפיס הקוד חלקי. ניקוד קיבלו הסתרה שקיימת במפורש ציינו שלא תשובות שאלה 0 א. ב. ג. ד. ה. ו. בתוך ביותר הבסיסיים המבנים שאחד מאחר מחלקות עבור variance מאפשרת אינה השפה שימושי. אינו עבורם variance ולכן וכתיבה, לקריאה ניתנים ושדות שדה, הוא מחלקה ממתודה חזרה כטיפוס משמש T ש- מכיוון,out T זה בטיפוס אך ממתודה, חזרה טיפוס של כפרמטר משמש אמנם T מהאפשרויות, אחת אף פרמטר. כטיפוס וגם readonly שדה כטיפוס גם מופיע פרמטר. כטיפוס משמש T ש מכיוון,in פרמטר(. )טיפוס in- כU חזרה(, )טיפוס כ-out מסומן להיות יכול T פרמטר(. כטיפוס וגם ממתודה חזרה כטיפוס משמש )T מהאפשרויות אחת אף.B שאלה 3 א. ל מוכרת אינה C.f(B) ש ומכיוון בבנאי, דינמי קישור בגלל C.f(A) C.f(A) חלקי. ניקוד קיבלו בבנאי דינמי קישור שיש בהסבר ציינו שלא תשובות.C.f(B) ע"י נדרסת B.f(B) ש מכיוון C.f(A) C.f(B) חלקי. ניקוד קיבלו מספק הסבר כללו שלא תשובות ב. 2112 חורף 7 236703 עצמים מונחה תכנות

סטטית. מקושרת B.f(B) ש מכיוון C.f(A) B.f(B) חלקי. ניקוד קיבלו JAVA ב סטטית מקושרות פרטיות שמתודות בהסבר ציינו שלא תשובות ג. ד. C. ע"י דריסה אין רגיל, באופן A.f(A) B.f(B) חלקי. ניקוד קיבלו מספק הסבר כללו שלא תשובות )באופן ריצה בזמן והמימוש סטטי( )באופן הקומפילציה בזמן נקבעת החתימה כי C.f(A) דינמי(. חלקי. ניקוד קיבלו והמימוש החתימה בחירת אופן לגבי פירטו שלא תשובות ה. ו. JAVA ב גישה הרשאות לצמצם ניתן לא תאימות, חוסר בגלל קומפילציה שגיאת זו אך תאימות, חוסר שיש שציינו תשובות חלקי. ניקוד קיבלו זאת ציינו שלא תשובות כן. גם חלקי ניקוד קיבלו לשגיאה ולא להסתרה מביאה שאלה 4 א. ב..type erasure היא זאת הצבה שמאפשרת התכונה קומפילציה, עובר הקוד הנכונה: ההשלמה IterableArray<A>(new B[5]) A() ב-java. array covariance עם בעיה היא גורם הזה שהקוד הבעיה נפוצות: שגיאות אלו שגיאות אומנם הזה מהסוג דברים מיניי כל או 4 בגודל מערך,null של העברה בכדי הקורס את ללמוד צריך לא )2( "מעניינות" לא הן )1( אבל ריצה זמן שגיאות הן עליהן. להעלות מהסוג: השלמה IterableArray<A>(new A[5]) B() ריצה. זמן לשגיאת גורמת לא כמובן מהסוג: השלמה IterableArray<B>(new B[5]) A() covariance )אין מתקמפלת לא שהיא מפני ריצה זמן לשגיאת גורמת לא כמובן.)templates של בטיפוסים ג. ד. הבעייה את פותרת אינה היא ב'. בסעיף שהוצגה הבעיה היא לפתור מנסה שאלעד הבעיה בג'אווה. new T[a.length] לבצע שאסור מפני הבעיה, את פותרת היא ב'. בסעיף שהוצגה הבעיה היא לפתור מנסה שאריאל הבעיה אליו להתייחסות מערך בתור ל-array התייחסות כל שינוי הם בקוד הנדרשים השינויים.ArrayList בתור 2112 חורף 8 236703 עצמים מונחה תכנות

שגיאות נפוצות בסעיפים ג' ו-ד': אין פה בעיית אבטחה או שיתוף רפרנסים מפני ש-ExtendedIterator מאפשר שינוי של מה שעושים עליו איטרציה ובפרט שינוי של המערך ולכן השיתוף הזה הוא בסדר. חריגה מגבולות המערך ייתן שגיאת זמן ריצה, אבל זאת שגיאה ברמה של מת"ם אשר לא מראה שלמדתם משהו במהלך הקורס. שאלה 5 השאלה מורכבת משני חלקים: א. העתקתאובייקטים)סעיפיםא'וב'( כפי שנלמד בכיתה למתודה postcopy ישנה התנהגות דיפולטית "ריקה" ועליה להידרס. אם המתודה לא נדרסת כאשר ישנו אובייקט כשדה של המחלקה הוא לא יועתק אלא רק יועתק מצביע אליו. קוד אשר מדגים את הבעייתיות: a := MyClass new. b := a copy. b addtocollection: 5. כעת ישנם שני אובייקטים מטיפוס MyClass ובאוסף של שניהם נשמר המספר 5. זוהי בעיה מכיוון שהתכוונו להוסיף את 5 לאוסף של b בלבד. מימוש של המתודה postcopy אשר פותר את הבעיה: postcopy x := x copy )1 )2 קוד זה מעתיק את x באמצעות מתודת copy אשר כבר ממומשת במחלקת.OrderedCollection טעויות נפוצות: כמעט כל הסטודנטים הבינו את הבעיה וכתבו דוגמא מתאימה. הרבה סטודנטים לא השתמשו במתודה copy של מחלקת OrderedCollection ומימשו את העתקת האוסף בעצם. הרבה סטודנטים לא מימשו השמה של ההעתק למשתנה x. שתי הטעויות הללו קיבלו ניקוד חלקי. ב. hasthesameinstvariables)סעיפיםג',ד'וה'( על מנת לפתור את חלק זה הייתם צריכים להכיר את מודל האובייקט של Squeak נלמד בכיתה ולהבין )לפחות( את הנקודות הבאות: אשר 1( מחלקת Object יורשת ממחלקת ProtoObject אשר יורשת מ-.nil 2( לכל מחלקה ב- Squeak ישנה מטה-מחלקה אשר עוקבת אחר עץ הירושה של המחלקה המקורית. 6( class ProtoObject יורשת ממחלקת Class אשר יורשת ממחלקות.Object ומ- ClassDescription, Behavior ClassDescription class, Behavior class, יורשת ממחלקות Class class )4.Class ולבסוף שוב ממחלקת Object class, ProtoObject class 9

למחלקות Class, ClassDescription ו- Behavior ישנם,instance variables למשל 'methoddict' אשר הוצג בכיתה. באם לא זכרתם את 'methoddict' יכולתם להניח )כמו שמספר סטודנטים עשו( כי על מנת לממש את מודל האובייקט של Squeak יש לשמות מצב, ומחלקות אלו אשר נמצאות בליבת המימוש של המודל ישמרו שדות על מנת לשמור את המצב. )5 המתודה 'hasthesameinstvariables' מחזירה ערך בוליאני אשר מעיד האם למחלקה ולמטה מחלקה שלה יש את אותם.instance variables המתודה 'allinstvarnames' מחזירה עבור מחלקה מסוימת מערך עם שמות הvariables instance אשר קיימים במחלקה או באבות הקדמונים שלה. 3 hasthesameinstvariables זורקת שגיאת doesnotunderstand מכיוון ש- 6 הינו אובייקט, לא מחלקה ולכן אינו יכול להבין למשל את הקריאה.'instVarNames' Object hasthesameinstvariables משווה בין ה- instance variables של מחלקת Object ואבותיה לאלה של מחלקת Object class ואבותיה, כמו שהוזכר בשאלה למחלקות Object ו- ProtoObject אין Object,instance variables.false ולכן הערך שיוחזר הינו,instance variables ולכן יש לו Class יורש מ- class Class hasthesameinstvariables מכיוון שמחלקת Class class יורשת לבסוף ממחלקת Class עלינו לבדוק האם בירושה עד מחלקת Class class, ClassDescription הירושה כוללת את מחלקות,instance variables קיימים Class class, Behavior class, Object class ואת מחלקת. ProtoObject class לכל המחלקות הללו לא קיימים instance variables כך שהמתודה hasthesameinstvariables מחזירה את הערך.true טעויות נפוצות: )1 )2 סטודנטים רבים לא הבינו שבסעיף c נזרק error וענו כי התשובה הינה ערך בוליאני. אם צורף הסבר מתאים, התקבל ניקוד חלקי. סטודנטים רבים לא זכרו את עץ הירושה ובפרט את העובדה ש- Behavior class יורשת ממחלקת.Object class תשובה נכונה ללא הסבר מתאים או הסבר מתאים עם תשובה לא נכונה זיכו בניקוד חלקי. 11