Когда вы установите 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.
Пример того, как их можно использовать, показан в следующей программе.
/* 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 — метод, который должен быть вызван из класса.
пример
В следующем примере показано, как можно создать объект из класса и вызвать соответствующий метод.
/* 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) и вызываем их члены экземпляра и методы экземпляра соответственно.
Давайте посмотрим на пример того, как можно создать несколько объектов.
пример
/* 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 .
пример
/* 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))
Вывод вышеуказанной программы будет таким, как показано ниже.