ניסוי בהוראת תיכנות מונחה עצמים כפרדיגמת תיכנות ראשונה

נוע רגוניס

המחלקה להוראת המדעים, מכון ויצמן למדע

noaampon@beitberl.ac.il

 

הקדמה

בימים אלו תחומי התיכנות והנדסת התוכנה במדעי המחשב נשענים על יסודות של עצמים (objects). גם בתחום הוראת מדעי המחשב רווח בשנים האחרונות המעבר לתיכנון ניתוח ומימוש בסביבה מונחית עצמים. יחד עם הפרדיגמה מונחית העצמים פותחו שפות תיכנות המתאימות לתפיסה זו, המובילות ביניהן: C++ ו- Java. התכונות הבולטות של Java הפכו אותה להיות פופולרית בעולם התיכנות וגם בעולם העסקים והתעשיה והביאו מיכללות ואוניברסיטאות לשלב אותה כשפת ההוראה בקורסי המבוא למדעי המחשב (1CS). בחינת ה- AP לתלמידי תיכון בארה"ב עוברת להיות בתיכנות מונחה עצמים ב Java. בהרצאה זו נראה כיצד ניתן להתאים את הפרדיגמה מונחית העצמים תוך מימושה בשפת התיכנות Java להוראת יסודות מדעי המחשב לתלמידי תיכון. נציג את הקווים המנחים שיש לאמץ ואת העזרים הדידקטיים בהם ניתן להשתמש כדי להשיג הבנה וענין אצל תלמידינו.

סקירת ספרות

בשנים האחרונות נערכו מחקרים רבים במטרה לבדוק את השימוש בפרדיגמה מונחית עצמים ויישומה ב Java, בהוראת מדעי המחשב למתחילים. ניתן לחלק את נושאי המחקר שהועלו לדיון למספר נושאים עיקריים: (1) למה פרדיגמה מונחית עצמים בקורס מבוא למדעי המחשב?, (2) דגשים עיקריים בהוראת פרדיגמה מונחית עצמים, (3) נקודות מוצא, שיטות ועזרים דידקטיים בהוראת פרדיגמה מונחית עצמים, (4) כישורי החשיבה ובעיות בתפיסת מושגים. (לצורך העמקה ניתן לעיין במקורות המפורטים בסוף). המסקנות העיקריות העולות הן שלא ניתן לערוך מעבר פשוט מתיכנות פרוצדורלי הרווח בקורסי מבוא לתיכנות מונחה עצמים. השינוי אינו שינוי של שפת תיכנות אלא של שיטות ניתוח וחשיבה לכן יש לגבש מטרות ודגשים אחרים להוראה ולהשתמש בשיטות הוראה מתאימות.

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

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

קווים מנחים להוראת תיכנות מונחה עצמים למתחילים

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

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

עזרים דידקטיים בהוראת תיכנות מונחה עצמים

בהתאם למחקר ההוראה הבוחן את מכלול המושגים שיש לכלול בקורס יסודות מדעי המחשב בפרדיגמה מונחיית עצמים, את סדר הוראתם ואת דרכי הוראתם אנו משלבים שימוש במספר עזרים. נדגים את העזרים השונים על דוגמא בסיסית המתיחסת לטיפוסי הנתונים "פלפל" ו "סלט פלפלים". לטיפוס הנתונים "פלפל" יש 3 תכונות: משקל הפלפל, צבע הפלפל ומספר החתיכות שלו. ערכי התכונות עבור פלפל מסויים מתארות את המצב הנוכחי שלו. על טיפוס הנתונים "פלפל" ניתן לבצע שתי פעולות בסיסיות: לחתוך כל חתיכה של הפלפל ל-2 חתיכות, לחתוך כל חתיכה של הפלפל ל-n חתיכות. לטיפוס הנתונים "סלט פלפלים" יש 3 תכונות שכל אחת מהן היא פלפל – כל פלפל בצבע שונה. גם על טיפוס הנתונים "סלט פלפלים" ניתן לבצע את שתי הפעולות הבסיסיות שתוארו עבור הטיפוס "פלפל" אך בהתאמה לטיפוס "סלט פלפלים". לכל טיפוס מוגדרות גם פעולות קובעות (mutators), ופעולות מאחזרות (accessors).

 (1) דיאגרמה לתיאור עצם.

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

