對於面向過程的模式,程式的執行通常是從
screen
的dialog module
或selection screen
的start-of-selection
事件開始的。你在這些處理模組中操作全域性變數來實現需求的功能。你可以通過內部的
form
和外部的
function module
來實現程式的模組化。這些過程除了可以操作全域性變數外還可以具備內部的本地變數來協助實現內部的一些特定功能。
對於oo程式設計,唯一的結構單位就是類,這裡類的例項物件取代了全域性變數。這些物件封裝了應用的狀態和行為。應用的狀態是用屬性來代表的它取代了面向過程中的全域性變數。應用的行為是通過方法來實現的,他們用來改變應用的屬性或者呼叫其它物件的方法。
nabap oo支援oo和面向過程的兩種模式,這樣在傳統的abap程式(比如報表,模組池,功能池等)中你也可以使用abap物件類。在這些程式裡你也就可以使用基於物件導向的新技術了,比如一些使用者介面,避免了要想使用這些新技術必須重新編寫程式。
n目前大部分程式都是面向過程和abap oo 的混合體如下圖所示:
雖然純粹的oo模式技術上是可行的,但是現實中還存在著大量的兩種模式的混合體如右面的圖所示。abap 物件和面向過程的技術同時應用,呼叫常用的功能模組,呼叫螢幕或者直接訪問資料庫等在物件中都存在。混合的模式及利用了新技術又保護了已投入的成本。
兩種模式的選擇
正如本文所述,oo的模式是最佳的選擇,除非在絕對必要的情況下才使用面向過程的模式。比如傳統的screen programming在oo中是不支援的,附錄中會進一步闡釋如何實現screen與oo的結合。
ABAP OO的八大理由 二
1.abap oo更加明確所以更易於使用。例如在使用abap oo你的程式的執行流程不再是由執行時隱含的控制。這樣你就可以自己去設計程式所執行的流程了而不必像面向過程那樣去了解和服從外部控制機制 即報表和dialog screen的事件 2.abap oo具有更加清晰的語法和語義規則,比如一些容易出...
ABAP OO的八大理由(五)
物件導向模式的資料封裝 oo模式的程式設計也有兩種資料型別,類例項的屬性和類方法中的本地變數。例項屬性的生命週期依賴於物件的生命週期,本地變數的生命週期依賴於類方法的生命週期。所以物件導向的本地變數與面向過程的本地變數的生命週期是一樣的。它是類方法中的輔助變數與資料封裝無關。abap物件的資料封裝在...
ABAP OO的八大理由 七
物件導向的例項化 行如其名,在物件導向的模式中,物件是唯一存在的東西。物件是類的例項,是通過create object語句來實現的。abap物件不可能被隱含的例項化,你通過指標變數來操作物件。當然你通過指標所操作的物件不一定是自己建立的,這種現象主要是通過指標操作的物件很有可能是從其他地方傳過來的,...