Rexx - Nesneye Yönelik
OoRexx'i ortam bölümüne göre kurduğunuzda, sınıflar ve nesnelerle de çalışma olanağına sahip olacaksınız. Lütfen aşağıdaki kodun hepsinin ooRexx yorumlayıcısında çalıştırılması gerektiğini unutmayın. Normal Rexx yorumlayıcısı bu nesne yönelimli kodu çalıştıramaz.
Sınıf ve Yöntem Beyanları
Aşağıdaki Sözdizimi bildirimi ile bir sınıf tanımlanır.
Sözdizimi
::class classname
nerede classname sınıfa verilen isimdir.
Bir sınıftaki yöntem, aşağıdaki Sözdizimi bildirimiyle tanımlanır.
Sözdizimi
::method methodname
Nerede methodname yönteme verilen isimdir.
Bir sınıftaki bir özellik, aşağıdaki Sözdizimi bildirimi ile tanımlanır.
Sözdizimi
::attribute propertyname
Nerede propertyname mülke verilen addır.
Misal
Aşağıdakiler, Rexx'teki bir sınıf örneğidir.
::class student
::attribute StudentID
::attribute StudentName
Yukarıdaki programla ilgili aşağıdaki noktalara dikkat edilmelidir.
- Sınıfın adı öğrencidir.
- Sınıfın 2 özelliği vardır, StudentID ve StudentName.
Alıcı ve Ayarlayıcı Yöntemleri
Getter ve Setter yöntemleri, özelliklerin değerlerini otomatik olarak ayarlamak ve almak için kullanılır. Rexx'te, attribute anahtar kelimesi ile bir özellik bildirdiğinizde, alıcı ve ayarlayıcı yöntemleri zaten yerleştirilmiştir.
Misal
::class student
::attribute StudentID
::attribute StudentName
Yukarıdaki örnekte, StudentId ve StudentName için Getter ve Setter yöntemleri olacaktır.
Nasıl kullanılabileceklerine dair bir örnek aşağıdaki programda gösterilmektedir.
/* 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
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
1
Joe
Örnek Yöntemleri
Nesneler sınıftan şu yolla oluşturulabilir: ~new operator. Sınıftan bir yöntem şu şekilde çağrılabilir.
Object~methodname
Nerede methodname sınıftan çağrılması gereken yöntemdir.
Misal
Aşağıdaki örnek, bir sınıftan bir nesnenin nasıl oluşturulabileceğini ve ilgili yöntemin nasıl çağrıldığını gösterir.
/* 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))
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
60
Birden Çok Nesne Oluşturma
Ayrıca bir sınıfın birden çok nesnesini de oluşturabilirsiniz. Aşağıdaki örnek bunun nasıl elde edilebileceğini gösterecektir.
Burada 3 nesne oluşturuyoruz (st, st1 ve st2) ve buna göre örnek üyelerini ve örnek yöntemlerini çağırıyoruz.
Birden çok nesnenin nasıl oluşturulabileceğine dair bir örneğe bakalım.
Misal
/* 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))
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
60
70
60
Miras
Kalıtım, bir sınıfın diğerinin özelliklerini (yöntemleri ve alanları) elde ettiği süreç olarak tanımlanabilir. Kalıtımın kullanılmasıyla, bilgiler hiyerarşik bir sırayla yönetilebilir hale getirilir.
Başkasının özelliklerini miras alan sınıf olarak bilinir subclass (türetilmiş sınıf, alt sınıf) ve özellikleri miras alınan sınıf olarak bilinir superclass (temel sınıf, ana sınıf).
Rexx'te bir miras örneği görelim. Aşağıdaki örnekte, adında bir sınıf oluşturuyoruzPerson. Oradan, alt sınıf anahtar kelimesini kullanarakStudent class olarak sub-class of Person.
Misal
/* 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))
Yukarıdaki programın çıktısı aşağıda gösterildiği gibi olacaktır.
60