Rexx - Orienté objet
Lorsque vous installez ooRexx conformément au chapitre sur l'environnement, vous aurez également la possibilité de travailler avec des classes et des objets. Veuillez noter que tout le code suivant doit être exécuté dans l'interpréteur ooRexx. L'interpréteur Rexx normal ne pourra pas exécuter ce code orienté objet.
Déclarations de classe et de méthode
Une classe est définie avec la déclaration de syntaxe suivante.
Syntaxe
::class classname
où classname est le nom donné à la classe.
Une méthode dans une classe est définie avec la déclaration de syntaxe suivante.
Syntaxe
::method methodname
Où methodname est le nom donné à la méthode.
Une propriété dans une classe est définie avec la déclaration de syntaxe ci-dessous.
Syntaxe
::attribute propertyname
Où propertyname est le nom donné à la propriété.
Exemple
Voici un exemple de classe dans Rexx.
::class student
::attribute StudentID
::attribute StudentName
Les points suivants doivent être notés à propos du programme ci-dessus.
- Le nom de la classe est étudiant.
- La classe a 2 propriétés, StudentID et StudentName.
Méthodes Getter et Setter
Les méthodes Getter et Setter sont utilisées pour définir et obtenir automatiquement les valeurs des propriétés. Dans Rexx, lorsque vous déclarez une propriété avec le mot-clé attribut, les méthodes getter et setter sont déjà mises en place.
Exemple
::class student
::attribute StudentID
::attribute StudentName
Dans l'exemple ci-dessus, il y aurait des méthodes Getter et Setter pour StudentId et StudentName.
Un exemple de la façon dont ils peuvent être utilisés est présenté dans le programme suivant.
/* 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
La sortie du programme ci-dessus sera comme indiqué ci-dessous.
1
Joe
Méthodes d'instance
Les objets peuvent être créés à partir de la classe via le ~new operator. Une méthode de la classe peut être appelée de la manière suivante.
Object~methodname
Où methodname est la méthode qui doit être invoquée depuis la classe.
Exemple
L'exemple suivant montre comment un objet peut être créé à partir d'une classe et la méthode respective appelée.
/* 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))
La sortie du programme ci-dessus sera comme indiqué ci-dessous.
60
Création de plusieurs objets
On peut également créer plusieurs objets d'une classe. L'exemple suivant montre comment cela peut être réalisé.
Ici, nous créons 3 objets (st, st1 et st2) et appelons leurs membres d'instance et leurs méthodes d'instance en conséquence.
Jetons un coup d'œil à un exemple de la façon dont plusieurs objets peuvent être créés.
Exemple
/* 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))
La sortie du programme ci-dessus sera comme indiqué ci-dessous.
60
70
60
Héritage
L'héritage peut être défini comme le processus par lequel une classe acquiert les propriétés (méthodes et champs) d'une autre. Avec l'utilisation de l'héritage, les informations sont rendues gérables dans un ordre hiérarchique.
La classe qui hérite des propriétés des autres est appelée subclass (classe dérivée, classe enfant) et la classe dont les propriétés sont héritées est appelée superclass (classe de base, classe parent).
Voyons un exemple d'héritage dans Rexx. Dans l'exemple suivant, nous créons une classe appeléePerson. À partir de là, nous utilisons le mot-clé subclass pour créer leStudent class comme un sub-class of Person.
Exemple
/* 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))
La sortie du programme ci-dessus sera comme indiqué ci-dessous.
60