diff --git a/klassen&methoden.md b/klassen&methoden.md index 44e3617..de47480 100644 --- a/klassen&methoden.md +++ b/klassen&methoden.md @@ -1,6 +1,7 @@ ## Klassen - Definition einer Klasse + Klassen in Groovy werden ähnlich wie in Java definiert, jedoch mit einigen syntaktischen Erleichterungen @@ -13,8 +14,9 @@ Beispiel ``` - Eigenschaften - Eigenschaften können direkt als Felder definiert werden. Groovy - generiert automatisch Getter- und Setter-Methoden (wie in Ruby) + +Eigenschaften können direkt als Felder definiert werden. Groovy +generiert automatisch Getter- und Setter-Methoden (wie in Ruby) Beispiel ``` @@ -26,6 +28,7 @@ println person.name //John ``` + Getter und Setter können aber auch manuell überschrieben werden Beispiel @@ -60,9 +63,10 @@ static void(args) { } ``` - -Konstruktoren - Groovy fügt automatisch einen Standardkonstruktor hinzu. Man kann auch - benutzerdefinierte Konstruktoren definieren. +- Konstruktoren + +Groovy fügt automatisch einen Standardkonstruktor hinzu. Man kann auch +benutzerdefinierte Konstruktoren definieren. ``` class Person { String name @@ -75,8 +79,9 @@ class Person { } ``` - -Standardkonstruktor mit Map - Groovy bietet eine spezielle Initialisierungsform mit einer Map an +- Standardkonstruktor mit Map + +Groovy bietet eine spezielle Initialisierungsform mit einer Map an ``` Person person = new Person(name: 'John', age: 30) ``` @@ -84,6 +89,7 @@ class Person { ## Methoden - Definition einer Methode + Methoden werden ähnlich wie in Java definiert, können aber optional einen Rückgabetyp 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 ``` @@ -114,6 +122,7 @@ sum(5,2) ``` - Instanzmethoden + Methoden können Instanzmethoden sein und auf Instanzvariablen zugreifen. ``` class Method { @@ -146,8 +155,10 @@ class MathUtils { ``` - Dynamische Methoden + 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 ``` @@ -161,7 +172,10 @@ example.sayHello() ``` - 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 ``` @@ -179,6 +193,7 @@ expando.sayHello() // Ausgabe: Hello from Groovy ``` - Default-Parameterwerte + Methodenparameter können Standdardwerte haben(wie in Ruby) Beispiel 1 @@ -191,6 +206,7 @@ class Greeter { ``` Ruft man die Methode ohne Parameter auf, werden die Default-Paramter eingesetzt + Beispiel 2 ``` def sum(int a=10, int b=3) { @@ -202,7 +218,10 @@ sum() - 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 ``` @@ -251,8 +270,10 @@ println myList.collect { item -> item * 2 } // [2, 4, 6, 8, 10] ``` - Methodenverkettung + Durch das Rückgeben von this kann man Methodenaufrufe verketten. + Beispiel ``` class FluentPerson { @@ -273,8 +294,11 @@ class FluentPerson { def person = new FluentPerson().setName("John").setAge(30) ``` + - 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 ```