Rexx - Berorientasi Objek

Saat Anda menginstal ooRexx sesuai bab lingkungan, Anda juga akan memiliki kemampuan untuk bekerja dengan kelas dan objek. Harap dicatat bahwa semua kode berikut harus dijalankan di interpreter ooRexx. Penerjemah Rexx normal tidak akan dapat menjalankan kode berorientasi objek ini.

Deklarasi Kelas dan Metode

Sebuah kelas didefinisikan dengan deklarasi sintaks berikut.

Sintaksis

::class classname

dimana classname adalah nama yang diberikan untuk kelas.

Sebuah metode di kelas didefinisikan dengan deklarasi sintaks berikut.

Sintaksis

::method methodname

Dimana methodname adalah nama yang diberikan untuk metode tersebut.

Properti di kelas didefinisikan dengan deklarasi Sintaks di bawah ini.

Sintaksis

::attribute propertyname

Dimana propertyname adalah nama yang diberikan untuk properti.

Contoh

Berikut ini adalah contoh kelas di Rexx.

::class student 
::attribute StudentID 
::attribute StudentName

Poin-poin berikut perlu diperhatikan tentang program di atas.

  • Nama kelasnya adalah siswa.
  • Kelas memiliki 2 properti, StudentID dan StudentName.

Metode Getter dan Setter

Metode Getter and Setter digunakan untuk secara otomatis mengatur dan mendapatkan nilai properti. Di Rexx, saat Anda mendeklarasikan properti dengan kata kunci atribut, metode pengambil dan penyetel sudah siap.

Contoh

::class student 
::attribute StudentID 
::attribute StudentName

Dalam contoh di atas, akan ada metode Getter dan Setter untuk StudentId dan StudentName.

Contoh bagaimana mereka dapat digunakan ditunjukkan pada program berikut.

/* Main program */ 
value = .student~new 
value~StudentID = 1 
value~StudentName = 'Joe' 
say value~StudentID 
say value~StudentName 

exit 0 
::class student 
::attribute StudentID 
::attribute StudentName

Output dari program di atas akan seperti gambar di bawah ini.

1 
Joe

Metode Instance

Objek dapat dibuat dari kelas melalui ~new operator. Metode dari kelas dapat dipanggil dengan cara berikut.

Object~methodname

Dimana methodname adalah metode yang perlu dipanggil dari kelas.

Contoh

Contoh berikut menunjukkan bagaimana sebuah objek dapat dibuat dari kelas dan masing-masing metode dipanggil.

/* Main program */ 
value = .student~new 
value~StudentID = 1 
value~StudentName = 'Joe' 
value~Marks1 = 10 
value~Marks2 = 20 
value~Marks3 = 30 
total = value~Total(value~Marks1,value~Marks2,value~Marks3) 
say total 

exit 0 
::class student 
::attribute StudentID 
::attribute StudentName 
::attribute Marks1 
::attribute Marks2 
::attribute Marks3 
::method 'Total' 
use arg a,b,c 
return (ABS(a) + ABS(b) + ABS(c))

Output dari program di atas akan seperti gambar di bawah ini.

60

Membuat Banyak Objek

Seseorang juga dapat membuat beberapa objek kelas. Contoh berikut akan menunjukkan bagaimana ini bisa dicapai.

Di sini kita membuat 3 objek (st, st1 dan st2) dan memanggil anggota instance mereka dan metode instance yang sesuai.

Mari kita lihat contoh bagaimana beberapa objek dapat dibuat.

Contoh

/* Main program */ 
st = .student~new 
st~StudentID = 1 
st~StudentName = 'Joe' 
st~Marks1 = 10 
st~Marks2 = 20 
st~Marks3 = 30 
total = st~Total(st~Marks1,st~Marks2,st~Marks3) 
say total  

st1  =  .student~new 
st1~StudentID = 2 
st1~StudentName = 'John' 
st1~Marks1 = 10 
st1~Marks2 = 20 
st1~Marks3 = 40 
total = st1~Total(st1~Marks1,st1~Marks2,st1~Marks3) 
say total  

st2  =  .student~new 
st2~StudentID = 3 
st2~StudentName = 'Mark' 
st2~Marks1 = 10 
st2~Marks2 = 20 
st2~Marks3 = 30 
total = st2~Total(st2~Marks1,st2~Marks2,st2~Marks3) 
say total  

exit 0 
::class student 
::attribute StudentID 
::attribute StudentName 
::attribute Marks1 
::attribute Marks2 
::attribute Marks3 
::method 'Total' 
use arg a,b,c 
return (ABS(a) + ABS(b) + ABS(c))

Output dari program di atas akan seperti gambar di bawah ini.

60 
70 
60

Warisan

Pewarisan dapat didefinisikan sebagai proses di mana satu kelas memperoleh properti (metode dan bidang) dari kelas lain. Dengan menggunakan pewarisan, informasi dibuat dapat dikelola dalam urutan hierarki.

Kelas yang mewarisi properti lain dikenal sebagai subclass (kelas turunan, kelas anak) dan kelas yang propertinya diwarisi disebut superclass (kelas dasar, kelas induk).

Mari kita lihat contoh warisan di Rexx. Dalam contoh berikut kami membuat kelas bernamaPerson. Dari sana kami menggunakan kata kunci subclass untuk membuatStudent class sebagai sub-class of Person.

Contoh

/* Main program */ 
st = .student~new 
st~StudentID = 1 
st~StudentName = 'Joe' 
st~Marks1 = 10 
st~Marks2 = 20 
st~Marks3 = 30 
say st~Total(st~Marks1,st~Marks2,st~Marks3)  

exit 0 
::class Person 
::class student subclass Person 
::attribute StudentID 
::attribute StudentName 
::attribute Marks1 
::attribute Marks2 
::attribute Marks3 
::method 'Total' 
use arg a,b,c 
return (ABS(a) + ABS(b) + ABS(c))

Output dari program di atas akan seperti gambar di bawah ini.

60