INTERFACE
interface-name
|
|
[ EXTERNAL ]
|
|
[ID interface-GUID]
|
|
[property-definition] | |
[method-definition] | |
END-INTERFACE
|
Dieses Dokument 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.
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. |
---|---|
EXTERNAL |
EXTERNAL-Klausel:
Mit der |
ID interface-GUID |
ID-Klausel:
Mit der |
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 Methode 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)] | |
[ID
dispatch-ID]
|
|
[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 Methode
aufzurufen, die den Wert zurückgibt, und eine andere Methode 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.
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. |
ID dispatch-ID |
ID-Klausel:
Mit der Normalerweise weist Natural einem Property automatisch eine
Dispatch-ID zu. Es ist nur dann erforderlich, für ein Property eine bestimmte
Dispatch-ID explizit zu definieren, wenn das Property zu einem Interface mit
einer Die Dispatch-ID ist eine positive Konstante, die nicht Null ist, im Format I4. |
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 Methode für das Interface.
METHOD
method-name
|
|||||
[ID
dispatch-ID]
|
|||||
[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 Methode in verschiedenen
Klassen anders implementieren.
method-name |
Method-Name:
Dies ist der der Methode zuzuweisende Name. Der Methoden-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 Methode 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. |
---|---|
ID dispatch-ID |
ID-Klausel:
Mit der Normalerweise weist Natural einer Methode automatisch eine
Dispatch-ID zu. Es ist nur dann erforderlich, für eine Methode eine bestimmte
Dispatch-ID explizit zu definieren, wenn die Methode zu einem Interface mit
einer Die Dispatch-ID ist eine positive Konstante, die nicht Null ist, im Format I4. |
IS subprogram-name |
Name des Subprogramms:
Dies ist der Name des die Methode 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 Methode 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 |
END-METHOD | Das für Natural reservierte Wort END−METHOD muss
zum Beenden der METHOD -Definition für das Interface benutzt
werden.
|