Skip links

שיעור שלישי – Object Oriented ABAP Methods

Object Oriented ABAP

Methods

METHODS הם קטעי קוד שאנחנו רושמים פעם אחת ויכולים לקרוא להם אחר כך מתי שנרצה, וזה חוסך לנו את הצורך בלכתוב אותם שוב ושוב(כמו Include,Subroutines).

ישנם שני סוגים של מתודות רגילות ומיוחדות

והרגילות מחולקות לשניים:

  • instance method
  • static method

נעבור תחילה על הinstance method

כדי להגדיר מתודה נרשום:


אם ננסה להריץ עכשיו נקבל שגיאה

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


עכשיו קיבלנו שגיאה חדשה

והסיבה לכך היא שלקלאס שיש לו מתודות חייב להיות גם יישום(Implementation).

בעצם בשלב של ההגדרה (definition) אנחנו רושמים מה יש לנו בקלאס, יש לנו את המשתנים האלו והאלו ואת המתודות האלו והאלו אבל מה יש בתוך ההמתודות האלו ? את זה אנחנו רושמים ביישום.

והדרך לרשום את היישום היא כך:


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


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


הגדרנו שהתכונה A תיהיה שווה 10 והתכונה B תיהיה שווה 20.

שימו לב שאנחנו קוראים להם ישירות ולא דרך אובייקט כי אנחנו בתוך הקלאס.

עכשיו כדי להפעיל את המתודה נצטרך ליצור אובייקט ולקרוא למתודה דרכו.


עכשיו נעבור על static method.

ההגדרה של מתודה סטטי היא בצורה הבאה :


והיישום שלה זהה למתודה רגילה :


אז מה ההבדלים בין מתודה רגילה למתודה סטטית.

  1. במתודה סטטית אפשר להשתמש רק בתכונות סטטיות לעומת מתודה רגילה שאפשר להשתמש בכל התכונות.
  2. אפשר לקרוא למתודה סטטית ללא שימוש באובייקט.


    לא נגענו בזה שיעור שעבר אבל גם לתכונה סטטית אפשר לפנות בלי אובייקט.


ועכשיו נעבור למה זה מתודות מיוחדות.

ויש לנו שניים.

  1. instance constructor
  2. static constructor

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


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

  1. כאשר קוראים לתכונה או מתודה מתוך הקלאס
  2. כאשר יוצרים אובייקט

והדרך להגדיר אותה היא פשוט להגדיר מתודה סטטית בשם CLASS_CONSTRUCTOR


הסדר של ביצוע הconstructor-ים בעת יצירת אובייקט הוא בסדר הבא

  1. static constructor בתנאי שלא קראנו לתכונה או מתודה מהאובייקט לפני
  2. instance constructor

אחר כך בעת כל יצירת אובייקט חדש רק הinstance constructor יקרא.

חשוב לשים לב שהמתודות constructor חייבות להיות בתוך הpublic section ואם לא אז נקבל את השגיאה הבאה.


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


תשובה:


סיבה:

תחילה הגדרנו אובייקט אז הstatic constructor פעל והפך את B ל30

אחר כך פעל הinstance constructor והפך את A ל 40 ואת B ל 50

ואחר כך הדפסנו את A ו B

לאחר מכן איפסנו את A וB

אחר כך יצרנו אובייקט חדש אז הinstance constructor פעל שוב והפך את הA שלו ל40 ואת B ל 50,אבל בגלל שB הוא תכונה סטטית B השתנה גם באובייקט הראשון

ואחר כך הדפסנו את A ו B של האובייקט הראשון.

 

שיעור ראשון – Object Oriented ABAP – SAP BASIS – ABAP – HANA (scmlevi.com)

שיעור שני – Object Oriented ABAP – SAP BASIS – ABAP – HANA (scmlevi.com)

שיעור שלישי – Object Oriented ABAP Methods – SAP BASIS – ABAP – HANA (scmlevi.com)

שיעור רביעי – object oriented ABAP – Global class – SAP BASIS – ABAP – HANA (scmlevi.com)

 

אוהב לוי Ohav Levi – אוהב לוי
SAP Developer, ABAP, SAP CPI, C#, Unity, .NET, SQL, JAVA, NetWeaver 7.0X & 7.X.
 
סייר
גרור