שאלת מבחן בתכנות מונחה עצמים - אוניברסיטת בר-אילן 2021 - איטרטורים
(SeriesDP) שאלה זו מתייחסת לקוד בנספח [
1. מפעל מופשט (
2. קשטן (
3. צופה (
4.
Series]. לאיזו תבנית עיצוב מבין הבאות הקוד מתאים ביותר?1. מפעל מופשט (
Abstract Factory)2. קשטן (
Decorator)3. צופה (
Observer)4.
Iteratorהעתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד ב2021סמסטר ב
★★★★★
איטרטוריםמעקב אחר קוד
חישבו מהי הפעולה המרכזית שמחלקה בשם
Series צפויה להציע, ואיזו תבנית עיצוב מתמקדת במימוש פעולה זו עבור אוספים.התשובה הנכונה היא 4,
תבנית העיצוב Iterator מספקת דרך לגשת לאיברים של אובייקט המכיל אוסף (aggregate object) באופן סדרתי, מבלי לחשוף את הייצוג הפנימי של האוסף.
מחלקה בשם
שאר האפשרויות פחות מתאימות:
1. מפעל מופשט (Abstract Factory): עוסקת ביצירת משפחות של אובייקטים קשורים, ואינה קשורה למעבר על איברי אוסף.
2. קשטן (Decorator): מאפשרת להוסיף פונקציונליות לאובייקט באופן דינמי. למרות שניתן תיאורטית לקשט
3. צופה (Observer): עוסקת בהפצת עדכונים מאובייקט אחד (subject) למספר אובייקטים אחרים (observers) כאשר מצבו משתנה. אין לכך קשר למעבר סדרתי על איברים.
לכן, תבנית Iterator היא המתאימה ביותר לתיאור הקוד.
Iterator.תבנית העיצוב Iterator מספקת דרך לגשת לאיברים של אובייקט המכיל אוסף (aggregate object) באופן סדרתי, מבלי לחשוף את הייצוג הפנימי של האוסף.
מחלקה בשם
Series מייצגת, מעצם שמה, סדרה של איברים. הפעולה הבסיסית והנפוצה ביותר על סדרה היא לעבור על איבריה בזה אחר זה. תבנית ה-Iterator נועדה בדיוק למטרה זו. היא מפרידה את הלוגיקה של המעבר על האיברים (האיטרטור עצמו) מהאוסף (ה-Series), ומאפשרת למשתמשים במחלקה לעבור על האיברים בצורה אחידה ומופשטת, ללא תלות במימוש הפנימי של הסדרה (למשל, האם היא ממומשת כמערך, רשימה מקושרת, או נוצרת באופן דינמי).שאר האפשרויות פחות מתאימות:
1. מפעל מופשט (Abstract Factory): עוסקת ביצירת משפחות של אובייקטים קשורים, ואינה קשורה למעבר על איברי אוסף.
2. קשטן (Decorator): מאפשרת להוסיף פונקציונליות לאובייקט באופן דינמי. למרות שניתן תיאורטית לקשט
Series, זו אינה התבנית המרכזית המגדירה את מהותה.3. צופה (Observer): עוסקת בהפצת עדכונים מאובייקט אחד (subject) למספר אובייקטים אחרים (observers) כאשר מצבו משתנה. אין לכך קשר למעבר סדרתי על איברים.
לכן, תבנית Iterator היא המתאימה ביותר לתיאור הקוד.