abap 物件導向 syntax

來源:互聯網
上載者:User

物件導向
物件導向是以類比現實世界中的對象及其互動關係為問題解決方案的一種軟體設計思想,
其強大的優越性已經在無數成功的軟體研究和工程實踐得到印證,可以毫不誇張的說,物件導向是軟體工程思想和實踐領域的一種進化和革命。

面向過程為主的abap體係為了適應現代軟體工程發展的趨勢和ERP的進化,也逐漸,應該是不得不,推出一些物件導向的機制。儘管與其它純粹為OO而生的語言體系比顯得幼稚和笨拙,但必竟還是從無到有的具備了一些物件導向的優越性,更重要的是,目前SAP開發還是以ABAP為主的--儘管其早就宣布相容java,所以,只能忍著(看來,忍是一種智慧,這種智慧無處不在,從為人到處事,從學習到工作,呵,忍得亂花漸欲迷人眼,才能習得仗劍走江湖,才能守得雲開見月明),只能揚長避短,只能戴著鐐銬跳舞。

一、面向對像的基本要素

       1、封裝

             通俗的說,對象可以對其內部的資源的可見度進行限定,每個對象都有一個介面,決定了其它對象如何與之相互互動

       2、多態

             相同名稱的方法在不同的類中、不同的場合呈現出不同的行為。

       3、繼承

            可以從已存在類的基礎上建立新的衍生類別,衍生類別可以繼承原有類的方法與屬性,或者添加新的類成員

二、小例子

        REPORT  Z_V_TESTOO.

*類聲明
class application definition.
      public section.           "類方法
             methods: show_text.
             methods: show_jia.
      private section.          "類屬性
             data text(100) type c value 'this is jiahongguangs test '.
endclass.

class application IMPLEMENTATION.  "類定義
      method show_text.
             write text.
      endmethod.
      method show_jia.
             write 'jiahonggaung'.
      endmethod.
endclass.
*全域資料聲明
data ob_app type ref to application.
start-of-selection.
  create object ob_app.
    call method ob_app->show_text.
    call method ob_app->show_jia.

程式中的類定義和聲明

     abap中使用class /endclass語句進行類定義,且有聲明部分和具體實現部分組成,類聲明部分中包含類成員(具體包括類的屬性,方法和事件等)的名稱及說明,類的實現部分則包含具體的類方法的實現代碼。

      class class definition

               public section.

               protected section.

               private section.

      endclass.

      class class implementation.

               method      ......endmethod.

      endclass.

      如果將類定義與傳統計的abap語言進行比較,類中的聲明部分相當於原有的資料定義及聲明部分,則實現部分相當於具體代碼部分,其中類方法相當於子程式、功能模組等過程代碼模組,

      成員的可見度:類的各個成員必須在definition部分進行聲明,在此之前,需要確定該組件的可見度,成員的可見度應基於封裝原則確定,對於面向對像中的類來說,其外部介面應該是易於接受且基本穩定的;

     成員類型:abap中可以定義三種不同的成員類型,分別是屬性、方法、和事件,各成員的可見度以及生存周期在類定義的同時被確定;屬性是在類內部的資料對像,用於描繪類的狀態;對於靜態屬性
使用  class-data語句定義

class vehicle definition.

         public section.

         class-data class_name(10) typec c value 'vehicle'.

        protected section.

         data speed type i

endclass.

上述代碼在類vehicle中定義了一個靜態屬性claaa_name和一個執行個體屬性speed。對於公有組件,可以在屬性定義語句中增加read-only關鍵字,則該屬性不能被類外部讀取,但可被類的內部方法所修改,除data語句外也可以使用constant語句定義類常量,類常量不能在編譯和運行期內修改,必須在類定義時,指明其值,因為其性質類似於靜態屬性,類似地,可以使用type語句在類中定義資料類型,資料類型也相當於靜態屬性,

方法是對像行為的實現部分..可以將其視為是類中的過程,與過程類似,方法是與外界存在介面的程式斷,也是一種處理塊;在方法中,可以定義內部資料。執行個體方法只能訪問該對像執行個體中的所有屬性和事件,而靜態方法則只能訪問類的靜態屬性和事件;要調用執行個體方法,必須首先建立一個類執行個體,再通過該執行個體調用方法;而調用類的靜態方法時,則可通過執行個體或者類本身調用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.