Skip to content

Commit

Permalink
Apply suggestions from code review
Browse files Browse the repository at this point in the history
Co-authored-by: LFR3052 <[email protected]>
  • Loading branch information
otifant and LFR3052 authored Dec 12, 2023
1 parent f7badd7 commit ada9653
Show file tree
Hide file tree
Showing 11 changed files with 25 additions and 24 deletions.
4 changes: 2 additions & 2 deletions content/en/docs/java/j2-oop/01-list-basics.md
Original file line number Diff line number Diff line change
Expand Up @@ -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<String> words = new ArrayList<>();
```

Sobald eine Liste erzeugt wurde, können beliebig viel Objekte dazu hinzugefügt oder daraus entfernt werden.<br>
Sobald eine Liste erzeugt wurde, können beliebig viel Objekte hinzugefügt oder entfernt werden.<br>
Über die Liste kann mit einer Schleife iteriert werden oder auch mit einem Index direkt auf ein Element zugegriffen werden.
```java
// Elemente hinzufügen
Expand Down
2 changes: 1 addition & 1 deletion content/en/docs/java/j2-oop/02-oop.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions content/en/docs/java/j2-oop/03-packages.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion content/en/docs/java/j2-oop/04-access-modifier.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 6 additions & 5 deletions content/en/docs/java/j2-oop/08-methods.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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.
}
```

Expand Down
4 changes: 2 additions & 2 deletions content/en/docs/java/j2-oop/09-enums.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions content/en/docs/java/j2-oop/10-mutable-objects.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}
```
Expand Down Expand Up @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion content/en/docs/java/j2-oop/11-java-generics.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
12 changes: 6 additions & 6 deletions content/en/docs/java/java-collections/08-streams.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: "Streams Basics"
linkTitle: "Streams"
weight: 8
description: >
Modul #J2
Modul #J7
---

## Ziele
Expand Down Expand Up @@ -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());
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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);

```
Expand Down
2 changes: 1 addition & 1 deletion content/en/exams/java/java-oop/OOPExam.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
2 changes: 1 addition & 1 deletion content/en/exams/java/java-oop/results.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit ada9653

Please sign in to comment.