ABAP OO的八大理由 七

2021-04-15 00:12:51 字數 1362 閱讀 1588

物件導向的例項化

行如其名,在物件導向的模式中,物件是唯一存在的東西。物件是類的例項,是通過create object語句來實現的。abap物件不可能被隱含的例項化,你通過指標變數來操作物件。

當然你通過指標所操作的物件不一定是自己建立的,這種現象主要是通過指標操作的物件很有可能是從其他地方傳過來的,比如說工廠方法(factory method)或者介面引數。你可以在乙個類中建立多個物件每個物件通過屬性都有自己的識別符號和內容。

物件的生命週期是由使用者來控制的(其他物件,程式或過程等),只要有指標變數指向他,他就在記憶體中存在。

如果沒有指標變數指向物件,這個物件就會被自動的被abap記憶體收集器從記憶體中刪除。和程式的例項一樣,abap物件也儲存在主程式的內部session中。在640之後你就可以在應用伺服器的shared memory中建立shared object了,這樣在這應用伺服器上執行的任何程式都可以呼叫它。

下面的例子演示了從銀行賬號類中產生的兩個銀行賬號物件。

data: account1 type ref to account,

account2 type ref to account,

amnt type p decimals 2,

exc_ref type ref to cx_negative_amount,

text type string.

create object : account1 exporting id = ….,

account2 exporting id = …..

try.

amnt = ….

account1

àtransfer ( exporting amount = amnt

target = account2).

catch cx_negative_amount into exc_ref.

text = exc_ref->get_text().

message text type i.

endtry.

指標變數account1,account2是類account的物件的顯示的操作符。在create object語句中每個賬號標識被傳入到了物件的結構體。物件一旦被建立,賬號標識就不用再被宣告了。你可以呼叫乙個物件的transfer方法,通過通過賬號指標變數來指明要轉入的賬號。

與面向過程的上面的例子相比,顯然物件導向的例子更加直接。在面向過程的例子裡你不得不為每個功能模組指明要操作的資料,而在物件導向的例子裡你只需呼叫物件的方法那麼他就會自動地使用它自己的資料。值得注意的是例外資訊我們都是使用基於類的方法,這在610之後是被推薦的。在面向過程的程式中使用指標變數exc_ref顯得有些另類,因為在非oo模式的程式中使用了oo模式的東西,這也是abap oo的乙個自然特性。

ABAP OO的八大理由 二

1.abap oo更加明確所以更易於使用。例如在使用abap oo你的程式的執行流程不再是由執行時隱含的控制。這樣你就可以自己去設計程式所執行的流程了而不必像面向過程那樣去了解和服從外部控制機制 即報表和dialog screen的事件 2.abap oo具有更加清晰的語法和語義規則,比如一些容易出...

ABAP OO的八大理由 三

對於面向過程的模式,程式的執行通常是從 screen 的dialog module 或selection screen 的start of selection 事件開始的。你在這些處理模組中操作全域性變數來實現需求的功能。你可以通過內部的 form 和外部的 function module 來實現程...

ABAP OO的八大理由(五)

物件導向模式的資料封裝 oo模式的程式設計也有兩種資料型別,類例項的屬性和類方法中的本地變數。例項屬性的生命週期依賴於物件的生命週期,本地變數的生命週期依賴於類方法的生命週期。所以物件導向的本地變數與面向過程的本地變數的生命週期是一樣的。它是類方法中的輔助變數與資料封裝無關。abap物件的資料封裝在...