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