SAP ABAP 封裝

2018-01-03 09:09 更新

封裝是一種面向?qū)ο缶幊蹋∣OP)概念,將數(shù)據(jù)和功能綁定在一起,操作數(shù)據(jù),并保持兩者免受外部干擾和誤用。數(shù)據(jù)封裝導(dǎo)致了數(shù)據(jù)隱藏的重要OOP概念。封裝是捆綁數(shù)據(jù)和使用它們的函數(shù)的機(jī)制,數(shù)據(jù)抽象是一種僅暴露接口并向用戶隱藏實(shí)現(xiàn)細(xì)節(jié)的機(jī)制。
ABAP通過(guò)創(chuàng)建稱為類的用戶定義類型支持封裝和數(shù)據(jù)隱藏的屬性。如前所述,類可以包含私有,受保護(hù)和公共成員。默認(rèn)情況下,類中定義的所有項(xiàng)目都是私有的。

接口封裝

封裝實(shí)際上意味著一個(gè)屬性和方法可以在不同的類中修改。因此,數(shù)據(jù)和方法可以具有不同的形式和邏輯,可以隱藏以分離類。
讓我們考慮通過(guò)接口封裝。當(dāng)我們需要在不同的類中創(chuàng)建具有不同功能的一個(gè)方法時(shí),使用接口。這里方法的名稱不需要改變。相同的方法必須在不同的類實(shí)現(xiàn)中實(shí)現(xiàn)。

以下程序包含一個(gè)接口inter_1。我們已經(jīng)聲明了屬性和方法method1。我們還定義了兩個(gè)類,如Class1和Class2。因此,我們必須在兩個(gè)類實(shí)現(xiàn)中實(shí)現(xiàn)方法“method1”。我們?cè)诓煌念愔袑?shí)現(xiàn)了不同的方法'method1'。在start-ofselection中,我們?yōu)閮蓚€(gè)類創(chuàng)建了兩個(gè)對(duì)象Object1和Object2。然后,我們通過(guò)不同的對(duì)象調(diào)用該方法來(lái)獲得在單獨(dú)的類中聲明的函數(shù)。

Report ZEncap1. 
Interface inter_1.
   Data text1 Type char35.
   Methods method1.
EndInterface.

CLASS Class1 Definition.
   PUBLIC Section.
      Interfaces inter_1.
ENDCLASS. 

CLASS Class2 Definition.
   PUBLIC Section.
      Interfaces inter_1. 
ENDCLASS.

CLASS Class1 Implementation.
   Method inter_1~method1.
      inter_1~text1 = 'Class 1 Interface method'.
      Write / inter_1~text1.
   EndMethod. 
ENDCLASS.
 
CLASS Class2 Implementation.
   Method inter_1~method1.
      inter_1~text1 = 'Class 2 Interface method'.
      Write / inter_1~text1.
   EndMethod. 
ENDCLASS.
 
Start-Of-Selection.
   Data: Object1 Type Ref To Class1,
      Object2 Type Ref To Class2.
		
   Create Object: Object1, Object2.
   CALL Method: Object1→inter_1~method1,
                Object2→inter_1~method1. 

上面的代碼產(chǎn)生以下輸出:

Class 1 Interface method 
Class 2 Interface method

封裝的類對(duì)外界沒(méi)有很多依賴。 此外,他們與外部客戶端的交互通過(guò)穩(wěn)定的公共接口進(jìn)行控制。 也就是說(shuō),封裝類及其客戶端松散耦合。 在大多數(shù)情況下,具有定義良好的接口的類可以插入到另一個(gè)上下文中。 當(dāng)設(shè)計(jì)正確時(shí),封裝類成為可重用的軟件資產(chǎn)。

設(shè)計(jì)戰(zhàn)略

我們通常使類成員默認(rèn)為私有,除非我們真的需要暴露它們。 這是比較好的封裝。 這種方法最常用于數(shù)據(jù)成員,并且同樣適用于所有成員。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)