בפעם הקודמת דנו בתכנות מוכוון תהליכים בסביבת הJetter STX . היום נדון ביכולת נוספת וייחודית שמביאה עמה חברת Jetter - האפשרות לתכנות מונחה עצמים (Object Oriented Programming). חשוב להדגיש כבר מהתחלה כי תכנות מונחה עצמים הוא אפשרות הקיימת ב STX ואינו מחייב. תכנות מונחה עצמים מציע יתרונות רבים שאינם קיימים בתכנות פרוצדוראלי, אך הוא מצריך מאתנו שינוי בצורת החשיבה.
מהו תכנות מונחה עצמים? מתי כדאי להשתמש בו? האם הוא עשוי להביא תועלת לארגון?
מהנדסים העוסקים בפתוח בשפות תכנות מודרניות כמו C++,C#,JAVA וכו' , לא צריכים להיות מודעים לנושאים כמו הגדרות של מרחב זיכרון. הגדרות של טיפוסי משתנים כמו מערכים ואובייקטים הם דבר שבשגרה ומתבצעות בצורה שקופה ע"י כלי הפיתוח (Framewrok) . Jetter STX מיישמת ארכיטקטורה של שפות תכנות מודרניות וע"י כך מאפשרת לנו ליהנות מכל היתרונות של שפות אלו בתחום האוטומציה.
חברת Jetter AG הינה חברת בקרה גרמנית, ומזה 30 שנה מפתחת טכנולוגיות לשוק האוטומציה. החברה מתמחה בפתרונות בקרה לתחומי ההנעה והבקרה התהליכית. טכנולוגיית החברה מאופיינת ב "מערכת אחת ושפה אחת לכל הצרכים".
שפות הפיתוח של חברת Jetter עומדות בתקן (IEC 61131-3).
מהו תכנות מונחה עצמים?
תוכנה שפותחה בתכנות מונחה עצמים מכילה אובייקטים (מחלקות Classes). אובייקט הוא "רכיב" תוכנתי המאגד תחתיו טיפוסי נתונים (Data) ואלגוריתמים(פונקציות - Methods). בניגוד לתכנות פרוצדוראלי, בזמן התכנון מחליט המפתח אילו פונקציות וטיפוסי נתונים יהיו חשופים, בהם יהיה ניתן להשתמש (Public) ואלו מהם יהיו חסויים (Private). על מנת להשתמש באובייקט ממחלקה מסוימת צריך המתכנת ליצור ממנו מופע. המופע הנוצר מכיל את כל טיפוסי הנתונים והפונקציות של המחלקה. המופע הנוצר הינו אוטונומי לחלוטין, כל שינוי שיתבצע במופע אינו ישפיע על מופעים אחרים.
נהוג להתייחס לטיפוסי הנתונים כאל ה"מאפיינים" של האובייקט ואל הפונקציות שלו כאל ה"התנהגות" של האובייקט. בהמשך נראה כיצד התייחסות זאת מפשטת את צורת החשיבה ועוזרת לנו ביצירת קוד "בריא" יותר.
ניתן להשוות אובייקט ל ,Function Block המקבילה שלו מעולם תכנות הבקרים הקלאסי (IEC 61131-3) . בעוד Function Block מכילה רק פונקציה אחת, אובייקט מאגד תחתיו אין סוף פונקציות. לפונקציות האובייקט יש גישה לכל טיפוסי הנתונים של אותו אובייקט.
מאפיין נוסף וייחודי של תכנות מונחה עצמים הוא הורשה. אובייקט יכול לרשת "התנהגויות" ו"מאפיינים" ממחלקת אב. המחלקה שירשה נקראת מחלקת בן. מחלקת אב זוהי מחלקה שמגדיר המפתח, בה הוא מגדיר טיפוסי נתונים ופונקציות. כמו כן, נידרש המפתח להגדיר מי מהם ניתן לחשיפה, מי חסוי ומי ניתן לחשיפה רק למחלקת הבן (Protected). מחלקת הבן היא המחלקה היורשת. למעשה, ניתן להסתכל על מחלקת הבן כעל הרחבה של מחלקת האב.
עצה – הורשה ניישם רק בין מחלקות שהן בעלות אותו אפיון ("משפחה").
מתי כדאי להשתמש בתכנות מונחה עצמים?
ההחלטה על שימוש בשיטת פיתוח זאת נמצאת אצל המפתח עצמו! השיקולים המרכזיים המנחים אותנו בבואנו להחליט האם להשתמש בפתוח מונחה עצמים הם: שימוש חוזר בקוד , והשאלה בקיומם של הורשה ותחזוקה. כל מכונה מורכבת ממספר רב של רכיבים אשר "דומים" אחד לשני (צירים , שסתומים , צילינדרים). בניית אובייקט עבור כל רכיב יהפוך אותו חסין לתקלות. כלומר, כל תקלה שתתוקן באותה נקודה מסוימת בקוד, תתוקן לאורך כל התוכנית. אלגוריתמי בקרה שונים , תיאור מרכיבי חומרה שונים ורישום ביומן תקלות , כל אלו הם דוגמאות קלאסיות לשימוש בתכנות מונחה עצמים.
נשתמש בציר לדוגמא: קיימים צירי סרבו, צירי בוכנה, צירי מנוע צעד וכו'. כולם בדרך כזאת או אחרת אמורים להגיע מנקודה A לנקודה B. ההתנהגות של כל ציר משתנה וזאת עקב השוני בחומרה. נגדיר אובייקטים של "ציר סרבו" , "ציר בוכנה" ו "צירי מנוע צעד" כיורשים מאובייקט הנקרא "ציר". ע"י ההורשה מאובייקט "ציר" ויישום שונה של שאר האובייקטים הפניה לפקודה Position מתבצעת בהתאם לחומרת הציר ואופן זהה בכל מקום בקוד.
האם תכנות מונחה עצמים מביא תועלת לארגון?
קוד קצר יותר:
כאשר אנו נדרשים לבצע פעולה בתכנות פרוצדוראלי, כמו הזזה של ציר למשל, צריך המתכנת לפנות לכל ציר בנפרד. בתכנות מונחה עצמים יכול המתכנת ליצור מערך של צירים (אובייקטים) ובאמצעות לולאה לפנות לפקודת ההזזה של כל ציר בנפרד. קוד התוכנה אינו משתנה אם המתכנת רוצה לגשת לציר אחד או לחלופין ל 100 צירים, אורך הקוד נשאר אותו הדבר!!!
שליטה בקוד:
מי מאיתנו לא נתקל בבעיה של שינוי מאפייני הציר?? לשנות מאפיין של ציר אחד היא משימה קלה , אך שינוי מאפיינים של 8 צירים זוהי משימה מורכבת יותר. נוסיף עוד קוד תוכנה ארוך ומסתעף, וקיבלנו משימה קשה אף בהרבה . בתכנות מונחה עצמים לכל אובייקט יש את המאפיינים שלו. ע"י שינוי המאפיינים בנקודה אחת בודדת בקוד התוכנה ישתנו מאפייני הצירים לכל אורך התוכנית.
גמישות רבה יותר:
אובייקט מאגד תחתיו טיפוסי נתונים ופונקציות. אחרי אתחול האובייקט ניתן יהיה להשתמש בטיפוסי הנתונים ובפונקציות שלו בכל מקום בתוכנית. כל שינוי שנבצע באובייקט יגרר לאורך התוכנית כולה.
מימד חדש באוטומציה
באמצעות טכנולוגיית ה STX מביאה חברת Jetter את הדור החדש של שיטות הפיתוח אל תחום האוטומציה. היתרונות של תכנות מונחה עצמים ברורים ואינם ניתנים לערור. עולם ה IT כולו משתמש אך ורק בשיטה זו, שפות כמו JAVA,C#,C++ שהן הנפוצות ביותר מיישמות ארכיטקטורה של תכנות מונחה עצמים. Jetter STX מצוידת בכל היתרונות של השפות הנ"ל ועל ידי כך מאפשרת לנו לבצע את משימות האוטומציה היום יומיות בקלות ומהירות רבה יותר.