OOP in ABAP

Yazılım dillerinin çoğunda kullanılan, hatta bazı sistemler için olmazsa olmaz niteliğini taşıyan OOP-Nesneye Yönelik Programlama yapısını ABAP içerisinde de kullanmak mümkün. Programlama mimarisi için önemli bir yer kaplayan bu yapı için öncelikle ABAP içerisinde nasıl bir yer edindiğinden bahsedeyim.

ABAP içerisinde OOP yapısında 3 aşama bulunmaktadır.

  • Class Definition
  • Class Implementation
  • Inheritance

Class Definition içerisinde kodlamanın erişim kıstaslarının belirlendiği 3 katman bulunmaktadır.

  • Public Section
  • Private Section
  • Protected Section

Kullanacağımız yapıya göre kodlarımızın erişim kıstaslarını bu alanlar içerisinde metodlar ve tanımlamalar olarak barındırabiliriz.

Örnek bir senaryo üzerinden ilerleyecek olursak. Sabit bir integer değeri class içerisindeki metodlar ile değiştirerek sonuç olarak o işlemlerden dönen değeri ekrana bastıracağımız bir demo program yazabiliriz.

Class Definition kısmında, public section katmanında import ve export değerlerinin yer aldığı bir metod tanımlıyoruz. Aynı şekilde Protected katmanında increment adında bir metod tanımlayarak, class içerisinde public section tarafından gelen değeri increment metodu içerisinde değişikliğe uğratılmasını sağlayacağız. Son olarak class içerisinde verilen değeri bir değişkene atamak için sadece bu class içerisinde kullanılabilecek şekilde private katmanında count isminde bir değişken tanımlanıyor.

Class lcl_class DEFINITION.
  PUBLIC SECTION.
    METHODS : set IMPORTING value(set_value) TYPE i,
              get EXPORTING value(get_value) TYPE i.
  PROTECTED SECTION.
    METHODS increment.
  PRIVATE SECTION.

    DATA : count TYPE i.
ENDCLASS.

 

Class implementation katmanında artık daha önce tanımladığımız metodlarımızın ne gibi işlevleri olacağına dair işlemleri gerçekleştiriyoruz. Yukarda tanımlanan 3 adet metodumuz mevcut;

  • Set Metodu
  • Get Metodu
  • Increment Metodu

Get metodu ile sabit olarak verilecek olan integer değeri count değişkenine atanmasını sağlıyoruz. Set metodunda bu değer set_value olarak parametreye atandıktan sonra increment metoduna bu parametreyi veriyoruz. Increment metodunda count değerine 10 ekleyerek geriye count+10 değerini döndürüyoruz.

CLASS lcl_class IMPLEMENTATION.
  METHOD increment.
    count = count + 10.
  ENDMETHOD.
  METHOD set.
    count = set_value.
    increment( ).
  ENDMETHOD.
  METHOD get.
    get_value = count.
  ENDMETHOD.
ENDCLASS.

 

Özetleyecek olursak,

Kullanıcıdan gelen değer = get_value = count = set_value = count+10

Sonuç olarak kullanıcıdan gelen değerimizin 10 fazlası artık bizim export olarak döndüreceğimiz değer halini alıyor. Bunuda değer isminde bir değişkene verip ekrana Write Değer olarak bastırabiliriz.

Class içerisindeki işlemlerimizi tamamladıktan sonra programın main alanında artık bu class’ı kullanabilmek için bir inheritance mantığı uygulamamız gerekli.

Bunun için class’tan türeyen bir değişken kullanılacak. class_a isminde bir değişkene oluşturduğumuz lcl_class’ı türeterek bu class_a içerisindeki metodlara vereceğimiz parametreleri belirleyebiliriz. Bu parametreleri vermek için bir nesne yaratarak, içerisinde set ve get değerlerini girebiliriz.

DATA : class_a TYPE REF TO lcl_class.
DATA : deger TYPE i.

START-OF-SELECTION.

  CREATE OBJECT class_a.
  class_a->set( 6 ).
  class_a->get(
     IMPORTING
       get_value = deger
  ).

  WRITE deger.

 

Set parametresi olarak 6 sayısını verdiğimizde değişkenimiz artık şu şekilde ilerleyecektir.

set(6) = get_value = değer = count = count+10 = set_value = Değer = 16

Programı çalıştırdığımızda aşağıdaki sonucu görebiliriz.

Abap Class.PNG

 


Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s