Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
d8986e9
New translations classes.md (German)
arnaud4d Dec 23, 2020
394b522
New translations classClass.md (German)
arnaud4d Dec 23, 2020
a1c0e82
New translations classClass.md (Japanese)
arnaud4d Dec 23, 2020
e652c67
New translations classes.md (French)
arnaud4d Dec 23, 2020
59bc6e1
New translations classClass.md (French)
arnaud4d Dec 23, 2020
1aea864
New translations classClass.md (Spanish)
arnaud4d Dec 23, 2020
68a7e92
New translations classes.md (Spanish)
arnaud4d Dec 23, 2020
cbfbba2
New translations classes.md (Japanese)
arnaud4d Dec 23, 2020
a462e94
New translations classes.md (Portuguese)
arnaud4d Dec 23, 2020
d11acd2
New translations classClass.md (Portuguese)
arnaud4d Dec 23, 2020
8bca235
New translations $catalog.md (Japanese)
arnaud4d Dec 24, 2020
34b971c
New translations $info.md (Japanese)
arnaud4d Dec 24, 2020
4817212
New translations REST_requests.md (Japanese)
arnaud4d Dec 24, 2020
910b610
New translations {dataClass}.md (Japanese)
arnaud4d Dec 24, 2020
96648b6
New translations genInfo.md (Japanese)
arnaud4d Dec 24, 2020
f54f56d
New translations manData.md (Japanese)
arnaud4d Dec 24, 2020
ef0407f
New translations $catalog.md (Japanese)
arnaud4d Dec 24, 2020
2b85b28
New translations $entityset.md (Japanese)
arnaud4d Dec 24, 2020
275e0cf
New translations $method.md (Japanese)
arnaud4d Dec 24, 2020
b4839c2
New translations {dataClass}.md (Japanese)
arnaud4d Dec 24, 2020
05a4c39
New translations en.json (Japanese)
arnaud4d Dec 24, 2020
bb2dc8c
New translations dataclassClass.md (Japanese)
arnaud4d Dec 24, 2020
b7595a7
New translations $catalog.md (Japanese)
arnaud4d Dec 24, 2020
0aa4b7e
New translations {dataClass}.md (Japanese)
arnaud4d Dec 24, 2020
7d330c8
New translations $catalog.md (Japanese)
arnaud4d Dec 25, 2020
e162dd8
New translations $catalog.md (Japanese)
arnaud4d Dec 25, 2020
e7150c6
New translations $catalog.md (Japanese)
arnaud4d Dec 25, 2020
2920beb
New translations $catalog.md (Japanese)
arnaud4d Dec 25, 2020
173cecc
New translations forms.md (French)
arnaud4d Dec 28, 2020
668d130
New translations forms.md (French)
arnaud4d Dec 28, 2020
7f5c095
New translations onAfterSort.md (French)
arnaud4d Dec 28, 2020
c71f6b6
New translations onBeforeDataEntry.md (French)
arnaud4d Dec 28, 2020
0478cf7
New translations onBeginUrlLoading.md (French)
arnaud4d Dec 28, 2020
b35730d
New translations onBoundVariableChange.md (French)
arnaud4d Dec 28, 2020
fe8c8e2
New translations onColumnMoved.md (French)
arnaud4d Dec 28, 2020
6d1a29c
New translations onFooterClick.md (French)
arnaud4d Dec 28, 2020
015a4a5
New translations onAlternativeClick.md (French)
arnaud4d Dec 28, 2020
930cc60
New translations onCloseBox.md (French)
arnaud4d Dec 28, 2020
e51dc5b
New translations onCloseDetail.md (French)
arnaud4d Dec 28, 2020
1628cd5
New translations onDisplayDetail.md (French)
arnaud4d Dec 28, 2020
1737c66
New translations onOpenDetail.md (French)
arnaud4d Dec 28, 2020
f551ef3
New translations onHeaderClick.md (French)
arnaud4d Dec 28, 2020
26c5616
New translations onPrintingFooter.md (French)
arnaud4d Dec 28, 2020
6f11838
New translations onPrintingDetail.md (French)
arnaud4d Dec 28, 2020
e28657d
New translations onPrintingBreak.md (French)
arnaud4d Dec 28, 2020
cdbedd0
New translations onOpenDetail.md (French)
arnaud4d Dec 28, 2020
afebfe3
New translations onLoadRecord.md (French)
arnaud4d Dec 28, 2020
012a1b7
New translations onHeader.md (French)
arnaud4d Dec 28, 2020
ff43c53
New translations onCloseDetail.md (French)
arnaud4d Dec 28, 2020
5b33b76
New translations onExpand.md (French)
arnaud4d Dec 28, 2020
de8627f
New translations onDisplayDetail.md (French)
arnaud4d Dec 28, 2020
95e2418
New translations onDeleteAction.md (French)
arnaud4d Dec 28, 2020
98e5b2a
New translations onDeactivate.md (French)
arnaud4d Dec 28, 2020
7bcedf2
New translations onDataChange.md (French)
arnaud4d Dec 28, 2020
65a8360
New translations onColumnResize.md (French)
arnaud4d Dec 28, 2020
c6096d6
New translations onCollapse.md (French)
arnaud4d Dec 28, 2020
5d59e80
New translations onDisplayDetail.md (French)
arnaud4d Dec 28, 2020
f48c0b3
New translations onHeader.md (French)
arnaud4d Dec 28, 2020
177f3df
New translations onOpenDetail.md (French)
arnaud4d Dec 28, 2020
d471dc2
New translations onAfterSort.md (French)
arnaud4d Dec 29, 2020
28c49d6
New translations onColumnMoved.md (French)
arnaud4d Dec 29, 2020
a309d80
New translations onDoubleClicked.md (French)
arnaud4d Dec 29, 2020
ac654ad
New translations onColumnMoved.md (French)
arnaud4d Dec 29, 2020
7450445
New translations onDragOver.md (French)
arnaud4d Dec 29, 2020
742b65e
New translations onDragOver.md (French)
arnaud4d Dec 29, 2020
3d3d0a7
New translations onDrop.md (French)
arnaud4d Dec 30, 2020
110a92b
New translations onEndUrlLoading.md (French)
arnaud4d Dec 30, 2020
20a3dc1
New translations listbox_overview.md (French)
arnaud4d Dec 30, 2020
76f30e6
New translations onBeforeDataEntry.md (French)
arnaud4d Dec 30, 2020
1b02314
New translations onExpand.md (French)
arnaud4d Dec 30, 2020
a25c4c7
New translations onFooterClick.md (French)
arnaud4d Dec 30, 2020
991e62c
New translations onGettingFocus.md (French)
arnaud4d Dec 30, 2020
22a8e07
New translations onHeader.md (French)
arnaud4d Dec 30, 2020
1ee7e89
New translations onLoadRecord.md (French)
arnaud4d Dec 30, 2020
916e741
New translations onLongClick.md (French)
arnaud4d Dec 30, 2020
e4546d1
New translations onLosingFocus.md (French)
arnaud4d Dec 30, 2020
66f0b2a
New translations onMenuSelected.md (French)
arnaud4d Dec 30, 2020
4308654
New translations onMouseEnter.md (French)
arnaud4d Dec 30, 2020
c1c0a87
New translations onMouseLeave.md (French)
arnaud4d Dec 30, 2020
e86456d
New translations onMouseMove.md (French)
arnaud4d Dec 30, 2020
b61815a
New translations onMouseLeave.md (French)
arnaud4d Dec 30, 2020
7fce3d4
New translations onMouseMove.md (French)
arnaud4d Dec 30, 2020
9a5b300
New translations onMouseUp.md (French)
arnaud4d Dec 30, 2020
8f73699
New translations onPrintingFooter.md (French)
arnaud4d Dec 30, 2020
26cc5c1
New translations onVpReady.md (French)
arnaud4d Dec 30, 2020
ef5c8e5
New translations onVpRangeChanged.md (French)
arnaud4d Dec 30, 2020
4b598b5
New translations onUrlFiltering.md (French)
arnaud4d Dec 30, 2020
0c0e8f8
New translations onTimer.md (French)
arnaud4d Dec 30, 2020
e2e960c
New translations onSelectionChange.md (French)
arnaud4d Dec 30, 2020
2dc0125
New translations onRowResize.md (French)
arnaud4d Dec 30, 2020
5235ebf
New translations onRowMoved.md (French)
arnaud4d Dec 30, 2020
febb448
New translations onResize.md (French)
arnaud4d Dec 30, 2020
515089c
New translations onPrintingDetail.md (French)
arnaud4d Dec 30, 2020
77ab408
New translations onPrintingBreak.md (French)
arnaud4d Dec 30, 2020
789ca2f
New translations onPlugInArea.md (French)
arnaud4d Dec 30, 2020
96ec974
New translations onPageChange.md (French)
arnaud4d Dec 30, 2020
24bdefb
New translations onOutsideCall.md (French)
arnaud4d Dec 30, 2020
c25cf59
New translations onOpenExternalLink.md (French)
arnaud4d Dec 30, 2020
6d59866
New translations onOpenDetail.md (French)
arnaud4d Dec 30, 2020
1b55025
New translations onMouseUp.md (French)
arnaud4d Dec 30, 2020
b57c0dc
New translations onDragOver.md (French)
arnaud4d Dec 30, 2020
19aa604
New translations onWindowOpeningDenied.md (French)
arnaud4d Dec 30, 2020
dc2b490
New translations onUnload.md (French)
arnaud4d Dec 30, 2020
d9a5990
New translations onWindowOpeningDenied.md (French)
arnaud4d Dec 30, 2020
af7de46
New translations onVpReady.md (French)
arnaud4d Dec 30, 2020
78badd9
New translations onValidate.md (French)
arnaud4d Dec 30, 2020
3d43851
New translations onUrlResourceLoading.md (French)
arnaud4d Dec 30, 2020
cbb3bbc
New translations onUrlLoadingError.md (French)
arnaud4d Dec 30, 2020
f03fa3c
New translations onUrlFiltering.md (French)
arnaud4d Dec 30, 2020
b20ad85
New translations onTimer.md (French)
arnaud4d Dec 30, 2020
c7a1c69
New translations onSelectionChange.md (French)
arnaud4d Dec 30, 2020
9804c60
New translations onScroll.md (French)
arnaud4d Dec 30, 2020
b0aad58
New translations onLoad.md (French)
arnaud4d Dec 30, 2020
2db4909
New translations overview.md (French)
arnaud4d Dec 30, 2020
6465174
New translations onAlternativeClick.md (French)
arnaud4d Dec 30, 2020
3416cf3
New translations onDragOver.md (French)
arnaud4d Dec 30, 2020
922f470
New translations onHeaderClick.md (French)
arnaud4d Dec 30, 2020
7a40091
New translations onRowResize.md (French)
arnaud4d Dec 30, 2020
e59485d
New translations onSelectionChange.md (French)
arnaud4d Dec 30, 2020
544f088
New translations overview.md (French)
arnaud4d Dec 30, 2020
11d65b8
New translations onAlternativeClick.md (French)
arnaud4d Dec 30, 2020
f7abb91
New translations onBeginDragOver.md (French)
arnaud4d Dec 30, 2020
3db64f3
New translations onClicked.md (French)
arnaud4d Dec 30, 2020
cb626ec
New translations onColumnResize.md (French)
arnaud4d Dec 30, 2020
19108cc
New translations onDoubleClicked.md (French)
arnaud4d Dec 30, 2020
e7471d9
New translations onDragOver.md (French)
arnaud4d Dec 30, 2020
cb55ca0
New translations onDrop.md (French)
arnaud4d Dec 30, 2020
4bd55d5
New translations onClicked.md (French)
arnaud4d Dec 30, 2020
491b57f
New translations onDoubleClicked.md (French)
arnaud4d Dec 30, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion website/i18n/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"title": "DataClassAttribute"
},
"API/dataclassClass": {
"title": "DataClass"
"title": "データクラス"
},
"API/datastoreClass": {
"title": "DataStore"
Expand Down
36 changes: 29 additions & 7 deletions website/translated_docs/de/API/classClass.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,32 +52,54 @@ This property is **read-only**.
</details>

<!-- REF #classClass.new().Syntax -->
**.new()** : 4D.Class<!-- END REF -->
**.new**( *param* : any { *;...paramN* } ) : 4D.Class<!-- END REF -->

<!-- REF #classClass.new().Params -->
| Parameter | Typ | | Beschreibung |
| --------- | -------- |:--:| ----------------------- |
| Ergebnis | 4D.Class | <- | New object of the class |
| Parameter | Typ | | Beschreibung |
| --------- | -------- |:--:| ------------------------------------------------ |
| param | any | -> | Parameter(s) to pass to the constructor function |
| Ergebnis | 4D.Class | <- | New object of the class |
<!-- END REF -->


#### Beschreibung

The `.new()` function <!-- REF #classClass.new().Summary -->creates and returns a `cs.className` object which is a new instance of the class on which it is called<!-- END REF -->. This function is automatically available on all classes from the [`cs` class store](Concepts/classes.md#cs).

Wird sie in einer nicht-vorhandenen Klasse aufgerufen, wird ein Fehler zurückgegeben.
You can pass one or more optional *param* parameters, which will be passed to the [class constructor](Concepts/classes.md#class-constructor) function (if any) in the className class definition. Within the constructor function, the [`This`](Concepts/classes.md#this) is bound to the new object being constructed.

If `.new()` is called on a non-existing class, an error is returned.

#### Beispiel
#### Beispiele

Eine neue Instanz der Klasse Person anlegen:

```4d
var $person : cs.Person
$person:=cs.Person.new() //create the new instance
//$Person contains functions of the class
//$person contains functions of the class
```

To create a new instance of the Person class with parameters:

```4d
//Class: Person.4dm
Class constructor($firstname : Text; $lastname : Text; $age : Integer)
This.firstName:=$firstname
This.lastName:=$lastname
This.age:=$age
```

```4d
//In a method
var $person : cs.Person
$person:=cs.Person.new("John";"Doe";40)
//$person.firstName = "John"
//$person.lastName = "Doe"
//$person.age = 40
```


<!-- END REF -->


Expand Down
101 changes: 41 additions & 60 deletions website/translated_docs/de/Concepts/classes.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,19 @@ Sie können z. B. eine Klasse `Person` mit folgender Definition erstellen:
Class constructor($firstname : Text; $lastname : Text)
This.firstName:=$firstname
This.lastName:=$lastname

Function sayHello()->$welcome : Text
$welcome:="Hello "+This.firstName+" "+This.lastName
```

In einer Methode erstellen Sie eine "Person":

```
var $o : cs.Person //object of Person class
$o:=cs.Person.new("John";"Doe")
// $o:{firstName: "John"; lastName: "Doe" }
var $person : cs.Person //object of Person class
var $hello : Text
$person:=cs.Person.new("John";"Doe")
// $person:{firstName: "John"; lastName: "Doe" }
$hello:=$person.sayHello() //"Hello John Doe"
```


Expand All @@ -39,7 +44,7 @@ Eine Benutzerklasse in 4D wird über eine spezifische Datei Methode (.4dm) defin

Beim Benennen von Klassen müssen Sie folgende Regeln beachten:

- Ein Klassenname muss mit den [ Schreibregeln für Eigenschaftsnamen](Concepts/dt_object.md#identifier-für-objekteigenschaft) konform sein.
- A [class name](identifiers.md#classes) must be compliant with [property naming rules](identifiers.md#object-properties).
- Es wird zwischen Groß- und Kleinschreibung unterschieden.
- Um Konflikte zu vermeiden, sollten Sie für eine Klasse und eine Tabelle in derselben Anwendung unterschiedliche Namen verwenden.

Expand Down Expand Up @@ -81,7 +86,7 @@ Um eine neue Klasse zu erstellen:

#### Unterstützung von Code für Klassen

In verschiedenen 4D Entwicklerfenstern (Code-Editor, Compiler, Debugger, Runtime-Explorer) wird Code für Klassen im allgemeinen wie eine Projektmethode mit einigen spezifischen Merkmalen verwaltet:
In the various 4D windows (code editor, compiler, debugger, runtime explorer), class code is basically handled like a project method with some specificities:

- Im Code-Editor gilt folgendes:
- Klassen können nicht direkt ausgeführt werden
Expand Down Expand Up @@ -136,57 +141,32 @@ $key:=4D.CryptoKey.new(New object("type";"ECDSA";"curve";"prime256v1"))



## Klassen in Ihrem Code verwenden


### Objekt class
## Objekt Class

Ist in einem Projekt eine Klasse [definiert](#eine-klasse-definieren), wird sie in die 4D Programmiersprache Umgebung geladen. Eine Klasse ist selbst ein Objekt der Klasse ["class"](API/classClass.md). Ein Objekt class hat folgende Eigenschaften und Funktionen:

- String [`name`](API/classClass.md#name)
- Objekt [`superclass`](API/classClass.md#superclass) (optional, null, wenn nicht vorhanden)
- Funktion [`new()`](API/classClass.md#new), um Instanzen der Objekte einer Klasse zu setzen.

Zusätzlich kann ein Objekt class verweisen auf:

- Ein Objekt [`constructor`](#class-constructor) (optional),
- Ein Objekt `prototype` mit Objektnamen [function](#function) (optional).
In addition, a class object can reference a [`constructor`](#class-constructor) object (optional).

Ein Objekt class ist ein [shared object](shared.md), d. h. es lässt sich aus verschiedenen 4D Prozessen gleichzeitig darauf zugreifen.

### Inheritance

If a class inherits from another class (i.e. the [Class extends](classes.md#class-extends-classname) keyword is used in its definition), the parent class is its [`superclass`](API/classClass.md#superclass).

### Nach Eigenschaft suchen und Prototyp

Alle Objekte in 4D sind intern an ein Objekt class gebunden. Findet 4D eine Eigenschaft nicht in einem Objekt, sucht es im Objekt Prototyp seiner Klasse; wird sie hier nicht gefunden, sucht 4D weiter im Objekt prototype seiner Superklasse, usw. bis es keine Superklasse mehr gibt.

Alle Objekte erben vom Objekt class als ihrer obersten Klasse im Vererbungsbaum.

```4d
//Class: Polygon
Class constructor($width : Integer; $height : Integer)
This.area:=$width*$height

//var $poly : Object
var $instance : Boolean
$poly:=cs.Polygon.new(4;3)

$instance:=OB Instance of($poly;cs.Polygon)
// true
$instance:=OB Instance of($poly;4D.Object)
// true
```

Beim Aufzählen der Eigenschaften eines Objekts wird der Prototyp seiner Klasse nicht mitgezählt. Demzufolge geben die Anweisung `For each` und der Befehl `JSON Stringify` nicht Eigenschaften des Objekts prototype der Klasse zurück. Die Eigenschaft des Objekts prototype einer Klasse ist eine interne ausgeblendete Eigenschaft.

When 4D does not find a function or a property in a class, it searches it in its [`superclass`](API/classClass.md#superclass); if not found, 4D continues searching in the superclass of the superclass, and so on until there is no more superclass (all objects inherit from the "Object" superclass).


## Schlüsselwörter für Klassen

In der Definition von Klassen lassen sich spezifische 4D Schlüsselwörter verwenden:

- `Function <Name>` zum Definieren von Member Methods der Objekte.
- `Class constructor` zum Definieren der Eigenschaften der Objekte (z.B. Prototype).
- `Function <Name>` to define class functions of the objects.
- `Class constructor` to define the properties of the objects.
- `Class extends <ClassName>` zum Definieren der Vererbung.


Expand All @@ -199,13 +179,13 @@ Function <name>({$parameterName : type; ...}){->$parameterName : type}
// code
```

Class Functions sind Eigenschaften des Objekts Prototype der Klasse des Eigentümers. Das sind Objekte der Klasse "Function".
Class functions are specific properties of the class. They are objects of the [4D.Function](API/formulaClass.md#about-4dfunction-objects) class.

In der Datei mit der Definition der Klasse verwenden Function Deklarationen das Schlüsselwort `Function` und den Namen von Function. Ein Klassenname muss mit den [ Schreibregeln für Eigenschaftsnamen](Concepts/dt_object.md#identifier-für-objekteigenschaft) konform sein.
In der Datei mit der Definition der Klasse verwenden Function Deklarationen das Schlüsselwort `Function` und den Namen von Function. The function name must be compliant with [property naming rules](Concepts/identifiers.md#object-properties).

> **Tipp:** Namen, die mit einem Unterstrich (_) beginnen, werden beim automatischen Vervollständigen (autocompletion) im 4D Code-Editor unterdrückt und nicht vorgeschlagen. Schreiben Sie z.B. `Function _myPrivateFunction` in `MyClass`, wird das nicht im Code-Editor vorgeschlagen, wenn Sie `"cs.MyClass` eingeben.

Direkt nach dem Namen von Function lassen sich passende [Parameter](#parameter) angeben mit zugewiesenem Namen und Datentyp, inkl. Rückgabeparameter (optional). Beispiel:
Direkt nach dem Namen von Function lassen sich passende [Parameter](#parameters) angeben mit zugewiesenem Namen und Datentyp, inkl. Rückgabeparameter (optional). Beispiel:

```4d
Function computeArea($width : Integer; $height : Integer)->$area : Integer
Expand All @@ -226,19 +206,19 @@ Der Befehl `Current method name` gibt für eine Class Function zurück: "*\<Clas

Im Code der Anwendung werden Class Functions als Member Methods der Instanz des Objekts aufgerufen und können [Parameter](#parameter) empfangen, falls vorhanden. Folgende Syntaxarten werden unterstützt

- Verwendung des Operators `()` Zum Beispiel, `myObject.methodName("hello")`
- Verwendung einer Class Member Method "Function":
- `apply()`
- `call()`
- Verwendung des Operators `()` For example, `myObject.methodName("hello")`
- use of a "4D.Function" class member method:
- [`apply()`](API/formulaClass.md#apply)
- [`call()`](API/formulaClass.md#call)

> **Thread-Safety Warnung:** Ist eine Class Function nicht thread-safe und wird mit einer Methode mit der Option "In preemptive Prozess starten" aufgerufen:</br> - generiert der Compiler keinen Fehler (im Unterschied zu regulären Methoden),</br> - Gibt 4D nur im laufenden Betrieb einen Fehler aus.
> **Thread-safety warning:** If a class function is not thread-safe and called by a method with the "Can be run in preemptive process" attribute: - the compiler does not generate any error (which is different compared to regular methods), - an error is thrown by 4D only at runtime.




#### Parameter
#### Parameters

Function Parameter werden mit Name und Typ des Parameters, getrennt durch Strichpunkt, deklariert. Der Parametername muss mit den [Schreibregeln für Eigenschaftsnamen](Concepts/dt_object.md#identifier-f%C3%BCr-objekteigenschaft) konform sein. Mehrere Parameter (und Typen) werden durch Strichpunkte (;) voneinander getrennt.
Function parameters are declared using the parameter name and the parameter type, separated by a colon. The parameter name must be compliant with [property naming rules](Concepts/identifiers.md#object-properties). Mehrere Parameter (und Typen) werden durch Strichpunkte (;) voneinander getrennt.

```4d
Function add($x; $y : Variant; $z : Integer; $xy : Object)
Expand Down Expand Up @@ -306,13 +286,13 @@ Class Constructor({$parameterName : type; ...})

Eine Function Class Constructor, die [Parameter](#parameters) zulässt, lässt sich zum Definieren einer Benutzerklasse verwenden.

In diesem Fall wird der Class Constructur beim Aufrufen der Class Member Method `new()` mit den Parametern aufgerufen, die optional in der Function `new()` übergeben wurden.
In that case, when you call the [`new()`](API/classClass.md#new) function, the class constructor is called with the parameters optionally passed to the `new()` function.

Für eine Class Constructor Function gibt der Befehl `Current method name` zurück: "*\<ClassName>.constructor*", z.B. "MyClass.constructor".
For a class constructor function, the `Current method name` command returns: "*\<ClassName>.constructor*", for example "MyClass.constructor".



#### Beispiel:
#### Example:

```4d
// Class: MyClass
Expand Down Expand Up @@ -341,7 +321,7 @@ $o:=cs.MyClass.new("HelloWorld")
Class extends <ParentClass>
```

Das Schlüsselwort `Class extends` dient in der Deklaration der Klasse zum Erstellen einer Benutzerklasse, die eine Unterklasse einer anderen Benutzerklasse ist. Die Unterklasse erbt alle Functions der übergeordneten Klasse.
The `Class extends` keyword is used in class declaration to create a user class which is a child of another user class. Die Unterklasse erbt alle Functions der übergeordneten Klasse.

Für Class Extension gelten folgende Regeln:

Expand Down Expand Up @@ -497,34 +477,35 @@ Das Schlüsselwort `This` gibt eine Referenz auf das gerade bearbeitete Objekt z

In den meisten Fällen bestimmt der Wert von `This`, wie eine Function aufgerufen wird. Es lässt sich während der Ausführung nicht per Zuweisung setzen und kann bei jedem Aufrufen der Funktion anders sein.

Wird eine Formel als Member Method eines Objekts aufgerufen, wird das dazugehörige `This` auf das Objekt gesetzt, wo die Methode aufgerufen wird. Zum Beispiel:
Wird eine Formel als Member Method eines Objekts aufgerufen, wird das dazugehörige `This` auf das Objekt gesetzt, wo die Methode aufgerufen wird. For example:

```4d
$o:=New object("prop";42;"f";Formula(This.prop))
$val:=$o.f() //42
```

Mit der Function [Class Constructor](#class-constructor) (mit der Methode `new()`) wird das dazugehörige `This` an das neue Objekt in Konstruktion gebunden.
When a [class constructor](#class-constructor) function is used (with the [`new()`](API/classClass.md#new) function), its `This` is bound to the new object being constructed.

```4d
//Class: ob
//Class: ob

Class Constructor

// Create properties on This as
// desired by assigning to them
This.a:=42
This.a:=42
```

```4d
// in a 4D method
// in a 4D method
$o:=cs.ob.new()
$val:=$o.a //42
```

> Wird der Superclass Constructor in einem Constructor über das Schlüsselwort [Super](#super) aufgerufen, müssen Sie darauf achten, dass `This` nicht vor dem Superclass Constructor aufgerufen wird, sonst wird ein Fehler generiert. Siehe [dieses Beispiel](#beispiel-1-1).
> When calling the superclass constructor in a constructor using the [Super](#super) keyword, keep in mind that `This` must not be called before the superclass constructor, otherwise an error is generated. See [this example](#example-1).


In jedem Fall bezieht sich `This` auf das Objekt, in dem die Methode aufgerufen wurde, als ob die Methode im Objekt wäre.
In any cases, `This` refers to the object the method was called on, as if the method were on the object.

```4d
//Class: ob
Expand All @@ -533,15 +514,15 @@ Function f()
$0:=This.a+This.b
```

Dann können Sie in einer Projektmethode schreiben:
Then you can write in a project method:

```4d
$o:=cs.ob.new()
$o.a:=5
$o.b:=3
$val:=$o.f() //8
```
In diesem Beispiel hat das der Variablen $o zugewiesene Objekt keine eigene Eigenschaft *f*, sondern erbt sie von der dazugehörigen Klasse. Da *f* als eine Methode von $o, aufgerufen wird, bezieht sich das dazugehörige `This` auf $o.
In this example, the object assigned to the variable $o doesn't have its own *f* property, it inherits it from its class. Da *f* als eine Methode von $o, aufgerufen wird, bezieht sich das dazugehörige `This` auf $o.


## Befehle für Klassen
Expand Down
36 changes: 29 additions & 7 deletions website/translated_docs/es/API/classClass.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,32 +52,54 @@ This property is **read-only**.
</details>

<!-- REF #classClass.new().Syntax -->
**.new()** : 4D.Class<!-- END REF -->
**.new**( *param* : any { *;...paramN* } ) : 4D.Class<!-- END REF -->

<!-- REF #classClass.new().Params -->
| Parameter | Type | | Description |
| --------- | -------- |:--:| ----------------------- |
| Result | 4D.Class | <- | New object of the class |
| Parameter | Type | | Description |
| --------- | -------- |:--:| ------------------------------------------------ |
| param | any | -> | Parameter(s) to pass to the constructor function |
| Result | 4D.Class | <- | New object of the class |
<!-- END REF -->


#### Description

The `.new()` function <!-- REF #classClass.new().Summary -->creates and returns a `cs.className` object which is a new instance of the class on which it is called<!-- END REF -->. This function is automatically available on all classes from the [`cs` class store](Concepts/classes.md#cs).

If it is called on a non-existing class, an error is returned.
You can pass one or more optional *param* parameters, which will be passed to the [class constructor](Concepts/classes.md#class-constructor) function (if any) in the className class definition. Within the constructor function, the [`This`](Concepts/classes.md#this) is bound to the new object being constructed.

If `.new()` is called on a non-existing class, an error is returned.

#### Example
#### Examples

To create a new instance of the Person class:

```4d
var $person : cs.Person
$person:=cs.Person.new() //create the new instance
//$Person contains functions of the class
//$person contains functions of the class
```

To create a new instance of the Person class with parameters:

```4d
//Class: Person.4dm
Class constructor($firstname : Text; $lastname : Text; $age : Integer)
This.firstName:=$firstname
This.lastName:=$lastname
This.age:=$age
```

```4d
//In a method
var $person : cs.Person
$person:=cs.Person.new("John";"Doe";40)
//$person.firstName = "John"
//$person.lastName = "Doe"
//$person.age = 40
```


<!-- END REF -->


Expand Down
Loading