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

קריאה לאחור III

זהו השלישי מבין שלושה שיעורים רצופים בנושא קריאות לאחור ב-Java. שלושת השיעורים נקראים קריאות לאחור I, קריאות לאחור II, וקריאות לאחור III.

סטודנטים בקורס ביניים של תכנית Java  של פרופסור Baldwin ב-ACC אחראים להכרת והבנת כל החומר בשיעור זה.

 

- מבוא

- תוכנית דוגמא   

        - חלקי קוד מעניינים

        - סיכום

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

 


מבוא

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

 

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

 

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

 

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

 

בשיעור זה נראה איך ליצור ולהשתמש במחלקות מתאמות מסוג זה.

 

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

 

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

 

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

תוכנית דוגמא

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

 

הגרסה הנוכחית של התוכנית מבצעת שתי הרחבות בלתי קשורות בתוכנית בשם קריאה לאחור 03.

 

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

 

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

 

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

 

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

 

שים לב שניתן להצביע לאובייקטים של מחלקה אשר מרחיבה את המחלקה המתאמת על ידי סוג הממשק.

 

כך, סוג ממשק יורש תכונה אשר נובעת מהרחבת מחלקה אשר מיישמת את הממשק.

 

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

 

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

 

אובייקטים מעורבים משלושת המחלקות מוחזקים ברשימה משותפת ומיודעים בזמן הקריאה לאחור.

 

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

 

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

 

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

 

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

 

התוכנית נבדקה תוך שימוש ב- JDK 1.1.3 תחת Win95.

 

 06-12-03 / 17:53  עודכן ,  16-10-03 / 16:50  נוצר ע"י רונית רייכמן  בתאריך 
 רישום תוכנית - הקודםהבא - רישום תוכנית 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 6