עבור לתוכן

Little Smalltalk , צריך לממש CLASS ...שאלה פשוטה אבל לא מכיר LST

Featured Replies

פורסם

יש לי שאלה בנושא LST , צריך לממש מחלקה שתתמוך בפעולות הבאות

תרגיל:

מוגדר באופן הבא: (nested counter) מונה מקונן

כל מונה, פרט לחיצוני ביותר, הוא בן של מונה אחר.

ערכו ההתחלתי של מונה החיצוני ביותר הינו אחד. ערכו ההתחלתי של כל מונה אחר

הינו אפס.

בכל פעם שמבקשים את ערכו של המונה, הערך הנוכחי גודל באחד ומוחזר.

אם ערך של מונה משתנה, ערכי המונה של כל בניו (הישירים והעקיפים) מתאפסים

לערך ההתחלתי.

מונה זה משמש, למשל, לצורך מנייה של פרקים, תתי פרקים, טבלאות וכו' במסמכים.

מחלקה שמייצגת מונה. little smalltalk בתרגיל זה עליכם לממש ב

המחלקה תגיב להודעות הבאות:

parent: aParent

השמה של מונה אב למונה הנוכחי.

value

מגדילה את ערכו הנוכחי של המונה באחד ומחזירה ערך זה.

peep

מחזירה את ערכו הנוכחי של המונה מבלי להגדיל ערך זה באחד.

printString

מחזירה את ערכו המקונן של המונה (ערכי כל אבותיו, החל מהקדום ביותר ועד למונה אליו

נשלחה ההודעה מופרדים ע"י נקודה)

printSons

מדפיסה את ערכי הבנים של המונה הנוכחי לפי סדר הכנסתם (משמאל לימין) מופרדים ע"י

פסיקים.

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

הבאים:

parent

לאב הישיר של המונה reference

lastParentGeneration

על האובייקט הנוכחי. הדור (גירסא) של האב הישיר בקריאה הקודמת ל peep או value

generation

הדור של המונה הנוכחי. מתעדכן בכל שינוי של המונה.

על מנת לתמוך בהדפסת בנים הגדירו את משתנה המחלקה הבא:

sons

אוסף בנים של המונה.

בדקו אם הדור של מונה האב השתנה מאז הקריאה האחרונה ואם ,peep או value בכל קריאה ל

כן אפסו את המונה.

למונה יכולים להיות כמה בנים.

המערכת אמורה לעבוד נכון לכל קלט.

.printSons רשימת הבנים תשמש רק לצורך מתודה

של ערכי המונה. (overflow) אין צורך לטפל בגלישה

אפשר להניח שאין מעגלים בהיררכית מונים.

זה מה שמימשנו עד כו ...

[attachment deleted by admin]

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים