» נושאי לימוד
» נושאי לימוד
יום שני 29 באפריל 2024
תוכנית בדיקה
דף ראשי  מתקדמים  רשימות מקושרות, מחסניות ותורים  תוכנית דוגמא  תוכנית בדיקה גרסה להדפסה

  תוכנית בדיקה 

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

 

רישום התוכנית

 

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

התוכנית המלאה

 

Is A  לעומת Has A

במקרה ולא שמת לב, לתוכנה זו פגם מבנה רציני. בפרט, אין דבר שימנע מקוד משתמש לאתחל אובייקט ממחלקות  MyQueue או MyStack, ואז להשתמש באובייקט הזה על מנת לקרוא לפונקציות על מחלקת RawList אשר מפרות את חוקי הגישה של  LIFO ו- FIFO עבור מחסנית או תור. זאת מכיוון ש- MyStack ו- MyQueue מרחיבות RawList אשר הופך את כל פונקציות מחלקת-העל לברות גישה דרך אובייקט של תת המחלקה.

 

 ל- C++ יש דרך להתמודד עם הבעיה אשר מערבת ספציפיקציה מדרגה שנייה של שליטת הגישה בממשק ירושה. אבל, יכולת זו אינה קיימת ב-Java.

 

יש דרך קלה ודרך קשה לתקן בעיה זו ב-Java.הדרך הקלה מבוססת על הרכב (composition) לעומת ירושה. כלומר, יצירת אובייקט ממחלקת RawList כמשתנה של אובייקט פרטי של מחלקות MyQueue ו-  MyStackבמקום הרחבת RawList אל תוך שתי מחלקות אלה. זה משנה את היחסים בין יחסי "is a"(הינו) ליחסי "has a"(מכיל) ומהווה דוגמא טובה להבדלים התפקודיים בין שני יחסים שונים.

 

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

 

הדרך הקשה מניחה כי מסיבה כלשהי, עליך להמשיך להרחיב את RawList אל תוך MyQueue ו- MyStack (לשמר את יחסי ה- "is a"). במקרה זה, עליך לבטל את פונקציות מחלקת ה- RawList בתת-מחלקות ולגרום לחריגה להיזרק בכל פעם שיש גישה לגירסאות המבוטלות של פונקציות אלה. אז, על מנת להפוך פונקציות אלה לזמינות עבור הקוד בתת-מחלקות, עלייך לקרוא לפונקציות אלה, תוך שימוש במילת המפתח העל לפני הקריאה לפונקציה. הדבר יגרום לגרסת מחלקת העל, בניגוד לגרסה המבוטלת שיש לקרוא לה. זה מערב שינויים רבים יותר לקוד התוכנה, וגם כן יושאר כתרגיל לסטודנט.

 

 01-12-03 / 19:53  עודכן ,  13-10-03 / 18:42  נוצר ע"י רונית רייכמן  בתאריך 
 קטעי קוד מעניינים - המשך - הקודםהבא - התוכנית המלאה 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 8