SAP ABAP - Kelas

Kelas digunakan untuk menentukan bentuk objek dan menggabungkan representasi data dan metode untuk memanipulasi data ke dalam satu paket yang rapi. Data dan fungsi di dalam kelas dipanggilmembers of the class.

Definisi dan Implementasi Kelas

Saat Anda menentukan kelas, Anda menentukan cetak biru untuk tipe data. Ini tidak benar-benar mendefinisikan data apa pun, tetapi itu menentukan apa arti nama kelas, terdiri dari apa objek kelas itu, dan operasi apa yang dapat dilakukan pada objek semacam itu. Artinya, ini mendefinisikan karakteristik abstrak dari suatu objek, seperti atribut, bidang, dan properti.

Sintaks berikut menunjukkan cara mendefinisikan kelas -

CLASS <class_name> DEFINITION. 
.......... 
.......... 
ENDCLASS.

Definisi kelas dimulai dengan kata kunci CLASS diikuti dengan nama kelas, DEFINISI dan badan kelas. Definisi kelas dapat berisi berbagai komponen kelas seperti atribut, metode, dan peristiwa. Saat kita mendeklarasikan sebuah metode dalam deklarasi kelas, implementasi metode harus disertakan dalam implementasi kelas. Sintaks berikut menunjukkan cara mengimplementasikan kelas -

CLASS <class_name> IMPLEMENTATION. 
........... 
.......... 
ENDCLASS.

Note- Implementasi kelas berisi implementasi semua metodenya. Dalam Objek ABAP, struktur kelas berisi komponen seperti atribut, metode, peristiwa, jenis, dan konstanta.

Atribut

Atribut adalah bidang data dari kelas yang dapat memiliki tipe data apa pun seperti C, I, F, dan N. Atribut dideklarasikan dalam deklarasi kelas. Atribut ini dapat dibagi menjadi 2 kategori: atribut instance dan statis. Sebuahinstance attributemendefinisikan keadaan spesifik instance dari suatu objek. Status berbeda untuk objek yang berbeda. Atribut instance dideklarasikan dengan menggunakan pernyataan DATA.

Static attributesmenentukan status umum kelas yang digunakan bersama oleh semua instance kelas. Artinya, jika Anda mengubah atribut statis dalam satu objek kelas, perubahan tersebut juga akan terlihat oleh semua objek kelas lainnya. Atribut statis dideklarasikan dengan menggunakan pernyataan CLASS-DATA.

Metode

Metode adalah fungsi atau prosedur yang merepresentasikan perilaku suatu objek di kelas. Metode kelas dapat mengakses atribut kelas apa pun. Definisi metode juga bisa berisi parameter, sehingga Anda bisa memasukkan nilai ke parameter ini saat metode dipanggil. Definisi metode dideklarasikan di deklarasi kelas dan diimplementasikan di bagian implementasi kelas. Pernyataan METHOD dan ENDMETHOD digunakan untuk mendefinisikan bagian implementasi dari sebuah metode. Sintaks berikut menunjukkan cara mengimplementasikan metode -

METHOD <m_name>. 
.......... 
.......... 
ENDMETHOD.

Dalam sintaks ini, <m_name> mewakili nama sebuah metode. Note - Anda dapat memanggil metode dengan menggunakan pernyataan METODE PANGGILAN.

Mengakses Atribut dan Metode

Komponen kelas dapat ditentukan di bagian visibilitas publik, pribadi, atau dilindungi yang mengontrol bagaimana komponen ini dapat diakses. Bagian visibilitas pribadi digunakan untuk menolak akses ke komponen dari luar kelas. Komponen tersebut hanya dapat diakses dari dalam kelas seperti metode.

Komponen yang ditentukan di bagian visibilitas publik dapat diakses dari konteks apa pun. Secara default semua anggota kelas akan menjadi pribadi. Secara praktis, kami mendefinisikan data di bagian privat dan metode terkait di bagian publik sehingga mereka bisa dipanggil dari luar kelas seperti yang ditunjukkan pada program berikut.

  • Atribut dan metode yang dideklarasikan di bagian Publik dalam sebuah kelas dapat diakses oleh kelas itu dan kelas lain, sub-kelas program.

  • Ketika atribut dan metode dideklarasikan di bagian Protected di sebuah kelas, itu hanya dapat diakses oleh kelas dan sub kelas itu (kelas turunan).

  • Ketika atribut dan metode dideklarasikan di bagian Privat di sebuah kelas, itu hanya dapat diakses oleh kelas itu dan bukan oleh kelas lain.

Contoh

Report ZAccess1. 
CLASS class1 Definition.
   PUBLIC Section.
      Data: text1 Type char25 Value 'Public Data'.
      Methods meth1.
		
   PROTECTED Section.
      Data: text2 Type char25 Value 'Protected Data'.
		
   PRIVATE Section.     
      Data: text3 Type char25 Value 'Private Data'. 
