INTERFACE
interface-name
|
|
| [property-definition] | |
| [method-definition] | |
END-INTERFACE
|
Dieser Abschnitt behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Verwandte Statements: CREATE OBJECT |
DEFINE CLASS | INTERFACE | METHOD | PROPERTY | SEND
METHOD
Gehört zur Funktionsgruppe: Komponentenbasierte Programmierung
Bei der komponentenbasierten Programmierung ist ein Interface (eine Schnittstelle) eine Sammlung von Methoden und Eigenschaften, die semantisch zusammengehören und eine bestimmte Funktion einer Klasse darstellen.
Sie können ein oder mehrere Interfaces für eine Klasse definieren. Durch die Definition mehrerer Interfaces wird es Ihnen ermöglicht, Methoden nach ihrer Funktionsweise zu strukturieren/gruppieren, z.B. stellen Sie alle Methoden, die mit Dauerhaftigkeit (Laden, Speichern, Aktualisieren) zu tun haben, in ein Interface und die anderen Methoden in andere Interfaces.
Das INTERFACE-Statement dient zur Definition eines Interface. Es darf nur
innerhalb eines Natural-Klassenmoduls verwendet werden und kann wie folgt definiert
werden:
innerhalb eines DEFINE
CLASS-Statements. Diese Form wird verwendet, wenn das Interface nur
in einer Klasse implementiert werden soll.
in innerhalb der INTERFACE
USING-Klausel des DEFINE CLASS-Statements
enthaltenem Copycode. Diese Form wird verwendet, wenn das Interface in mehr als einer
Klasse implementiert werden soll.
Die mit dem Interface verbundenen Eigenschaften und Methoden werden in den Property-Definitionen bzw. Method-Definitionen festgelegt.
Syntax-Element-Beschreibung:
| Syntax-Element | Beschreibung |
|---|---|
interface-name
|
Interface-Name:
Dies ist der dem Interface zuzuweisende Name. Der Interface-Name kann maximal 32 Zeichen lang sein und muss den Natural-Namenskonventionen für Benutzervariablen entsprechen (weitere Informationen finden Sie im Abschnitt Namenskonventionen für Benutzervariablen. Er muss pro Klasse eindeutig und nicht mit dem Klassen-Namen identisch sein. Wenn das Interface von Clients verwendet werden soll, die in anderen Programmiersprachen geschrieben sind, sollte der Interface-Name so gewählt sein, dass er nicht gegen die für diese Sprachen geltenden Namenskonventionen verstößt. |
property-definition
|
Property-Definition für das Interface:
Die property-definition dient zur Definition von Eigenschaften für das Interface. Siehe Property-Definition weiter unten. |
method-definition
|
Method-Definition für das Interface:
Die method-definition dient zur Definition einer Method für das Interface. Siehe Method-Definition weiter unten. |
END-INTERFACE
|
Das für Natural reservierte Wort END-INTERFACE muss zum Beenden
des INTERFACE-Statements benutzt werden.
|
Die Property-Definition dient zur Definition von Eigenschaften für das Interface.
PROPERTY
property-name
|
|
| [(format-length/array-definition)] | |
[READONLY]
|
|
[IS
operand]
|
|
END-PROPERTY
|
Properties sind Attribute eines Objekts, das von Clients aufgerufen werden kann. Ein
Objekt, das einen Angestellten darstellt, kann zum Beispiel eine Property mit Namen
Name und eine andere mit Namen Department haben. Das
Einlesen oder Ändern des Namens oder der Abteilung des Angestellten durch Aufruf der
Property für dessen Namen oder dessen Abteilung ist viel einfacher für einen Client als
eine Method aufzurufen, die den Wert zurückgibt, und eine andere Method aufzurufen, die
den Wert ändert.
Jede Property benötigt eine Variable in der Object Data Area der Klasse, um dessen Wert zu speichern - dies wird als Objektdaten-Variable bezeichnet. Die Property-Definition dient dazu, diese Variable für den Zugriff von Clients freizugeben. Die Property-Definition legt den Namen und das Format der Property fest und verbindet sie mit der Objektdaten-Variable. Im einfachsten Fall übernimmt die Property den Namen und das Format der Objektdaten-Variable selbst. Es ist auch möglich, den Namen und das Format innerhalb bestimmter Grenzen zu überschreiben.
Syntax-Element-Beschreibung:
| Syntax-Element | Beschreibung |
|---|---|
property-name
|
Property-Name:
Dies ist der der Property zuzuweisende Name. Der Property-Name kann maximal bis zu 32 Zeichen enthalten und muss den Natural-Namenskonventionen für Benutzervariablen entsprechen (weitere Informationen finden Sie unter Namenskonventionen für Benutzervariablen). Wenn die Property von Clients verwendet werden soll, die in anderen Programmiersprachen geschrieben sind, sollte der Property-Name so gewählt sein, dass er nicht gegen die für diese Sprachen geltenden Namenskonventionen verstößt. |
format-length/array-definition
|
Property-Format:
Damit wird das Format der Property definiert, wie es von den Clients erkannt wird. Wenn format-length/array-definition weggelassen
wird, wird format-length und
array-definition aus der in der
Wenn format-length/array-definition angegeben
wird, muss diese Angabe unbedingt datenübertragungskompatibel sein, und zwar
zu dem und von dem in operand in der
Im Falle einer Wenn eine Array-Definition angegeben wird, muss sie in den Dimensionen, Ausprägungen pro Dimension, Untergrenzen und Obergrenzen mit der Array-Definition der entsprechenden Objektdaten-Variable übereinstimmen. Dies kommt durch Spezifikation eines Sterns (*) für jede Dimension zum Ausdruck. |
READONLY
|
Schreibschutz für Property-Wert:
Wenn dieses Schlüsselwort angegeben wird, kann der Wert der Property nur
gelesen und nicht gesetzt werden. Das in operand in
der Wenn das Schlüsselwort |
IS
operand
|
IS-Klausel:
Der operand in der Die Wenn die |
END-PROPERTY
|
Das für Natural reservierte Wort END-PROPERTY muss zum Beenden
des Interfaces PROPERTY-Definition benutzt werden.
|
Angenommen die Object Data Area enthält die folgenden Daten-Definitionen:
1 Salary(p7.2) 1 SalaryHistory(p7.2/1:10)
Dann sind die folgenden Property-Definitionen erlaubt:
property Salary end-property property Pay is Salary end-property property Pay(P7.2) is Salary end-property property Pay(N7.2) is Salary end-property property SalaryHistory end-property property OldPay is SalaryHistory(*) end-property property OldPay is SalaryHistory(1:10) end-property property OldPay(P7.2/*) is SalaryHistory(1:10) end-property property OldPay(N7.2/*) is SalaryHistory(*) end-property
Die folgenden Property-Definitionen sind nicht zulässig:
/* Not data transfer-compatible. */ property Pay(L) is Salary end-property /* Not data transfer-compatible. */ property OldPay(L/*) is SalaryHistory(*) end-property /* Not data transfer-compatible. */ property OldPay(L/1:10) is SalaryHistory(1:10) end-property /* Assigns an array to a scalar. */ property OldPay(P7.2) is SalaryHistory(1:10) end-property /* Takes only a sub-array. */ property OldPay(P7.2/3:5) is SalaryHistory(*) end-property /* Index specification omitted in ODA variable SalaryHistory. */ property OldPay is SalaryHistory end-property /* Only asterisk notation allowed in property format specification. */ property OldPay(P7.2/1:10) is SalaryHistory(*) end-property
Die Method-Definition dient zur Definition einer Method für das Interface.
METHOD
method-name
|
|||||
[IS
subprogram-name]
|
|||||
|
|
PARAMETER
|
|
USING
parameter-data-area
|
|
|
| data-definition
|
|||||
END-METHOD
|
|||||
Um das Interface in verschiedenen Klassen wiederverwenden zu können, übernehmen Sie die
Interface-Definition aus einem Copycode und definieren Sie das Subprogramm hinter der
Interface-Definition mit einem METHOD-Statement. Dann können Sie die Method
in verschiedenen Klassen anders implementieren.
| Syntax-Element | Beschreibung |
|---|---|
method-name
|
Method-Name:
Dies ist der der Method zuzuweisende Name. Der Method-Name kann maximal bis zu 32 Zeichen enthalten und muss den Natural-Namenskonventionen für Benutzervariablen entsprechen (weitere Informationen entnehmen Sie dem Abschnitt Namenskonventionen für Benutzervariablen). Er muss pro Interface eindeutig sein. Wenn die Method von Clients verwendet werden soll, die in anderen Programmiersprachen geschrieben sind, sollte der Methoden-Name so gewählt sein, dass er nicht gegen die für diese Sprachen geltenden Namenskonventionen verstößt. |
IS
subprogram-name
|
Name des Subprogramms:
Dies ist der Name des die Method implementierenden Subprogramms. Der Name des
Subprogramms besteht aus bis zu 8 Zeichen. Die Voreinstellung ist
method-name (wenn die |
PARAMETER
|
Parameter-Definition:
Mit dieser Klausel werden die Parameter der Method angegeben; sie hat
dieselbe Syntax wie die Die Parameter müssen mit den Parametern übereinstimmen, die später bei der Implementierung des Subprogramms verwendet werden. Dies wird am besten durch Verwendung einer Parameter Data Area (PDA) gewährleistet. In der Parameter Data Area als Nicht als Der als Als |
END-METHOD
|
Das für Natural reservierte Wort END-METHOD muss zum Beenden
der METHOD-Definition für das Interface benutzt werden.
|