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