Учебники

Rexx — объектно-ориентированный

Когда вы установите ooRexx согласно главе о среде, вы также сможете работать с классами и объектами. Обратите внимание, что весь следующий код должен быть запущен в интерпретаторе ooRexx. Обычный интерпретатор Rexx не сможет запустить этот объектно-ориентированный код.

Объявления класса и метода

Класс определяется с помощью следующего объявления синтаксиса.

Синтаксис

::class classname 

где classname — это имя, данное классу.

Метод в классе определяется следующим объявлением синтаксиса.

Синтаксис

::method methodname 

Где methodname — это имя, данное методу.

Свойство в классе определяется с помощью приведенного ниже объявления синтаксиса.

Синтаксис

::attribute propertyname 

Где propertyname — это имя, данное свойству.

пример

Ниже приведен пример класса в Rexx.

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

Следующие пункты должны быть отмечены о вышеупомянутой программе.

  • Название класса — студент.
  • Класс имеет 2 свойства: StudentID и StudentName.

Методы получения и установки

Методы Getter и Setter используются для автоматической установки и получения значений свойств. В Rexx, когда вы объявляете свойство с ключевым словом attribute, методы getter и setter уже введены в действие.

пример

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

В приведенном выше примере будут методы Getter и Setter для StudentId и StudentName.

Пример того, как их можно использовать, показан в следующей программе.

Live Demo

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

Вывод вышеуказанной программы будет таким, как показано ниже.

1 
Joe 

Методы экземпляра

Объекты могут быть созданы из класса с помощью оператора ~ new . Метод из класса может быть вызван следующим образом.

Object~methodname 

Где methodname — метод, который должен быть вызван из класса.

пример

В следующем примере показано, как можно создать объект из класса и вызвать соответствующий метод.

Live Demo

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

Вывод вышеуказанной программы будет таким, как показано ниже.

60 

Создание нескольких объектов

Можно также создать несколько объектов класса. Следующий пример покажет, как этого можно достичь.

Здесь мы создаем 3 объекта (st, st1 и st2) и вызываем их члены экземпляра и методы экземпляра соответственно.

Давайте посмотрим на пример того, как можно создать несколько объектов.

пример

Live Demo

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

Вывод вышеуказанной программы будет таким, как показано ниже.

60 
70 
60 

наследование

Наследование может быть определено как процесс, в котором один класс приобретает свойства (методы и поля) другого. С использованием наследования информация становится управляемой в иерархическом порядке.

Класс, который наследует свойства other, известен как подкласс (производный класс, дочерний класс), а класс, свойства которого наследуются, называется суперклассом (базовый класс, родительский класс).

Давайте посмотрим пример наследования в Rexx. В следующем примере мы создаем класс с именем Person . Оттуда мы используем ключевое слово subclass, чтобы создать класс Student как подкласс Person .

пример

Live Demo

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

Вывод вышеуказанной программы будет таким, как показано ниже.