Rexx - Objektorientiert

Wenn Sie ooRexx gemäß dem Kapitel "Umgebung" installieren, können Sie auch mit Klassen und Objekten arbeiten. Bitte beachten Sie, dass der gesamte folgende Code im ooRexx-Interpreter ausgeführt werden muss. Der normale Rexx-Interpreter kann diesen objektorientierten Code nicht ausführen.

Klassen- und Methodenerklärungen

Eine Klasse wird mit der folgenden Syntaxdeklaration definiert.

Syntax

::class classname

wo classname ist der Name der Klasse.

Eine Methode in einer Klasse wird mit der folgenden Syntaxdeklaration definiert.

Syntax

::method methodname

Wo methodname ist der Name der Methode.

Eine Eigenschaft in einer Klasse wird mit der folgenden Syntaxdeklaration definiert.

Syntax

::attribute propertyname

Wo propertyname ist der Name der Eigenschaft.

Beispiel

Das Folgende ist ein Beispiel für eine Klasse in Rexx.

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

Die folgenden Punkte müssen zum obigen Programm beachtet werden.

  • Der Name der Klasse ist Student.
  • Die Klasse hat zwei Eigenschaften, StudentID und StudentName.

Getter- und Setter-Methoden

Die Methoden Getter und Setter werden verwendet, um die Werte der Eigenschaften automatisch festzulegen und abzurufen. Wenn Sie in Rexx eine Eigenschaft mit dem Attributschlüsselwort deklarieren, sind die Methoden getter und setter bereits vorhanden.

Beispiel

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

Im obigen Beispiel gibt es Getter- und Setter-Methoden für StudentId und StudentName.

Ein Beispiel für ihre Verwendung finden Sie im folgenden Programm.

/* 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

Die Ausgabe des obigen Programms erfolgt wie unten gezeigt.

1 
Joe

Instanzmethoden

Objekte können aus der Klasse über das erstellt werden ~new operator. Eine Methode aus der Klasse kann folgendermaßen aufgerufen werden.

Object~methodname

Wo methodname ist die Methode, die von der Klasse aufgerufen werden muss.

Beispiel

Das folgende Beispiel zeigt, wie ein Objekt aus einer Klasse erstellt und die jeweilige Methode aufgerufen werden kann.

/* 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))

Die Ausgabe des obigen Programms erfolgt wie unten gezeigt.

60

Mehrere Objekte erstellen

Man kann auch mehrere Objekte einer Klasse erstellen. Das folgende Beispiel zeigt, wie dies erreicht werden kann.

Hier erstellen wir 3 Objekte (st, st1 und st2) und rufen ihre Instanzmitglieder und Instanzmethoden entsprechend auf.

Schauen wir uns ein Beispiel an, wie mehrere Objekte erstellt werden können.

Beispiel

/* 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))

Die Ausgabe des obigen Programms erfolgt wie unten gezeigt.

60 
70 
60

Erbe

Vererbung kann als der Prozess definiert werden, bei dem eine Klasse die Eigenschaften (Methoden und Felder) einer anderen Klasse erhält. Durch die Verwendung der Vererbung werden die Informationen in einer hierarchischen Reihenfolge verwaltet.

Die Klasse, die die Eigenschaften anderer erbt, ist bekannt als subclass (abgeleitete Klasse, untergeordnete Klasse) und die Klasse, deren Eigenschaften vererbt werden, ist bekannt als superclass (Basisklasse, Elternklasse).

Sehen wir uns ein Beispiel für die Vererbung in Rexx an. Im folgenden Beispiel erstellen wir eine Klasse namensPerson. Von dort aus verwenden wir das Schlüsselwort subclass, um das zu erstellenStudent class Als ein sub-class of Person.

Beispiel

/* 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))

Die Ausgabe des obigen Programms erfolgt wie unten gezeigt.

60