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