החומר המופיע בעמוד זה פורסם לראשונה בכתב העת "הבטים בהוראת מדעי המחשב" גליון ינואר 2003, עמודים 60-61

לא ניתן לעשות שימוש מסחרי בחומר זה ללא רשות בכתב מן המחברים או מערכת כתב העת

היישבו זמיר וכלבלב – במערך אחד ויזמרו בקול??

בתכנות מונחה עצמים – הם אף יצאו במחול!!!

עפרה ברנדס ויעל שטקל
הוראת המדעים, האוניברסיטה העברית, ירושלים

brandes@cc.huji.ac.il; yaelst@pob.huji.ac.il

 

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

OOP על רגל אחת

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

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

לבסוף בונה המתכנת תהליך בו נוצרים העצמים מתוך התבניות ומתפקדים זה עם זה וזה מול זה כדי להגיע לפתרון הרצוי.[1]

 

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

 

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

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

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

 

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

תודה למורים - נסייני החלוץ - המלמדים בימים אלו את תלמידיהם לקראת בחינת הבגרות הארצית בתכנות מונחה עצמים בג'אווה. בהצלחה לכם ולתלמידיכם.

 

 

השתלמות בתכנות מונחה עצמים

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

השתלמות קיץ בתכנות מונחה עצמים (מיושם בג'אווה), תפתח בחודש מאי 2003, לוח המפגשים מצורף להלן. ההשתלמות דורשת עבודה מאומצת ודחוסה אך היא מתאימה לכל המורים למדעי המחשב שכבר לימדו והגישו תלמידים לבגרות ביחידה הרביעית "עיצוב תוכנה". ההשתלמות אינה מניחה ידע קודם בתכנות מונחה עצמים ו/או בג'אווה.

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

מועדי ההשתלמות:

5 פגישות בימי ראשון אחה"צ בשעות 16:00 – 19:30 יתקיימו בתאריכים 18.5 , 25.5 , 1.6 , 8.6 , 15.6

9 פגישות של ימים מרוכזים בשעות 9:00 – 15:00 יתקיימו בימי שני ורביעי בתאריכים 23.6, 25.6, 30.6, 2.7, 7.7, 9.7, 14.7, 16.7, 21.7

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

טל: 6585828-02,  brandes@huji.ac.il

 

אתר המרכז הארצי

אתר הבטים

גליון ינואר 2003

חזרה לתחילת העמוד

 



[1]  מושגי היסוד של תכנות מונחה עצמים, נסקרו על קצה המזלג בגליון יוני 2002 של הבטים, עמודים 73-72. ניתן לקריאה גם באתר - כאן

[2]  זהו תיאור כללי ביותר למנגנון הירושה – inheritance הקיים בתכנות מונחה עצמים

[3]   Overriding הוא מנגנון ההגדרה מחדש בתכנות מונחה עצמים

[4]   מנגנון הפולימורפיזם – polymorphism

[5]   ממשקים – interfaces