הפלפל שהארנב יוסי מחזיק

העצם

צבע: ירוק

משקל: 100 גרם

מספר חתיכות: 1

תכונות

וערכיהן

 

 

מה מספר החתיכות?

צבע את הפלפל ל- אדום

חתוך כל חתיכה ל- 2

חתוך כל חתיכה ל- n

פעולות

 

(2) דיאגרמה לתיאור טיפוס ולתיאור עצמים בהתאם.

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

פלפל

הטיפוס

צבע

משקל

מספר חתיכות

תכונות

מה מספר החתיכות?

צבע את הפלפל ל- אדום

חתוך כל חתיכה ל- 2

חתוך כל חתיכה ל- n

פעולות

 

הפלפל בצלחת של יעל

מטיפוס פלפל

העצם

 

הפלפל שהארנב יוסי מחזיק

מטיפוס פלפל

העצם

צבע: אדום

משקל: 120 גרם

מספר חתיכות: 10

תכונות

וערכיהן

 

צבע: ירוק

משקל: 100 גרם

מספר חתיכות: 1

תכונות

וערכיהן

 

(3) דיאגרמה לתיאור טיפוס השמה דגש על סוגי פעולות

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

פלפל

שם הטיפוס

צבע:

משקל:

מספר-חתיכות:

תכונות

צור- פלפל (color, weight, pieces  )

פעולות יוצרות

 

פעולות

קבע-צבע ( newColor )

קבע-משקל ( newWeight )

קבע-מספר-חתיכות ( newPieces )

פעולות קובעות

אחזר- צבע ( )

אחזר-משקל ( )

אחזר-מספר-חתיכות ( )

פעולות מאחזרות

חתוך-כל-חתיכה-ל-2 ( )

חתוך-כל-חתיכה-ל ( n )

פעולות

 

(4) אלגוריתמים מילוליים מותאמים לפרדיגמה.

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

צור עצם מטיפוס פלפל בשם הפלפל-של-הארנב-יוסי

הפלפל-של-הארנב-יוסי . קבע-צבע ("ירוק")

הפלפל-של-הארנב-יוסי . קבע-משקל (100)

הפלפל-של-הארנב-יוסי . קבע-מספר-חתיכות (1)

הפלפל-של-הארנב-יוסי . חתוך-כל-חתיכה-ל-2

הפלפל-של-הארנב-יוסי . חתוך-כל-חתיכה-ל (5)

הפלפל-של-הארנב-יוסי . אחזר-מספר-חתיכות ( )  ¬  num

 (5) ויזואליזציה בעזרת סביבת הפיתוח BlueJ.

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

סיכום

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

מקורות

Bergin, J. (1999). Why procedural is the wrong first paradigm if OOP is the goal. OOPSLA99 educator’s symposium. http://csis.pace.edu/~bergin/papers/Whynotproceduralfirst.html

Bishop, J. M. (1997). A philosophy of teaching Java as a first teaching language. SIGCSE Bulletin 29(1), 140-142.

Brilliant, S. S., & Wiseman, T. R. (1996). The first programming paradigm and language dilemma. SIGCSE Bulletin  28(1), 338-342.

Holland, S., Griffiths, R., & Woodman, M. (1997). Avoiding object misconceptions. SIGCSE Bulletin 29(1),  131-134.

Kolling, M., & Rosenberg, J. (1996). An object-oriented program development environment for the first programming course. SIGCSE Bulletin 28(1),    83-87.

Parlanet, N. (1997). Teaching with object-orientation libraries. SIGCSE Bulletin 29(1), 140-144.