update klassen und methoden
parent
9e02f2a64c
commit
3f7c67315f
|
@ -1,6 +1,7 @@
|
||||||
## Klassen
|
## Klassen
|
||||||
|
|
||||||
- Definition einer Klasse
|
- Definition einer Klasse
|
||||||
|
|
||||||
Klassen in Groovy werden ähnlich wie in Java definiert, jedoch mit einigen
|
Klassen in Groovy werden ähnlich wie in Java definiert, jedoch mit einigen
|
||||||
syntaktischen Erleichterungen
|
syntaktischen Erleichterungen
|
||||||
|
|
||||||
|
@ -13,6 +14,7 @@ Beispiel
|
||||||
```
|
```
|
||||||
|
|
||||||
- Eigenschaften
|
- Eigenschaften
|
||||||
|
|
||||||
Eigenschaften können direkt als Felder definiert werden. Groovy
|
Eigenschaften können direkt als Felder definiert werden. Groovy
|
||||||
generiert automatisch Getter- und Setter-Methoden (wie in Ruby)
|
generiert automatisch Getter- und Setter-Methoden (wie in Ruby)
|
||||||
|
|
||||||
|
@ -26,6 +28,7 @@ println person.name
|
||||||
//John
|
//John
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Getter und Setter können aber auch manuell überschrieben werden
|
Getter und Setter können aber auch manuell überschrieben werden
|
||||||
|
|
||||||
Beispiel
|
Beispiel
|
||||||
|
@ -61,6 +64,7 @@ static void(args) {
|
||||||
```
|
```
|
||||||
|
|
||||||
- Konstruktoren
|
- Konstruktoren
|
||||||
|
|
||||||
Groovy fügt automatisch einen Standardkonstruktor hinzu. Man kann auch
|
Groovy fügt automatisch einen Standardkonstruktor hinzu. Man kann auch
|
||||||
benutzerdefinierte Konstruktoren definieren.
|
benutzerdefinierte Konstruktoren definieren.
|
||||||
```
|
```
|
||||||
|
@ -76,6 +80,7 @@ class Person {
|
||||||
```
|
```
|
||||||
|
|
||||||
- Standardkonstruktor mit Map
|
- Standardkonstruktor mit Map
|
||||||
|
|
||||||
Groovy bietet eine spezielle Initialisierungsform mit einer Map an
|
Groovy bietet eine spezielle Initialisierungsform mit einer Map an
|
||||||
```
|
```
|
||||||
Person person = new Person(name: 'John', age: 30)
|
Person person = new Person(name: 'John', age: 30)
|
||||||
|
@ -84,6 +89,7 @@ class Person {
|
||||||
## Methoden
|
## Methoden
|
||||||
|
|
||||||
- Definition einer Methode
|
- Definition einer Methode
|
||||||
|
|
||||||
Methoden werden ähnlich wie in Java definiert, können aber optional einen Rückgabetyp
|
Methoden werden ähnlich wie in Java definiert, können aber optional einen Rückgabetyp
|
||||||
haben
|
haben
|
||||||
```
|
```
|
||||||
|
@ -94,7 +100,9 @@ haben
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
In Groovy können Methoden direkt ohne Klasse und main-Methode definiert und aufgerufen werden.
|
In Groovy können Methoden direkt ohne Klasse und main-Methode definiert und aufgerufen
|
||||||
|
werden.
|
||||||
|
|
||||||
|
|
||||||
Beispiel 1
|
Beispiel 1
|
||||||
```
|
```
|
||||||
|
@ -114,6 +122,7 @@ sum(5,2)
|
||||||
```
|
```
|
||||||
|
|
||||||
- Instanzmethoden
|
- Instanzmethoden
|
||||||
|
|
||||||
Methoden können Instanzmethoden sein und auf Instanzvariablen zugreifen.
|
Methoden können Instanzmethoden sein und auf Instanzvariablen zugreifen.
|
||||||
```
|
```
|
||||||
class Method {
|
class Method {
|
||||||
|
@ -146,8 +155,10 @@ class MathUtils {
|
||||||
```
|
```
|
||||||
|
|
||||||
- Dynamische Methoden
|
- Dynamische Methoden
|
||||||
|
|
||||||
Groovy erlaubt es, Methoden zur Laufzeit hinzuzufügen.
|
Groovy erlaubt es, Methoden zur Laufzeit hinzuzufügen.
|
||||||
In diesem Beispiel wird die Methode sayHello zur Klasse DynamicExample hinzugefügt, nachdem die Klasse bereits definiert wurde
|
In diesem Beispiel wird die Methode sayHello zur Klasse DynamicExample hinzugefügt, nachdem
|
||||||
|
die Klasse bereits definiert wurde
|
||||||
|
|
||||||
Beispiel
|
Beispiel
|
||||||
```
|
```
|
||||||
|
@ -161,7 +172,10 @@ example.sayHello()
|
||||||
```
|
```
|
||||||
|
|
||||||
- Expando
|
- Expando
|
||||||
Ist eine spezielle Klassen in Groovy, die ermöglicht Objekten zur Laufzeit dynamisch Methoden und Eigenschaften hinzuzufügen. Dadurch ist die vorherige Deklaration der Felder in der Klasse nicht nötig
|
|
||||||
|
Ist eine spezielle Klassen in Groovy, die ermöglicht Objekten zur Laufzeit dynamisch
|
||||||
|
Methoden und Eigenschaften hinzuzufügen. Dadurch ist die vorherige Deklaration der Felder
|
||||||
|
in der Klasse nicht nötig
|
||||||
|
|
||||||
Beispiel
|
Beispiel
|
||||||
```
|
```
|
||||||
|
@ -179,6 +193,7 @@ expando.sayHello() // Ausgabe: Hello from Groovy
|
||||||
```
|
```
|
||||||
|
|
||||||
- Default-Parameterwerte
|
- Default-Parameterwerte
|
||||||
|
|
||||||
Methodenparameter können Standdardwerte haben(wie in Ruby)
|
Methodenparameter können Standdardwerte haben(wie in Ruby)
|
||||||
|
|
||||||
Beispiel 1
|
Beispiel 1
|
||||||
|
@ -191,6 +206,7 @@ class Greeter {
|
||||||
```
|
```
|
||||||
|
|
||||||
Ruft man die Methode ohne Parameter auf, werden die Default-Paramter eingesetzt
|
Ruft man die Methode ohne Parameter auf, werden die Default-Paramter eingesetzt
|
||||||
|
|
||||||
Beispiel 2
|
Beispiel 2
|
||||||
```
|
```
|
||||||
def sum(int a=10, int b=3) {
|
def sum(int a=10, int b=3) {
|
||||||
|
@ -202,7 +218,10 @@ sum()
|
||||||
|
|
||||||
|
|
||||||
- Closures
|
- Closures
|
||||||
Closures können auf Variablen aus ihrem umgebenden Gültigkeitsbereich zugreifen und diese „einfangen“. Dadurch können sie auf Werte zugreifen, die zum Zeitpunkt ihrer Erstellung existierten.
|
|
||||||
|
Closures können auf Variablen aus ihrem umgebenden Gültigkeitsbereich zugreifen und diese
|
||||||
|
„einfangen“. Dadurch können sie auf Werte zugreifen, die zum Zeitpunkt ihrer Erstellung
|
||||||
|
existierten.
|
||||||
|
|
||||||
1. Parameter
|
1. Parameter
|
||||||
```
|
```
|
||||||
|
@ -251,8 +270,10 @@ println myList.collect { item -> item * 2 } // [2, 4, 6, 8, 10]
|
||||||
```
|
```
|
||||||
|
|
||||||
- Methodenverkettung
|
- Methodenverkettung
|
||||||
|
|
||||||
Durch das Rückgeben von this kann man Methodenaufrufe verketten.
|
Durch das Rückgeben von this kann man Methodenaufrufe verketten.
|
||||||
|
|
||||||
|
|
||||||
Beispiel
|
Beispiel
|
||||||
```
|
```
|
||||||
class FluentPerson {
|
class FluentPerson {
|
||||||
|
@ -273,8 +294,11 @@ class FluentPerson {
|
||||||
def person = new FluentPerson().setName("John").setAge(30)
|
def person = new FluentPerson().setName("John").setAge(30)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
- Mixin(Misching)
|
- Mixin(Misching)
|
||||||
Man kann Funktionalität zu Klassen hinzufügen, ohne Vererbung zu verwenden, indem man Mixins verwendet.
|
|
||||||
|
Man kann Funktionalität zu Klassen hinzufügen, ohne Vererbung zu verwenden, indem man
|
||||||
|
Mixins verwendet.
|
||||||
|
|
||||||
Beispiel
|
Beispiel
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in New Issue