ENDCLASS.
 
CLASS class1 Implementation.   
   Method meth1.     
      Write: / 'Public Method:',   
             / text1,
             / text2,
             / text3.
      Skip.
   EndMethod.
ENDCLASS. 

Start-Of-Selection.   
   Data: Objectx Type Ref To class1.
   Create Object: Objectx.
   CALL Method: Objectx→meth1.
   Write: / Objectx→text1.

Kode di atas menghasilkan keluaran sebagai berikut -

Public Method: 
Public Data 
Protected Data 
Private Data
  
Public Data

Atribut Statis

Atribut Statis dideklarasikan dengan pernyataan CLASS-DATA. Semua objek atau instance dapat menggunakan atribut statis kelas. Atribut statis diakses langsung dengan bantuan nama kelas seperti class_name⇒name_1 = 'Some Text'.

Contoh

Berikut adalah program dimana kita ingin mencetak teks dengan nomor baris 4 sampai 8 kali. Kami mendefinisikan kelas class1 dan di bagian publik kami mendeklarasikan CLASS-DATA (atribut statis) dan metode. Setelah menerapkan kelas dan metode, kami langsung mengakses atribut statis di acara Start-Of-Selection. Kemudian kita hanya membuat instance kelas dan memanggil metode tersebut.

Report ZStatic1. 
CLASS class1 Definition.   
   PUBLIC Section.
      CLASS-DATA: name1 Type char45,
                  data1 Type I.
   Methods: meth1. 
ENDCLASS. 

CLASS class1 Implementation.   
   Method meth1.
      Do 4 Times.
         data1 = 1 + data1.
         Write: / data1, name1.
      EndDo.
      Skip.
   EndMethod. 
ENDCLASS. 

Start-Of-Selection. 
   class1⇒name1 = 'ABAP Object Oriented Programming'.
   class1⇒data1 = 0.
   Data: Object1 Type Ref To class1,
         Object2 Type Ref To class1.
			
   Create Object: Object1, Object2.
   CALL Method: Object1→meth1, 
                Object2→meth1.

Kode di atas menghasilkan keluaran sebagai berikut -

Konstruktor

Konstruktor adalah metode khusus yang dipanggil secara otomatis, baik saat membuat objek atau mengakses komponen kelas. Konstruktor dipicu setiap kali objek dibuat, tetapi kita perlu memanggil metode untuk memicu metode umum. Dalam contoh berikut, kami telah mendeklarasikan dua metode publik method1 dan konstruktor. Kedua metode ini memiliki operasi yang berbeda. Saat membuat objek kelas, metode konstruktor memicu operasinya.

Contoh

Report ZConstructor1. 
CLASS class1 Definition.
   PUBLIC Section.
      Methods: method1, constructor.
ENDCLASS. 

CLASS class1 Implementation.
   Method method1.
      Write: / 'This is Method1'.
   EndMethod.
	
   Method constructor.
      Write: / 'Constructor Triggered'.
   EndMethod. 
ENDCLASS. 

Start-Of-Selection.
   Data Object1 Type Ref To class1.
   Create Object Object1.

Kode di atas menghasilkan keluaran sebagai berikut -

Constructor Triggered

Operator ME dalam Metode

Saat Anda mendeklarasikan variabel jenis apa pun di bagian publik kelas, Anda dapat menggunakannya dalam implementasi lainnya. Variabel dapat dideklarasikan dengan nilai awal di bagian publik. Kita dapat mendeklarasikan variabel lagi di dalam metode dengan nilai yang berbeda. Saat kita menulis variabel di dalam metode, sistem akan mencetak nilai yang diubah. Untuk mencerminkan nilai variabel sebelumnya, kita harus menggunakan operator 'ME'.

Dalam program ini, kami telah mendeklarasikan teks variabel publik1 dan dimulai dengan nilai. Kami telah mendeklarasikan variabel yang sama lagi, tetapi dipakai dengan nilai yang berbeda. Di dalam metode, kami menulis variabel itu dengan operator 'ME' untuk mendapatkan nilai yang dimulai sebelumnya. Kami mendapatkan nilai yang diubah dengan mendeklarasikan secara langsung.

Contoh

Report ZMEOperator1. 
CLASS class1 Definition.
   PUBLIC Section. 
	
Data text1 Type char25 Value 'This is CLASS Attribute'.
   Methods method1. 
ENDCLASS. 

CLASS class1 Implementation.
   Method method1. 
	
Data text1 Type char25 Value 'This is METHOD Attribute'.
   Write: / ME→text1,
          / text1.
   ENDMethod.
ENDCLASS. 

Start-Of-Selection.
   Data objectx Type Ref To class1.
   Create Object objectx.
   CALL Method objectx→method1.

Kode di atas menghasilkan keluaran sebagai berikut -

This is CLASS Attribute 
This is METHOD Attribute