update klassen und methoden

main
Yuliya Rudenko 2024-05-19 17:39:34 +02:00
parent 9e02f2a64c
commit 3f7c67315f
1 changed files with 36 additions and 12 deletions

View File

@ -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
``` ```