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

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

תכנות מונחה עצמים – על קצה המזלג

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

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

 

אחת הגישות החדשות יותר, היא גישה שפותחה בשנות ה- 90 (אם כי ניתן לראות ניצנים שלה עוד בשנות ה-60!). גישה זו מכונה "תכנות מונחה העצמים" (Object Oriented Programming) ובקיצור OOP. על רגל אחת: הרעיון הוא לפרק תוכנה גדולה ליחידות קטנות ועצמאיות הנקראות עצמים. גישה זו מאפשרת כתיבת מערכות תוכנה גדולות, כך שיהיו אמינות וקלות לכתיבה, קריאה ועדכון. הגישה מאפשרת גם שיתוף פעולה נוח בין מתכנתים שונים, המשתפים פעולה בכתיבת מערכת גדולה. קשה להסביר את התורה כולה על רגל אחת, ובכל זאת ננסה להביא לכם טעימה מן המושגים המרכזיים בגישה זו:

 

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

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

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

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

 

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

 

פרטים על היחידה וההשתלמות המקדימה אותה נמצאים באתר של הפיקוח על מדעי המחשב http://www.csit.org.il  וכן באתר של מרכז המורים הארצי  http://cse.proj.ac.il  . אנו מזמינים אתכם להכנס ולהתרשם.

 

שלכם,

צוות מדעי המחשב,

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

brandes@cc.huji.ac.il      ובשעות הבוקר: 6585828-02


 

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

אתר הבטים

גליון יוני 2002

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