diff --git a/content/en/docs/java/j2-oop/01-list-basics.md b/content/en/docs/java/j2-oop/01-list-basics.md index 1809143dd..60f0dace0 100644 --- a/content/en/docs/java/j2-oop/01-list-basics.md +++ b/content/en/docs/java/j2-oop/01-list-basics.md @@ -100,14 +100,14 @@ import java.util.ArrayList; ``` Nun kann eine Variable definiert und eine ArrayList erzeugt werden. Die Syntax hier wird in späteren Modulen erklärt, -hier reicht es zu wissen, dass innerhalb der spitzigen Klammern - auf der linken Seite der Definition - der Typ der Objekte angegeben wird, welche dann in der Liste hinzugefügt werden dürfen. +hier reicht es zu wissen, dass innerhalb der spitzen Klammern - auf der linken Seite der Definition - der Typ der Objekte angegeben wird, welche dann in der Liste hinzugefügt werden dürfen. ```java // Erstellen einer ArrayList für String-Objekte. // Ein Versuch, Objekte anderer Typ in der Liste hinzuzufügen wird in einem Kompilierfehler resultieren. List words = new ArrayList<>(); ``` -Sobald eine Liste erzeugt wurde, können beliebig viel Objekte dazu hinzugefügt oder daraus entfernt werden.
+Sobald eine Liste erzeugt wurde, können beliebig viel Objekte hinzugefügt oder entfernt werden.
Über die Liste kann mit einer Schleife iteriert werden oder auch mit einem Index direkt auf ein Element zugegriffen werden. ```java // Elemente hinzufügen diff --git a/content/en/docs/java/j2-oop/02-oop.md b/content/en/docs/java/j2-oop/02-oop.md index 03f68cec0..87dc1c0e6 100644 --- a/content/en/docs/java/j2-oop/02-oop.md +++ b/content/en/docs/java/j2-oop/02-oop.md @@ -24,7 +24,7 @@ Unter einer Klasse versteht man in der objektorientierten Programmierung ein abs Ein Objekt bezeichnet in der objektorientierten Programmierung ein Exemplar eines bestimmten Datentyps oder einer bestimmter Klasse. Objekte sind konkrete Ausprägungen (=Instanzen) einer Klasse und werden zur Laufzeit erzeugt (Instanziierung). #### Datenfelder -Datenfelder (Attribute) enthalten Informationen, die für Objekte dieser Klasse relevant sind. Ein Auto hat eine Höchstgeschwindigkeit, eine bestimmte Anzahl von Sitzen, usw. Das heisst, ein Feld ist eine Variable, in der Daten gespeichert werden können. Es kann einen beliebigen Typ haben, einschliesslich primitiver Typen (`int`, `float`, `boolean` usw.) und Klassen. Eine Klasse kann auch sich selber als Feld enthalten. Eine Klasse kann beliebig viele Felder haben. +Datenfelder (Attribute) enthalten Informationen, die für Objekte dieser Klasse relevant sind. Beispielsweise hat ein Auto eine Höchstgeschwindigkeit, eine bestimmte Anzahl von Sitzen, usw. Das heisst, ein Feld ist eine Variable, in der Daten gespeichert werden können. Es kann einen beliebigen Typ haben, einschliesslich primitiver Typen (`int`, `float`, `boolean` usw.) und Klassen. Eine Klasse kann auch sich selber als Feld enthalten. Eine Klasse kann beliebig viele Felder haben. #### Methoden Methoden dienen dazu, den Zustand eines Objekts zu verändern. Die Methode `refuel()` (siehe Klassendiagramm unten) füllt beispielsweise den Tank, bis dessen Kapazität erreicht wird. diff --git a/content/en/docs/java/j2-oop/03-packages.md b/content/en/docs/java/j2-oop/03-packages.md index a3f4edbda..c1bc89de6 100644 --- a/content/en/docs/java/j2-oop/03-packages.md +++ b/content/en/docs/java/j2-oop/03-packages.md @@ -9,8 +9,8 @@ description: > ## Ziele * Ich kann ohne Hilfsmittel mindestens zwei Vorteile für das Verwenden von Packages nennen. * Ich kann ohne Hilfsmittel die Namenkonvention für Java-Packages beschreiben. -* Ich zeige auf, wie mehreren Klassen vom gleichen Packet mit einem `import`-Statement importiert werden. -* Ich kann korrekt und ohne Hilfsmittel erklären, was ein statischer Import ist und wozu es verwendet wird. +* Ich zeige auf, wie mehrere Klassen vom gleichen Packet mit einem `import`-Statement importiert werden. +* Ich kann korrekt und ohne Hilfsmittel erklären, was ein statischer Import ist und wozu er verwendet wird. * Ich kann erläutern, warum es keine gute Idee ist, Klassen ohne Package-Anweisung zu schreiben. ## Packages diff --git a/content/en/docs/java/j2-oop/04-access-modifier.md b/content/en/docs/java/j2-oop/04-access-modifier.md index af3e11f35..e8c8c2981 100644 --- a/content/en/docs/java/j2-oop/04-access-modifier.md +++ b/content/en/docs/java/j2-oop/04-access-modifier.md @@ -49,7 +49,7 @@ c.getName(); UML-Symbol: `+` ### Protected -Wenn eine Klasse, ein Feld oder eine Methode mit `protected` deklariert ist, dann kann nur vom gleichen Package oder von Unterklassen darauf zugegriffen werden (Mehr über Unterklassen bzw. Vererbung findest du im Modul «Objektorientiertes Design»). +Wenn eine Klasse, ein Feld oder eine Methode mit `protected` deklariert ist, dann kann nur vom gleichen Package oder von Unterklassen darauf zugegriffen werden (Unterklassen folgen später im Modul «Objektorientiertes Design»). UML-Symbol: `#`. ### Package-Private diff --git a/content/en/docs/java/j2-oop/08-methods.md b/content/en/docs/java/j2-oop/08-methods.md index a03135a48..a901579b0 100644 --- a/content/en/docs/java/j2-oop/08-methods.md +++ b/content/en/docs/java/j2-oop/08-methods.md @@ -23,11 +23,11 @@ Diese Methoden können also entweder den Inhalt von Datenfelder ändern oder ihr Eine Methodendeklaration besteht aus bis zu sieben Komponenten: 1. Zugriffsmodifikator: `public`, `protected`, `private` oder package-private. Der Zugriffsmodifikator sollte immer so restriktiv wie möglich gewählt werden. 2. Sonstige Modifikatoren. Beispielsweise `static` oder `synchronized`. -2. Rückgabewert. Der Datentyp des von der Methode zurückgegebenen Werts oder `void`, wenn die Methode keinen Wert zurückgibt. -3. Methodenname / Bezeichner. -4. Parameterliste in Klammern. Eine durch Kommas getrennte Liste von Eingabeparametern (Datentyp + Bezeichner). Wenn keine Parameter benötigt werden, genügt die Angabe der beiden Klammern. -5. Exceptions (also welche Fehler, die die Methode wirft). Dazu mehr später im Modul Exception Handling. -6. Methodenkörper (der Code in geschweiften Klammern, der die Methode ausführt). +3. Rückgabewert. Der Datentyp des von der Methode zurückgegebenen Werts oder `void`, wenn die Methode keinen Wert zurückgibt. +4. Methodenname / Bezeichner. +5. Parameterliste in Klammern. Eine durch Kommas getrennte Liste von Eingabeparametern (Datentyp + Bezeichner). Wenn keine Parameter benötigt werden, genügt die Angabe der beiden Klammern. +6. Exceptions (also welche Fehler, die die Methode wirft). Dazu mehr später im Modul Exception Handling. +7. Methodenkörper (der Code in geschweiften Klammern, der die Methode ausführt). ### Namenskonventionen für Methoden Methodennamen sollen - per Konvention - folgende Regeln einhalten: @@ -146,6 +146,7 @@ if (carA.equals(carB)){ System.out.println("Both cars are equal."); } else { System.out.println("The cars are different."); +// Output: The cars are different. } ``` diff --git a/content/en/docs/java/j2-oop/09-enums.md b/content/en/docs/java/j2-oop/09-enums.md index f6751ef98..2b2a17985 100644 --- a/content/en/docs/java/j2-oop/09-enums.md +++ b/content/en/docs/java/j2-oop/09-enums.md @@ -17,7 +17,7 @@ Enums werden dann verwendet, wenn alle mögliche Werte zur Kompilierzeit bekannt In Java sind Aufzählungstypen als Klassen realisiert und die definierten Werte sind als Objekte implementiert. Daraus ergeben sich folgenden nützlichen Eigenschaften: - Enums können Konstruktoren, Instanzvariablen und Instanz-Methoden beinhalten -- Der Name der Enum-Werte kann mithilfe der `toString()`-Methode (oder mit dem Keywort `this`) im Klartext ausgegeben werden. +- Der Name der Enum-Werte kann mithilfe der `toString()`-Methode (oder mit dem Keywort `this`) im Klartext (String) ausgegeben werden. - Mithilfe des `==`-Operators kann auf Gleichheit geprüft werden. - Enumerations können in `switch`-Anweisungen verwendet werden. - Mithilfe der `values`-Methode wird ein Array zurückgegeben, das alle Elemente der Enumeration enthält. In Verbindung mit der erweiterten `for`-Schleife (for-each) können die Elemente sehr einfach durchlaufen werden. @@ -81,7 +81,7 @@ public class DailyPlanner { ``` ### Enum mit einem Konstruktor -Ein Enum-Konstruktor wird für jeder Enum-Konstante während dem Klassenladen des Enums ausgeführt. +Ein Enum-Konstruktor wird für jede Enum-Konstante während dem Klassenladen des Enums ausgeführt. Es ist unmöglich, Enum-Objekte explizit zu erzeugen. Darum kann ein Enum-Konstruktor auch nicht direkt aufgerufen werden. #### Beispiel: Enum mit einem Konstruktor diff --git a/content/en/docs/java/j2-oop/10-mutable-objects.md b/content/en/docs/java/j2-oop/10-mutable-objects.md index dc0990571..49636cdbd 100644 --- a/content/en/docs/java/j2-oop/10-mutable-objects.md +++ b/content/en/docs/java/j2-oop/10-mutable-objects.md @@ -40,7 +40,7 @@ public class SwissCitizen { // Hans-Ruedi hat geheiratet :D person.name = "Hans-Ruedi Müller"; - person.socialSecurityNumber = "756.0000.0000.01"; + person.socialSecurityNumber = "756.0000.0000.01"; // Gibt einen Compiler-Fehler } } ``` @@ -91,7 +91,7 @@ public class Color { } ``` -Da `Color in diesem Beispiel veränderlich ist, kann jedes Feld verändert werden: +Da `Color` in diesem Beispiel veränderlich ist, kann jedes Feld verändert werden: ```java // print color red: diff --git a/content/en/docs/java/j2-oop/11-java-generics.md b/content/en/docs/java/j2-oop/11-java-generics.md index b5983cbb2..8480e103d 100644 --- a/content/en/docs/java/j2-oop/11-java-generics.md +++ b/content/en/docs/java/j2-oop/11-java-generics.md @@ -9,7 +9,7 @@ description: > #### Ziele * Ich kann in eigenen Worten erklären, was mit Generics in Java gemeint ist und wozu diese angewendet werden. -* Ich kann alle Vorteile, der die Arbeit mit Generics mit sich bringt, vollständig nennen. +* Ich kann alle Vorteile, die die Arbeit mit Generics mit sich bringt, vollständig nennen. * Ich kann in eigenen Worten erklären, was Typsicherheit ist. * Ich kann anhand eines Beispiels aufzeigen, wie eine Typverletzung entsteht. * Ich kann in eigenen Worten erklären, wozu "bounded types" verwendet werden. diff --git a/content/en/docs/java/java-collections/08-streams.md b/content/en/docs/java/java-collections/08-streams.md index 675af1719..339d094e7 100644 --- a/content/en/docs/java/java-collections/08-streams.md +++ b/content/en/docs/java/java-collections/08-streams.md @@ -3,7 +3,7 @@ title: "Streams Basics" linkTitle: "Streams" weight: 8 description: > - Modul #J2 + Modul #J7 --- ## Ziele @@ -43,7 +43,7 @@ int maxScores = 24; var averageGrade = Arrays.stream(scores) .filter(score -> score > 0) - .mapToDouble(score -> score * 5.0 / maxScores + 1.0) + .mapToDouble(score -> score * 5f / maxScores + 1f) .average(); System.out.println("Average: " + averageGrade.getAsDouble()); @@ -181,12 +181,12 @@ Nun werden einige Operationen auf Streams vorgestellt: * `map(...)`, `mapToInt(...)` und `mapToDouble(...)` wandeln die einzelnen Stream-Elemente in andere Werte um (bilden diese ab auf andere). * `sorted()` sortiert die einzelnen Werte. * Terminale Operationen: - * Mit `forEach(...)` kann für jedes Element etwas gemacht werden (wie jedes Element ausgeben). + * Mit `forEach(...)` kann für jedes Element etwas gemacht werden (z.B. jedes Element ausgeben). * `collect(...)` und `toArray(...)` füllen die einzelnen Elemente in Listen oder Arrays ab. ### Intermediäre Operationen #### Die `filter(...)`-Methode -Die `filter(...)`-Methode ist eine intermediäre Operation, die Elemente in einem Stream auf diejenigen beschränkt, die einer bestimmten Bedingung entsprechen. Diese Bedingung wird als Lambda-Ausdruck ausgedrückt, der `true` zurückgibt, wenn das Element im Stream bleiben soll. Gibt er `false` zurück, wird das Element aussortiert. +Die `filter(...)`-Methode ist eine intermediäre Operation, die Elemente in einem Stream auf diejenigen beschränkt, die einer bestimmten Bedingung entsprechen. Diese Bedingung wird als Lambda-Ausdruck angegeben, der `true` zurückgibt, wenn das Element im Stream bleiben soll. Gibt er `false` zurück, wird das Element aussortiert. Im folgenden Beispiel werden alle ungeraden Zahlen aus einem Stream entfernt und dann alle verbleibenden Elemente ausgegeben: ```java @@ -269,7 +269,7 @@ Die *forEach(Consumer action)* Methode gehört zu den terminalen Operationen ein Der Parameter `action` ist vom Typ `Consumer` (ist ein `FunctionalInterface`). Dieser Typ repräsentiert eine Operation (eine Funktion), welche nur ein einziges Input-Argument akzeptiert und keine Ergebnisse (also `void`) zurückliefert. -Ein Beispiel für so ein Consumer ist die Methode `System.out.println(...)`, +Ein Beispiel für so einen Consumer ist die Methode `System.out.println(...)`, welche maximal ein einziges Objekt als Parameter akzeptiert, dieses Objekt in den Standard-Output ausgibt und `void` (also kein Ergebnis) zurückliefert. Die Methode `System.out.println` erfüllt also die Bedingungen eines Consumers und kann als Parameter für die `forEach()` Methode verwendet werden @@ -308,7 +308,7 @@ greetingList.stream().forEach(word -> System.out.println(word)); greetingList.stream().forEach(System.out::println); // Collection, darunter auch Listen, haben selbst eine forEach Methode, -// welche die gleiche Ergebnisse liefert, wie diejenige vom Stream-Interface +// welche die gleichen Ergebnisse liefert, wie diejenige vom Stream-Interface greetingList.forEach(System.out::println); ``` diff --git a/content/en/exams/java/java-oop/OOPExam.md b/content/en/exams/java/java-oop/OOPExam.md index 0f820e11f..b87d69250 100644 --- a/content/en/exams/java/java-oop/OOPExam.md +++ b/content/en/exams/java/java-oop/OOPExam.md @@ -11,7 +11,7 @@ description: > ## Weltmeisterschaft - OOP Exam -Bei diesem Lab geht es darum, dass du deine Vorgehensweise beim Erstellen eines objekt-orientiertem Modell trainierst. +Bei diesem Lab geht es darum, dass du deine Vorgehensweise beim Erstellen eines objektorientierten Modells trainierst. Zentral bei dieser Aufgabe ist also, wie du das Datenmodell erstellst, welches beschreibt, welche Klassen mit welchen Feldern und Methoden du schreibst. diff --git a/content/en/exams/java/java-oop/results.txt b/content/en/exams/java/java-oop/results.txt index 67c37e5b3..d94f6c8f6 100644 --- a/content/en/exams/java/java-oop/results.txt +++ b/content/en/exams/java/java-oop/results.txt @@ -14,7 +14,7 @@ Ungarn # Gruppe 1 Frankreich Jugoslawien 0:1 16. Jun 54 Lausanne -Brasilie Mexiko 5:0 16. Jun 54 Genf +Brasilien Mexiko 5:0 16. Jun 54 Genf Frankreich Mexiko 3:2 19. Jun 54 Genf Brasilien Jugoslawien 1:1 19. Jun 54 Lausanne