From 174da2063e1842c8c5744fa041a5addfaa291dc3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 15 Sep 2023 13:39:18 +0000 Subject: [PATCH] deploy: 0135f8f86211d9ec15371a2cb139db95b3fa6d0c --- 404.html | 4 ++-- additional-material/downloads/index.html | 4 ++-- .../exam-exercises1/cards-dealer/index.html | 4 ++-- .../exam-exercises1/cashier-system/index.html | 4 ++-- .../exam-exercises1/christmas-tree/index.html | 4 ++-- additional-material/exam-exercises1/cookie-jar/index.html | 4 ++-- additional-material/exam-exercises1/creature/index.html | 4 ++-- additional-material/exam-exercises1/dice-games/index.html | 4 ++-- additional-material/exam-exercises1/fast-food/index.html | 4 ++-- additional-material/exam-exercises1/gift-bag/index.html | 4 ++-- additional-material/exam-exercises1/index.html | 4 ++-- .../exam-exercises1/parking-garage/index.html | 4 ++-- additional-material/exam-exercises1/shape/index.html | 4 ++-- .../exam-exercises1/student-course/index.html | 4 ++-- additional-material/exam-exercises1/zoo/index.html | 4 ++-- .../exam-exercises2/corner-shop/index.html | 4 ++-- additional-material/exam-exercises2/dictionary/index.html | 4 ++-- .../exam-exercises2/human-resources/index.html | 4 ++-- additional-material/exam-exercises2/index.html | 4 ++-- additional-material/exam-exercises2/job-offer/index.html | 4 ++-- additional-material/exam-exercises2/lego-brick/index.html | 4 ++-- additional-material/exam-exercises2/library/index.html | 4 ++-- .../exam-exercises2/measurement-data/index.html | 4 ++-- additional-material/exam-exercises2/planets/index.html | 4 ++-- .../exam-exercises2/shopping-portal/index.html | 4 ++-- .../exam-exercises2/space-station/index.html | 4 ++-- .../exam-exercises2/video-collection/index.html | 4 ++-- additional-material/instructions/cmd/index.html | 4 ++-- additional-material/instructions/index.html | 4 ++-- additional-material/instructions/setup-eclipse/index.html | 4 ++-- additional-material/instructions/use-eclipse/index.html | 4 ++-- additional-material/slides/index.html | 8 ++++---- assets/js/f66ae8e2.2de0d04e.js | 1 - assets/js/f66ae8e2.fb1d8aa9.js | 1 + ...{runtime~main.5276d4e4.js => runtime~main.bb82bd08.js} | 2 +- documentation/abstract-and-final/index.html | 4 ++-- documentation/arrays/index.html | 4 ++-- documentation/calculations/index.html | 4 ++-- documentation/class-structure/index.html | 4 ++-- documentation/comparators/index.html | 4 ++-- documentation/console-applications/index.html | 4 ++-- documentation/control-structures/cases/index.html | 4 ++-- documentation/control-structures/index.html | 4 ++-- documentation/control-structures/loops/index.html | 4 ++-- documentation/data-objects/index.html | 4 ++-- documentation/data-types/index.html | 4 ++-- documentation/design/index.html | 4 ++-- documentation/enumerations/index.html | 4 ++-- documentation/exceptions/index.html | 4 ++-- documentation/generics/index.html | 4 ++-- documentation/inheritance/index.html | 4 ++-- documentation/inner-classes/index.html | 4 ++-- documentation/interfaces/index.html | 4 ++-- documentation/io-streams/index.html | 4 ++-- documentation/java-api/dates-and-times/index.html | 4 ++-- documentation/java-api/files/index.html | 4 ++-- documentation/java-api/index.html | 4 ++-- documentation/java-api/wrappers/index.html | 4 ++-- documentation/java-stream-api/index.html | 4 ++-- documentation/lists/index.html | 4 ++-- documentation/maps/index.html | 4 ++-- documentation/object/index.html | 4 ++-- documentation/oo/index.html | 4 ++-- documentation/operators/index.html | 4 ++-- documentation/optionals/index.html | 4 ++-- documentation/polymorphy/index.html | 4 ++-- documentation/programming/index.html | 4 ++-- documentation/pseudo-random-numbers/index.html | 4 ++-- documentation/records/index.html | 4 ++-- documentation/strings/index.html | 4 ++-- documentation/tests/index.html | 4 ++-- documentation/uml/activity-diagrams/index.html | 4 ++-- documentation/uml/class-diagrams/index.html | 4 ++-- documentation/uml/index.html | 4 ++-- documentation/unit-tests/index.html | 4 ++-- .../abstract-and-final/abstract-and-final01/index.html | 4 ++-- exercises/abstract-and-final/index.html | 4 ++-- exercises/arrays/arrays01/index.html | 4 ++-- exercises/arrays/arrays02/index.html | 4 ++-- exercises/arrays/arrays03/index.html | 4 ++-- exercises/arrays/arrays04/index.html | 4 ++-- exercises/arrays/arrays05/index.html | 4 ++-- exercises/arrays/arrays06/index.html | 4 ++-- exercises/arrays/index.html | 4 ++-- exercises/class-structure/class-structure01/index.html | 4 ++-- exercises/class-structure/index.html | 4 ++-- exercises/comparators/comparators01/index.html | 4 ++-- exercises/comparators/comparators02/index.html | 4 ++-- exercises/comparators/index.html | 4 ++-- .../console-applications01/index.html | 4 ++-- .../console-applications02/index.html | 4 ++-- exercises/console-applications/index.html | 4 ++-- exercises/control-structures/cases01/index.html | 4 ++-- exercises/control-structures/cases02/index.html | 4 ++-- exercises/control-structures/cases03/index.html | 4 ++-- exercises/control-structures/cases04/index.html | 4 ++-- exercises/control-structures/cases05/index.html | 4 ++-- exercises/control-structures/cases06/index.html | 4 ++-- exercises/control-structures/index.html | 4 ++-- exercises/control-structures/loops01/index.html | 4 ++-- exercises/control-structures/loops02/index.html | 4 ++-- exercises/control-structures/loops03/index.html | 4 ++-- exercises/control-structures/loops04/index.html | 4 ++-- exercises/control-structures/loops05/index.html | 4 ++-- exercises/control-structures/loops06/index.html | 4 ++-- exercises/control-structures/loops07/index.html | 4 ++-- exercises/control-structures/loops08/index.html | 4 ++-- exercises/data-objects/data-objects01/index.html | 4 ++-- exercises/data-objects/data-objects02/index.html | 4 ++-- exercises/data-objects/index.html | 4 ++-- exercises/enumerations/enumerations01/index.html | 4 ++-- exercises/enumerations/index.html | 4 ++-- exercises/exceptions/exceptions01/index.html | 4 ++-- exercises/exceptions/exceptions02/index.html | 4 ++-- exercises/exceptions/exceptions03/index.html | 4 ++-- exercises/exceptions/index.html | 4 ++-- exercises/generics/generics01/index.html | 4 ++-- exercises/generics/generics02/index.html | 4 ++-- exercises/generics/generics03/index.html | 4 ++-- exercises/generics/generics04/index.html | 4 ++-- exercises/generics/index.html | 4 ++-- exercises/inner-classes/index.html | 4 ++-- exercises/inner-classes/inner-classes01/index.html | 4 ++-- exercises/inner-classes/inner-classes02/index.html | 4 ++-- exercises/inner-classes/inner-classes03/index.html | 4 ++-- exercises/inner-classes/inner-classes04/index.html | 4 ++-- exercises/inner-classes/inner-classes05/index.html | 4 ++-- exercises/interfaces/index.html | 4 ++-- exercises/interfaces/interfaces01/index.html | 4 ++-- exercises/io-streams/index.html | 4 ++-- exercises/io-streams/io-streams01/index.html | 4 ++-- exercises/io-streams/io-streams02/index.html | 4 ++-- exercises/java-api/index.html | 4 ++-- exercises/java-api/java-api01/index.html | 4 ++-- exercises/java-api/java-api02/index.html | 4 ++-- exercises/java-api/java-api03/index.html | 4 ++-- exercises/java-api/java-api04/index.html | 4 ++-- exercises/java-stream-api/index.html | 4 ++-- exercises/java-stream-api/java-stream-api01/index.html | 4 ++-- exercises/java-stream-api/java-stream-api02/index.html | 4 ++-- exercises/lambdas/index.html | 4 ++-- exercises/lambdas/lambdas01/index.html | 4 ++-- exercises/lambdas/lambdas02/index.html | 4 ++-- exercises/lambdas/lambdas03/index.html | 4 ++-- exercises/lambdas/lambdas04/index.html | 4 ++-- exercises/maps/index.html | 4 ++-- exercises/maps/maps01/index.html | 4 ++-- exercises/maps/maps02/index.html | 4 ++-- exercises/oo/index.html | 4 ++-- exercises/oo/oo01/index.html | 4 ++-- exercises/oo/oo02/index.html | 4 ++-- exercises/oo/oo03/index.html | 4 ++-- exercises/oo/oo04/index.html | 4 ++-- exercises/oo/oo05/index.html | 4 ++-- exercises/oo/oo06/index.html | 4 ++-- exercises/oo/oo07/index.html | 4 ++-- exercises/operators/index.html | 4 ++-- exercises/operators/operators01/index.html | 4 ++-- exercises/operators/operators02/index.html | 4 ++-- exercises/operators/operators03/index.html | 4 ++-- exercises/optionals/index.html | 4 ++-- exercises/optionals/optionals01/index.html | 4 ++-- exercises/optionals/optionals02/index.html | 4 ++-- exercises/optionals/optionals03/index.html | 4 ++-- exercises/polymorphy/index.html | 4 ++-- exercises/polymorphy/polymorphy01/index.html | 4 ++-- exercises/polymorphy/polymorphy02/index.html | 4 ++-- exercises/polymorphy/polymorphy03/index.html | 4 ++-- exercises/polymorphy/polymorphy04/index.html | 4 ++-- exercises/programming/index.html | 4 ++-- exercises/uml/activity-diagrams01/index.html | 4 ++-- exercises/uml/class-diagrams01/index.html | 4 ++-- exercises/uml/class-diagrams02/index.html | 4 ++-- exercises/uml/class-diagrams03/index.html | 4 ++-- exercises/uml/class-diagrams04/index.html | 4 ++-- exercises/uml/class-diagrams05/index.html | 4 ++-- exercises/uml/index.html | 4 ++-- exercises/unit-tests/index.html | 4 ++-- exercises/unit-tests/unit-tests01/index.html | 4 ++-- exercises/unit-tests/unit-tests02/index.html | 4 ++-- exercises/unit-tests/unit-tests03/index.html | 4 ++-- exercises/unit-tests/unit-tests04/index.html | 4 ++-- index.html | 4 ++-- slides/steffen/abstract-and-final/index.html | 4 ++-- slides/steffen/class-diagram-java-api-enum/index.html | 4 ++-- slides/steffen/classes-and-objects/index.html | 4 ++-- slides/steffen/constructor-and-static/index.html | 4 ++-- slides/steffen/datatypes-and-dataobjects/index.html | 4 ++-- slides/steffen/exceptions/index.html | 4 ++-- slides/steffen/generics-maps/index.html | 4 ++-- slides/steffen/if-and-switch/index.html | 4 ++-- slides/steffen/inheritance/index.html | 4 ++-- slides/steffen/interfaces/index.html | 4 ++-- slides/steffen/intro/index.html | 4 ++-- slides/steffen/lambda/index.html | 4 ++-- slides/steffen/math-random-scanner/index.html | 4 ++-- slides/steffen/methods-and-operators/index.html | 4 ++-- slides/steffen/plan/index.html | 4 ++-- slides/steffen/polymorphy/index.html | 4 ++-- slides/steffen/recap/index.html | 4 ++-- slides/steffen/records-optionals/index.html | 4 ++-- slides/steffen/stream-api/index.html | 4 ++-- slides/steffen/tbd/index.html | 4 ++-- slides/template/index.html | 4 ++-- tags/abstract-and-final/index.html | 4 ++-- tags/activity-diagrams/index.html | 4 ++-- tags/arrays/index.html | 4 ++-- tags/cases/index.html | 4 ++-- tags/class-diagrams/index.html | 4 ++-- tags/class-structure/index.html | 4 ++-- tags/comparators/index.html | 4 ++-- tags/console-applications/index.html | 4 ++-- tags/control-structures/index.html | 4 ++-- tags/data-objects/index.html | 4 ++-- tags/dates-and-times/index.html | 4 ++-- tags/enumerations/index.html | 4 ++-- tags/exceptions/index.html | 4 ++-- tags/files/index.html | 4 ++-- tags/generics/index.html | 4 ++-- tags/index.html | 4 ++-- tags/inheritance/index.html | 4 ++-- tags/inner-classes/index.html | 4 ++-- tags/interfaces/index.html | 4 ++-- tags/io-streams/index.html | 4 ++-- tags/java-api/index.html | 4 ++-- tags/java-stream-api/index.html | 4 ++-- tags/lambdas/index.html | 4 ++-- tags/loops/index.html | 4 ++-- tags/maps/index.html | 4 ++-- tags/oo/index.html | 4 ++-- tags/operators/index.html | 4 ++-- tags/optionals/index.html | 4 ++-- tags/polymorphy/index.html | 4 ++-- tags/programming/index.html | 4 ++-- tags/records/index.html | 4 ++-- tags/uml/index.html | 4 ++-- tags/unit-tests/index.html | 4 ++-- tags/wrappers/index.html | 4 ++-- 238 files changed, 474 insertions(+), 474 deletions(-) delete mode 100644 assets/js/f66ae8e2.2de0d04e.js create mode 100644 assets/js/f66ae8e2.fb1d8aa9.js rename assets/js/{runtime~main.5276d4e4.js => runtime~main.bb82bd08.js} (99%) diff --git a/404.html b/404.html index db35354e61..2fc9d1fc36 100644 --- a/404.html +++ b/404.html @@ -4,13 +4,13 @@ Seite nicht gefunden | Programmieren mit Java - +
Zum Hauptinhalt springen

Seite nicht gefunden

Wir konnten nicht finden, wonach Sie gesucht haben.

Bitte kontaktieren Sie den Besitzer der Seite, die Sie mit der ursprünglichen URL verlinkt hat, und teilen Sie ihm mit, dass der Link nicht mehr funktioniert.

- + \ No newline at end of file diff --git a/additional-material/downloads/index.html b/additional-material/downloads/index.html index ec62ecbec5..76fdf076ae 100644 --- a/additional-material/downloads/index.html +++ b/additional-material/downloads/index.html @@ -4,13 +4,13 @@ Downloads (Daniel) | Programmieren mit Java - +
Zum Hauptinhalt springen
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/cards-dealer/index.html b/additional-material/exam-exercises1/cards-dealer/index.html index 06690b0688..08241d7682 100644 --- a/additional-material/exam-exercises1/cards-dealer/index.html +++ b/additional-material/exam-exercises1/cards-dealer/index.html @@ -4,13 +4,13 @@ Kartenausteiler | Programmieren mit Java - +
Zum Hauptinhalt springen

Kartenausteiler

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweise zur Klasse Player

  • Die Methode void addCard(card: Card) soll dem Spieler die eingehende Karte hinzufügen
  • Die Methode ArrayList<Card> getCardsByColour(colour: String) soll alle Karten des Spielers zur eingehenden Farbe zurückgeben
  • Die Methode Card getCardWithHighestValue() soll die Karte des Spielers mit dem höchsten Wert zurückgeben

Hinweis zur Klasse CardsDealer

Die Methode void dealCards(amount: int) soll den beiden Spielern die eingehende Anzahl an zufälligen Karten des Decks austeilen

Hinweis zur Klasse CardsReader

Die Methode ArrayList<Card> getCards(file: File) soll alle Karten der eingehenden Datei zurückgeben.

Beispielhafter Aufbau der Kartendatei

Karo;1
Karo;2
Karo;3
Karo;4
Karo;5
Herz;1
Herz;2
Herz;3
Herz;4
Herz;5
Pik;1
Pik;2
Pik;3
Pik;4
Pik;5
Kreuz;1
Kreuz;2
Kreuz;3
Kreuz;4
Kreuz;5
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/cashier-system/index.html b/additional-material/exam-exercises1/cashier-system/index.html index 2b22bb964e..829a24006e 100644 --- a/additional-material/exam-exercises1/cashier-system/index.html +++ b/additional-material/exam-exercises1/cashier-system/index.html @@ -4,14 +4,14 @@ Kassensystem | Programmieren mit Java - +
Zum Hauptinhalt springen

Kassensystem

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweis zur Klasse Item

Die Methode double getSubTotal() soll die Zwischensumme gemäß der Formel Anzahl * Preis zurückgeben

Hinweise zur Klasse ShoppingCart

  • Die Methode void createItem(goods: Goods, amount: int) soll den Einträgen des Warenkorbs (items) die eingehende Ware und die eingehende Anzahl als Eintrag hinzufügen
  • Die Methode double getTotal() soll die Gesamtsumme zurückgeben

Hinweise zur Klasse CashierSystem

  • Die Methode void addGoods(goods: Goods) soll der Warenliste (goods) die eingehende Ware hinzufügen
  • Die Methode void addCashier(cashier: Cashier) soll der Kassiererliste (cashiers) den eingehenden Kassierer hinzufügen
  • Die Methode void login(id: int) soll den Kassierer zur eingehenden Kassierernummer an der Kasse "registrieren"
  • Die Methode void createShoppingCart() soll an der Kasse einen neuen Warenkorb erstellen
  • Die Methode void addItem(id: int, amount: int) soll dem Warenkorb (shoppingCart) anhand der eingehenden Produktnummer und anhand der eingehenden Anzahl einen neuen Warenkorbeintrag hinzufügen
  • Die Methode void printBon() soll alle relevanten Informationen zum Warenkorb auf der Konsole ausgeben
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/christmas-tree/index.html b/additional-material/exam-exercises1/christmas-tree/index.html index bb9c2af860..a8fdea925c 100644 --- a/additional-material/exam-exercises1/christmas-tree/index.html +++ b/additional-material/exam-exercises1/christmas-tree/index.html @@ -4,13 +4,13 @@ Weihnachtsbaum | Programmieren mit Java - +
Zum Hauptinhalt springen

Weihnachtsbaum

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweise zur Klasse ChristmasTree

  • Die Methode void addCandle(candle: Candle) soll der Kerzenliste (candles) die eingehende Kerze hinzufügen
  • Die Methode void lightChristmasTree() soll alle Kerzen "entzünden"
  • Die Methode int getNumberOfElectricCandles() soll die Anzahl elektrischer Kerzen zurückgeben

Hinweise zur Klasse Candle

  • Die Methode void lightACandle() soll die Kerze "entzünden"
  • Die Methode void turnOffACandle() soll die Kerze "ausmachen"

Hinweise zur Klasse ElectricCandle

  • Der Konstruktor soll die Energie (power) auf den Wert 100 setzen
  • Die Methode void lightACandle() soll die elektrische Kerze "entzünden", wenn diese noch über Energie verfügt und die Energie um den Wert 10 reduzieren
  • Die Methode void recharge() soll die Energie der elektrische Kerze wieder auf den Wert 100 setzen
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/cookie-jar/index.html b/additional-material/exam-exercises1/cookie-jar/index.html index fd61c6fe04..49dd35fd74 100644 --- a/additional-material/exam-exercises1/cookie-jar/index.html +++ b/additional-material/exam-exercises1/cookie-jar/index.html @@ -4,13 +4,13 @@ Plätzchendose | Programmieren mit Java - +
Zum Hauptinhalt springen

Plätzchendose

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Die Methode ArrayList<Ingredient> getIngredients() soll alle Zutaten des Teigs zurückgeben.

Hinweis zur Klasse StuffedCookie

Die Methode ArrayList<Ingredient> getIngredients() soll alle Zutaten des Teigs sowie der Füllung zurückgeben.

Hinweis zur Klasse Recipe

Die Methode void addIngredient(ingredient: Ingredient) soll dem Rezept die eingehende Zutat hinzufügen.

Hinweise zur Klasse CookieJar

  • Die Methode void addCookie(cookie: Cookie) soll der Plätzchendose das eingehende Plätzchen hinzufügen
  • Die Methode StuffedCookie getStuffedCookie() soll ein beliebiges gefülltes Plätzchen der Plätzchendose zurückgeben
  • Die Methode Cookie getCookieByName(name: String) soll ein Plätzchen der Plätzchendose zum eingehenden Namen zurückgeben

Hinweis zur Klasse IngredientsReader

Die Methode ArrayList<Ingredient> readIngredients() soll alle Zutaten der eingehenden Datei auslesen und zurückgeben.

Beispielhafter Aufbau der Zutatendatei

200g Butter
300g Mehl
1 Prise Salz
100g gemahlene Mandeln
150g Zucker
1 Pck. Vanillezucker
2 Eier
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/creature/index.html b/additional-material/exam-exercises1/creature/index.html index c27681e529..0585a430b3 100644 --- a/additional-material/exam-exercises1/creature/index.html +++ b/additional-material/exam-exercises1/creature/index.html @@ -4,13 +4,13 @@ Kreatur | Programmieren mit Java - +
Zum Hauptinhalt springen

Kreatur

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweise zur Klasse Creature

  • Die Methode void moveUp() soll den Y-Wert der Position inkrementieren
  • Die Methode void moveDown() soll den Y-Wert der Position dekrementieren
  • Die Methode void moveLeft() soll den X-Wert der Position dekrementieren
  • Die Methode void moveRigth() soll den X-Wert der Position inkrementieren

Hinweis zur Klasse CreaturesReader

Die Methode ArrayList<Creature> getCreatures(file: File) soll alle Kreaturen der eingehenden Datei zurückgeben und die Kreaturen die Bewegungen der eingehenden Datei ausführen lassen.

Beispielhafter Aufbau der Kreaturendatei

Frankensteins Monster;MONSTER;0;5
DOWN;DOWN;LEFT;LEFT
Dracula;VAMPIRE;3;3
UP;RIGHT;UP
Kurt;ZOMBIE;-2;-2
DOWN
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/dice-games/index.html b/additional-material/exam-exercises1/dice-games/index.html index 4d4fff5fdf..aae43fbd4b 100644 --- a/additional-material/exam-exercises1/dice-games/index.html +++ b/additional-material/exam-exercises1/dice-games/index.html @@ -4,13 +4,13 @@ Würfelspiele | Programmieren mit Java - +
Zum Hauptinhalt springen

Würfelspiele

Setze das abgebildete Klassendiagramm vollständig um. Erstelle für jedes Würfelspiel eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweis zur Klasse CardColorDice

Die Methode void rollTheDice() soll mit einer gleichverteilten Wahrscheinlichkeit der Kartenfarbe (cardColor) einen Wert zuweisen

Hinweis zur Klasse ValueDice

Die Methode void rollTheDice() soll mit einer gleichverteilten Wahrscheinlichkeit dem Wert (value) eine Zahl zwischen 1 und 6 zuweisen

Hinweis zur Klasse ShadeSymbolDice

Die Methode void rollTheDice() soll mit einer gleichverteilten Wahrscheinlichkeit dem Formensymbol (shadeSymbol) einen Wert zuweisen

Hinweise zur Klasse Player

  • Die Methode void addPoints(points: int) soll die Punkte des Spielers (points) um die eingehenden Punkte erhöhen
  • Die Methode void deductPoints(points: int) soll die Punkte des Spielers (points) um die eingehenden Punkte reduzieren

Hinweise zum Würfelspiel 1

  • Anzahl Spieler: 1
  • Würfel: 5 Formenwürfel
  • Ablauf:
    • Das Spiel soll aus mehreren Runden bestehen
    • Zu Beginn soll der Spieler seinen Namen eingeben
    • Zu Beginn einer jeden Runde sollen alle Würfel geworfen werden
    • Nach jedem Wurf soll der Spieler eingeben, ob die Anzahl Ecken (corners) aller Würfel höher als 12 ist oder nicht. Liegt der Spieler mit seiner Einschätzung richtig, bekommt er einen Punkt
    • Am Ende einer Runde soll der Spieler eingeben, ob er eine weitere Runde spielen möchte
    • Am Ende des Spiels soll die Anzahl der gespielten Runden sowie die Punktzahl ausgegeben werden

Hinweise zum Würfelspiel 2

  • Anzahl Spieler: 2
  • Würfel: 1 Formenwürfel, 1 Zahlenwürfel
  • Ablauf:
    • Beide Spieler sollen zu Beginn des Spiels ihre Namen eingeben
    • Beide Spieler sollen das Spiel mit 100 Punkte beginnen
    • Beide Spieler sollen abwechselnd solange zwei Würfel werfen, bis einer der beiden Spieler keine Punkte mehr hat
    • In jeder Runde verliert der Spieler mit dem schlechteren Wurfwert Punkte (die Differenz der beiden Wurfwerte)
  • Hinweis: Der Wurfwert berechnet sich nach der Formel Zahlenwert des Zahlenwürfels * Anzahl Ecken des gewürfelten Formensymbols
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/fast-food/index.html b/additional-material/exam-exercises1/fast-food/index.html index 48bd3c69f6..104189811e 100644 --- a/additional-material/exam-exercises1/fast-food/index.html +++ b/additional-material/exam-exercises1/fast-food/index.html @@ -4,13 +4,13 @@ Fast Food | Programmieren mit Java - +
Zum Hauptinhalt springen

Fast Food

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweise zur Klasse FastFood

  • Die Methode void addRating(rating: int) soll den Bewertungen (ratings) die eingehende Bewertung hinzufügen
  • Die Methode double getAverageRating() soll die durchschnittliche Bewertung zurückgeben

Hinweise zur Klasse FastFoodShop

  • Die Methode void addFastFood(fastFood: FastFood) soll das eingehende Fast Food zum Sortiment hinzufügen
  • Die Methode void rateFastFood(fastFood: FastFood, rating: int) soll dem eingehenden Fast Food die eingehende Bewertung hinzufügen
  • Die Methode Burger getBestRatedBurger() soll den Burger mit der höchsten Bewertung zurückgeben
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/gift-bag/index.html b/additional-material/exam-exercises1/gift-bag/index.html index 0aebb6c29e..2f2e8f6a33 100644 --- a/additional-material/exam-exercises1/gift-bag/index.html +++ b/additional-material/exam-exercises1/gift-bag/index.html @@ -4,13 +4,13 @@ Geschenkesack | Programmieren mit Java - +
Zum Hauptinhalt springen

Geschenkesack

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweise zur Klasse GiftBag

  • Die Methode void addPresent(present: present) soll der Geschenkeliste (presents) das eingehende Geschenk hinzufügen
  • Die Methode Present getMostExpensivePresent() soll das teuerste Geschenk zurückgeben
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/index.html b/additional-material/exam-exercises1/index.html index 86ea2895a8..f055be9749 100644 --- a/additional-material/exam-exercises1/index.html +++ b/additional-material/exam-exercises1/index.html @@ -4,13 +4,13 @@ Klausuraufgaben Programmierung 1 | Programmieren mit Java - +
Zum Hauptinhalt springen
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/parking-garage/index.html b/additional-material/exam-exercises1/parking-garage/index.html index d7370cd96c..5ed0555ee8 100644 --- a/additional-material/exam-exercises1/parking-garage/index.html +++ b/additional-material/exam-exercises1/parking-garage/index.html @@ -4,13 +4,13 @@ Tiefgarage | Programmieren mit Java - +
Zum Hauptinhalt springen

Tiefgarage

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweise zur Klasse ParkingGarage

  • Die Methode String parkIn(car: Car, parkingSpotNumber: int) soll das eingehende Fahrzeug dem Parkplatz mit der eingehenden Parkplatznummer zuweisen und eine enstprechende Erfolgsmeldung zurückgegeben. Für den Fall, dass der Parkplatz bereits besetzt ist, oder dass es sich bei dem eingehenden Fahrzeug um ein Auto handelt, der Parkplatz aber nur für Busse ist, oder dass der Parkplatz zu klein ist, soll eine entsprechende Fehlermeldung zurückgegeben werden
  • Die Methode String parkOut(car: Car) soll das eingehende Fahrzeug "ausparken" und eine enstsprechende Erfolgsmeldung zurückgeben. Für den Fall, dass das Fahrzeug in der Tiefgarage nicht vorhanden ist, soll eine entsprechende Fehlermeldung zurückgegeben werden
  • Die Methode int getNextFreeParkingSpotNumber() soll die Nummer des nächsten freien Parkplatzes zurückgeben
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/shape/index.html b/additional-material/exam-exercises1/shape/index.html index 38cd0d30c6..e09ec622e6 100644 --- a/additional-material/exam-exercises1/shape/index.html +++ b/additional-material/exam-exercises1/shape/index.html @@ -4,14 +4,14 @@ Geometrische Form | Programmieren mit Java - +
Zum Hauptinhalt springen

Geometrische Form

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden
  • Die statische Konstante PI der Klasse Math stellt die Kreiszahl Pi dar

Hinweise zur Klasse Shape

  • Die Methode double getArea() soll den Wert 0 zurückgeben
  • Die Methode double getCircumference() soll den Wert 0 zurückgeben

Hinweise zur Klasse Circle

  • Die Methode double getArea() soll den Flächeninhalt gemäß der Formel Pi r r berechnen und zurückgeben
  • Die Methode double getCircumference() soll den Umfang gemäß der Formel 2 Pi r berechnen und zurückgeben

Hinweise zur Klasse Rectangle

  • Die Methode double getArea() soll den Flächeninhalt gemäß der Formel a * b berechnen und zurückgeben
  • Die Methode double getCircumference() soll den Umfang gemäß der Formel 2 a + 2 b berechnen und zurückgeben

Hinweise zur Klasse ShapeReader

  • Der Konstruktor soll der Formenliste (shapes) alle Formen der eingehenden Datei hinzufügen
  • Die Methode ArrayList<Circle> getCircles() soll alle Kreise der Formenliste (shapes) zurückgeben
  • Die Methode ArrayList<Shape> getShapesWithMinArea(minArea: double) soll alle Formen der Formenliste (shapes) zurückgeben, die mindestens den eingehenden Flächeninhalt aufweisen

Beispielhafter Aufbau der Formendatei

Circle;4
Square;5
Rectangle;3;4
Rectangle;1;7
Circle;2
Circle;3
- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/student-course/index.html b/additional-material/exam-exercises1/student-course/index.html index 9b7323cb90..99aa43b8d1 100644 --- a/additional-material/exam-exercises1/student-course/index.html +++ b/additional-material/exam-exercises1/student-course/index.html @@ -4,13 +4,13 @@ Kurs | Programmieren mit Java - +
Zum Hauptinhalt springen

Kurs

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweis zur Klasse StudentCourse

Die Methode Lecture getLectureWithMostCreditPoints() soll die Vorlesung mit den meisten ECTS-Punkten zurückgeben.

- + \ No newline at end of file diff --git a/additional-material/exam-exercises1/zoo/index.html b/additional-material/exam-exercises1/zoo/index.html index cdd2436076..80dee05165 100644 --- a/additional-material/exam-exercises1/zoo/index.html +++ b/additional-material/exam-exercises1/zoo/index.html @@ -4,13 +4,13 @@ Zoo | Programmieren mit Java - +
Zum Hauptinhalt springen

Zoo

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweis zur Klasse Bird

Die Methode void fly() soll die Zeichenkette flatter, flatter ausgeben.

Hinweis zur Klasse Mammal

Die Methode void suckle() soll die Zeichenkette saug, saug ausgeben.

Hinweis zur Klasse Fish

Die Methode void swim() soll die Zeichenkette schwimm, schwimm ausgeben.

Hinweise zur Klasse Zoo

  • Die Methode void addAnimal(animal: Animal) soll dem Zoo das eingehende Tier hinzufügen
  • Die Methode Animal getBiggestAnimal() soll das größte Tier des Zoos zurückgeben
  • Die Methode ArrayList<Fish> getFishesByColor(color: String) soll alle Fische des Zoos zur eingehenden Farbe zurückgeben
- + \ No newline at end of file diff --git a/additional-material/exam-exercises2/corner-shop/index.html b/additional-material/exam-exercises2/corner-shop/index.html index 2d958d5d6a..6b57674419 100644 --- a/additional-material/exam-exercises2/corner-shop/index.html +++ b/additional-material/exam-exercises2/corner-shop/index.html @@ -4,14 +4,14 @@ Tante-Emma-Laden | Programmieren mit Java - +
Zum Hauptinhalt springen

Tante-Emma-Laden

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse und/oder eine Testklasse.

Klassendiagramm

image

Allgemeine Hinweise

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweis zur Klasse Goods

Die Methode int compareTo(other: Goods) soll so implementiert werden, dass damit Waren aufsteigend nach ihrer Beschreibung sortiert werden können.

Hinweise zur Klasse CornerShop

  • Die Methode Entry<Goods, Integer> getEntryByDescription(description: String) soll die Anzahl Waren zur eingehenden Warenbeschreibung zurückgeben
  • Die Methode void buyGoods(goods: Goods, amount: int) soll die eingehende Ware im Lager (store) um die eingehende Anzahl erhöhen
  • Die Methode void sellGoods(goods: Goods, amount: int) soll die eingehende Ware im Lager (store) um die eingehende Anzahl reduzieren. Für den Fall, dass keine ausreichende Anzahl an Waren vorhanden ist, soll die Ausnahme OutOfStockException ausgelöst werden
- + \ No newline at end of file diff --git a/additional-material/exam-exercises2/dictionary/index.html b/additional-material/exam-exercises2/dictionary/index.html index eabf4d3a81..67f429dcce 100644 --- a/additional-material/exam-exercises2/dictionary/index.html +++ b/additional-material/exam-exercises2/dictionary/index.html @@ -4,7 +4,7 @@ Wörterbuch | Programmieren mit Java - + @@ -14,7 +14,7 @@ Zielsprache (targetLanguage) entspricht, soll die Ausnahme InvalidLanguageException ausgelöst werden
  • Die Methode void importEntries(file: File) soll den Einträgen des Wörterbuches (entries) die Wörter der eingehenden Datei als Einträge hinzufügen. Die Ausnahme FileNotFoundException soll dabei weitergeleitet werden
  • Die Methode String getTranslation(word: String) soll die Übersetzung zur eingehenden Zeichenkette zurückgeben. Für den Fall, dass keine Übersetzung vorhanden ist, soll der Wert null zurückgegeben werden
  • Beispielhafter Aufbau der Wörterdatei

    DE;Haus;EN;House
    DE;Maus;EN;Mouse
    DE;Baum;EN;Tree
    - + \ No newline at end of file diff --git a/additional-material/exam-exercises2/human-resources/index.html b/additional-material/exam-exercises2/human-resources/index.html index c777b2ac32..a3067139be 100644 --- a/additional-material/exam-exercises2/human-resources/index.html +++ b/additional-material/exam-exercises2/human-resources/index.html @@ -4,7 +4,7 @@ Personalverwaltung | Programmieren mit Java - + @@ -12,7 +12,7 @@
    Zum Hauptinhalt springen

    Personalverwaltung

    Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse und/oder eine Testklasse.

    Klassendiagramm

    image

    Allgemeine Hinweise

    • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
    • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

    Hinweise zur Klasse HumanResources

    • Die Methode void addTelephoneNumber(telephoneNumber: TelephoneNumber, person: Person) soll dem Telefonbuch (telephoneBook) die eingehende Telefonnummer als Schlüssel sowie die eingehende Person als Wert hinzufügen
    • Die Methode void addStaff(person: Person) soll der Personalliste (staff) die eingehende Person hinzufügen. Für den Fall, dass diese Person bereits in der Personalliste vorhanden ist, soll die Ausnahme DuplicateException ausgelöst werden
    • Die Methode ArrayList<TelephoneNumber> getTelephoneNumbersByPersonId(id: int) soll alle Telefonnummern zur eingehenden Personennummer zurückgeben
    - + \ No newline at end of file diff --git a/additional-material/exam-exercises2/index.html b/additional-material/exam-exercises2/index.html index a35ff1e07c..25839f1acc 100644 --- a/additional-material/exam-exercises2/index.html +++ b/additional-material/exam-exercises2/index.html @@ -4,13 +4,13 @@ Klausuraufgaben Programmierung 2 | Programmieren mit Java - +
    Zum Hauptinhalt springen
    - + \ No newline at end of file diff --git a/additional-material/exam-exercises2/job-offer/index.html b/additional-material/exam-exercises2/job-offer/index.html index 7470bd3332..0222884800 100644 --- a/additional-material/exam-exercises2/job-offer/index.html +++ b/additional-material/exam-exercises2/job-offer/index.html @@ -4,13 +4,13 @@ Stellenangebot | Programmieren mit Java - +
    Zum Hauptinhalt springen

    Stellenangebot

    Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse und/oder eine Testklasse.

    Klassendiagramm

    image

    Allgemeine Hinweise

    • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
    • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

    Hinweis zur Klasse Applicant

    Die Methode void addApplicationDocument(applicationDocument: ApplicationDocument) soll den Bewerbungsunterlagen (applicationDocuments) das eingehende Dokument hinzufügen.

    Hinweis zur Klasse JobOffer

    Die Methode void addApplicant(applicant: Applicant) soll der Bewerberliste (applicants) den eingehenden Bewerber hinzufügen.

    Hinweis zur Klasse JobOfferReader

    Die statische Methode ArrayList<JobOffer> getJobOffers(file: File) soll die Stellenangebote der eingehenden Datei zurückgeben. Die Ausnahme FileNotFoundException soll dabei weitergeleitet werden.

    Beispielhafter Aufbau der Stellenangebotsdatei

    285;Senior Developer Java
    392;Associate Consultant SAP
    430;Expert Developer Java
    - + \ No newline at end of file diff --git a/additional-material/exam-exercises2/lego-brick/index.html b/additional-material/exam-exercises2/lego-brick/index.html index 3e20fd850f..1b027fced6 100644 --- a/additional-material/exam-exercises2/lego-brick/index.html +++ b/additional-material/exam-exercises2/lego-brick/index.html @@ -4,13 +4,13 @@ Lego-Baustein | Programmieren mit Java - +
    Zum Hauptinhalt springen

    Lego-Baustein

    Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse und/oder eine Testklasse.

    Klassendiagramm

    image

    Allgemeine Hinweise

    • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
    • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

    Hinweis zur Klasse LegoBrickVolumeComparator

    Die Methode int compare(legoBrick1: LegoBrick, legoBrick2: LegoBrick) soll so implementiert werden, dass damit Lego-Bausteine aufsteigend nach ihrem Volumen sortiert werden können.

    - + \ No newline at end of file diff --git a/additional-material/exam-exercises2/library/index.html b/additional-material/exam-exercises2/library/index.html index b0be50febb..b80b8309aa 100644 --- a/additional-material/exam-exercises2/library/index.html +++ b/additional-material/exam-exercises2/library/index.html @@ -4,13 +4,13 @@ Bibliothek | Programmieren mit Java - +
    Zum Hauptinhalt springen

    Bibliothek

    Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse und/oder eine Testklasse.

    Klassendiagramm

    image

    Allgemeine Hinweise

    • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
    • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden
    • Die statische Methode UUID randomUUID() der Klasse UUID gibt eine zufällig erstellte UUID zurück

    Hinweis zur Klasse EBook

    Der Konstruktor soll alle Attribute initialisieren. Für den Fall, dass die eingehende Dateigröße kleiner gleich Null ist, soll die Ausnahme WrongFileSizeException ausgelöst werden.

    Hinweise zur Klasse Library

    • Die Methode void addBook(book: Book) soll der Bücherliste (books) das eingehende Buch mit dem Status verfügbar hinzufügen
    • Die Methode Book getBookByTitle(title: String) soll das Buch zum eingehenden Titel zurückgeben
    • Die Methode ArrayList<PaperBook> getPaperBooksByStatus(status: Status) soll alle gedruckten Bücher zum eingehenden Status zurückgeben
    - + \ No newline at end of file diff --git a/additional-material/exam-exercises2/measurement-data/index.html b/additional-material/exam-exercises2/measurement-data/index.html index a778ca4b61..46686ecdfe 100644 --- a/additional-material/exam-exercises2/measurement-data/index.html +++ b/additional-material/exam-exercises2/measurement-data/index.html @@ -4,13 +4,13 @@ Messdaten | Programmieren mit Java - +
    Zum Hauptinhalt springen

    Messdaten

    • Erstelle die Klasse MeasurementData anhand des abgebildeten Quellcodes
    • Erstelle eine ausführbare Klasse, welche mit Hilfe der Java Stream API folgende Informationen auf der Konsole ausgibt:
      • alle Messdaten aus einem bestimmtem Jahr der Kategorie F absteigend sortiert nach dem Prozentsatz
      • der Durchschnitts-Prozentsatz aller Messdaten der Kategorie X
      • alle Messdaten, bei denen die Temperatur im Sommer (Juni - August) bei mindestens 30° lag
      • die Antwort auf die Frage, ob es einen Messdatensatz aus Deutschland, datiert nach dem 1. Januar eines bestimmten Jahres, mit einem Prozentsatz von mindestens 50% gibt
      • die durchschnittliche Temperatur gruppiert nach Ländern
      • die Anzahl aller Messdaten gruppiert nach den Prozentsatzbereichen (0-10, 10-20,…)

    Quellcode

    public record MeasurementData(String country, LocalDate date, double temperature, int percentage,
    char category) {

    private final static int NUMBER_OF_ENTRIES = 100;
    private final static int MAX_DAYS = 2000;
    private final static int MAX_TEMPERATURE = 40;
    private final static int MAX_PERCENTAGE = 101;
    private final static List<String> COUNTRIES =
    List.of("USA", "Brasilien", "Deutschland", "Japan", "Indien");
    private final static List<Character> CATEGORIES = List.of('D', 'X', 'F');

    public static ArrayList<MeasurementData> getMeasurementData() {
    ArrayList<MeasurementData> measurementData = new ArrayList<>();

    Random rnd = new Random();
    LocalDate now = LocalDate.now();

    for (int i = 0; i < NUMBER_OF_ENTRIES; i++) {
    LocalDate date = now.minusDays(rnd.nextInt(MAX_DAYS));
    double temperature = rnd.nextDouble(MAX_TEMPERATURE);
    int percentage = rnd.nextInt(MAX_PERCENTAGE);
    String country = COUNTRIES.get(rnd.nextInt(COUNTRIES.size()));
    char category = CATEGORIES.get(rnd.nextInt(CATEGORIES.size()));
    measurementData.add(new MeasurementData(country, date, temperature, percentage, category));
    }

    return measurementData;
    }

    }
    - + \ No newline at end of file diff --git a/additional-material/exam-exercises2/planets/index.html b/additional-material/exam-exercises2/planets/index.html index 65c286579d..27462c086a 100644 --- a/additional-material/exam-exercises2/planets/index.html +++ b/additional-material/exam-exercises2/planets/index.html @@ -4,13 +4,13 @@ Planeten | Programmieren mit Java - +
    Zum Hauptinhalt springen

    Planeten

    • Setze das abgebildete Klassendiagramm vollständig um
    • Erstelle eine ausführbare Klasse, welche mit Hilfe der Java Stream API folgende Informationen auf der Konsole ausgibt:
      • alle Planeten mit mehr als 5 Monden
      • den durchschnittlichen Durchmesser aller Gasplaneten
      • alle Planeten absteigend sortiert nach der Masse
      • die Antwort auf die Frage, ob alle Planeten mindestens einen Mond besitzen
      • alle Planeten gruppiert nach ihrem Typ

    Klassendiagramm

    image

    Allgemeine Hinweise

    • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
    • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

    Hinweis zur Klasse Planets

    Die Methode ArrayList<Planet> getPlanets() soll alle Planeten des Sonnensystems zurückgeben.

    - + \ No newline at end of file diff --git a/additional-material/exam-exercises2/shopping-portal/index.html b/additional-material/exam-exercises2/shopping-portal/index.html index 7ae8b8b5d5..98069d711f 100644 --- a/additional-material/exam-exercises2/shopping-portal/index.html +++ b/additional-material/exam-exercises2/shopping-portal/index.html @@ -4,14 +4,14 @@ Einkaufsportal | Programmieren mit Java - +
    Zum Hauptinhalt springen

    Einkaufsportal

    Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse und/oder eine Testklasse.

    Klassendiagramm

    image

    Allgemeine Hinweise

    • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
    • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

    Hinweis zur Klasse Item

    Die Methode double getSubTotal() soll die Zwischensumme des Warenkorbeintrags gemäß der Formel Produktpreis * Anzahl zurückgeben.

    Hinweise zur Klasse ShoppingCart

    • Die Methode void addItem(sellable: T, amount: int) soll den Einträgen des Warenkorbs (items) das eingehende verkäufliche Objekt und die eingehende Anzahl als Eintrag hinzufügen
    • Die Methode void removeItem(sellable: T) soll das eingehende verkäufliche Objekt aus den Einträgen des Warenkorbs (items) entfernen
    • Die Methode double getTotal() soll die Gesamtsumme des Warenkorbs zurückgeben

    Hinweise zur Klasse ShoppingPortal

    • Die Methode void addProductToShoppingCart(product: Product, amount: int) soll dem Warenkorb (shoppingCart) das eingehende Produkt und die eingehende Anzahl als Eintrag hinzufügen
    • Die Methode void removeProductFromShoppingCart(product: Product) soll das eingehende Produkt aus dem Warenkorb (shoppingCart) entfernen
    • Die Methode void clearShoppingCart() soll alle Einträge des Warenkorbs (shoppingCart) entfernen
    - + \ No newline at end of file diff --git a/additional-material/exam-exercises2/space-station/index.html b/additional-material/exam-exercises2/space-station/index.html index 068c93228e..1783b06f30 100644 --- a/additional-material/exam-exercises2/space-station/index.html +++ b/additional-material/exam-exercises2/space-station/index.html @@ -4,7 +4,7 @@ Raumstation | Programmieren mit Java - + @@ -12,7 +12,7 @@
    Zum Hauptinhalt springen

    Raumstation

    Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse und/oder eine Testklasse.

    Klassendiagramm

    image

    Allgemeine Hinweise

    • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
    • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

    Hinweise zur Klasse SpaceStation

    • Die Methode void land(bayNumber: Integer, spaceFighter: SpaceFighter) soll den eingehenden Sternenjäger in der Bucht mit der eingehenden Buchtnummer landen lassen. Für den Fall, dass der eingehende Sternenjäger bereits gelandet ist (also bereits eine Bucht belegt), soll die Ausnahme SpaceFighterAlreadyLandedException ausgelöst werden und für den Fall, dass die Bucht bereits belegt ist, die Ausnahme BayAlreadyLoadedException
    • Die Methode SpaceFighter getFastestSpaceFighter() soll den schnellsten Sternenjäger der Raumstation zurückgeben
    - + \ No newline at end of file diff --git a/additional-material/exam-exercises2/video-collection/index.html b/additional-material/exam-exercises2/video-collection/index.html index 67d3d7cabf..11cc8e645c 100644 --- a/additional-material/exam-exercises2/video-collection/index.html +++ b/additional-material/exam-exercises2/video-collection/index.html @@ -4,14 +4,14 @@ Videosammlung | Programmieren mit Java - +
    Zum Hauptinhalt springen

    Videosammlung

    Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse und/oder eine Testklasse.

    Klassendiagramm

    image

    Allgemeine Hinweise

    • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
    • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

    Hinweise zur Klasse VideoCollection

    • Die Methode void addVideo(video: Video) soll der Videoliste (videos) das eingehende Video hinzufügen
    • Die Methode void importVideos(file: File) soll der Videoliste (videos) die Videos der eingehenden Datei hinzufügen. Die Ausnahme FileNotFoundException soll dabei weitergeleitet werden
    • Die Methode Video getVideoByTitle(title: String) soll das Video zum eingehenden Titel zurückgeben. Für den Fall, dass kein Video gefunden wird, soll der Wert null zurückgegeben werden

    Beispielhafter Aufbau der Videodatei

    The Matrix;SCIFI;1999;VHS;false
    Evil Dead;HORROR;1981;BLURAY;25
    - + \ No newline at end of file diff --git a/additional-material/instructions/cmd/index.html b/additional-material/instructions/cmd/index.html index b22a7e7145..99022c6d65 100644 --- a/additional-material/instructions/cmd/index.html +++ b/additional-material/instructions/cmd/index.html @@ -4,7 +4,7 @@ Arbeiten mit der Eingabeaufforderung | Programmieren mit Java - + @@ -14,7 +14,7 @@ <Laufwerksbuchstabe>: zum angegebenen Laufwerk.

    Schritt 3: Quellcode-Datei in Bytecode-Datei überführen (kompilieren)

    Das Überführen einer Quellcode-Datei in eine Bytecode-Datei erfolgt mit Hilfe des Java-Kompilers. Hierzu muss der komplette Pfad zur Klasse inklusive der Dateiendung angegeben werden.

    C:\Users\Maier\Projects\Java\src>javac demos/MainClass.java -d ../bin
    Hinweis

    Der optionale Zusatz -d ermöglicht die Angabe des Verzeichnisses für die erstellten Bytecode-Dateien.

    Schritt 4: Bytecode-Datei ausführen

    Das Ausführen einer Bytecode-Datei erfolgt über die Java Virtual Machine. Auch beim Ausühren muss der komplette Klassenpfad angegeben werden, allerdings ohne eine Dateiendung.

    C:\Users\Maier\Projects\Java\src>cd..
    C:\Users\Maier\Projects\Java>cd bin
    C:\Users\Maier\Projects\Java\bin>java demos.MainClass
    Hinweis

    Um eine Bytecode-Datei ausführen zu können, benötigt die dazugehörige Java-Klasse die Methode void main(String[]).

    - + \ No newline at end of file diff --git a/additional-material/instructions/index.html b/additional-material/instructions/index.html index d931884d2d..082ac0de71 100644 --- a/additional-material/instructions/index.html +++ b/additional-material/instructions/index.html @@ -4,13 +4,13 @@ Anleitungen | Programmieren mit Java - +
    Zum Hauptinhalt springen
    - + \ No newline at end of file diff --git a/additional-material/instructions/setup-eclipse/index.html b/additional-material/instructions/setup-eclipse/index.html index e5427a71a8..153d2b3801 100644 --- a/additional-material/instructions/setup-eclipse/index.html +++ b/additional-material/instructions/setup-eclipse/index.html @@ -4,13 +4,13 @@ Eclipse einrichten | Programmieren mit Java - +
    Zum Hauptinhalt springen

    Eclipse einrichten

    JDK herunterladen und installieren

    • JDK herunterladen (https://jdk.java.net/ [JDK Version] – Builds – Windows/x64 – zip)
    • Zip-Datei openjdk-[JDK Version]_windows-x64_bin.zip entpacken
    • Unterordner jdk-[JDK Version] der Zip-Datei in den Ordner C:\Progam Files\Java kopieren (gegebenenfalls den Ordner Java anlegen)

    Eclipse herunterladen und installieren

    • Eclipse herunterladen (https://www.eclipse.org/downloads/ – Download 64 bit)
    • Exe-Datei eclipse-inst-jre-win64.exe ausführen
    • Drucktaste Eclipse IDE for Java Developers betätigen
    • Drucktaste Select a Java VM betätigen
    • Drucktaste Browse… betätigen
    • Ordner C:\Program Files\Java\jdk-[JDK Version] auswählen und Drucktaste Select Folder betätigen
    • Drucktaste OK betätigen
    • Drucktaste INSTALL betätigen
    • Drucktaste LAUNCH betätigen
    • Option Use this as the default and do not ask again auswählen und Drucktaste Continue betätigen

    Eclipse-Plugin PlantUML herunterladen und installieren

    • Eclipse starten
    • Zu Help – Install new Software… navigieren
    • Bei Feld Work with den Wert http://hallvard.github.io/plantuml/ eingeben und ENTER betätigen
    • Drucktaste Select All betätigen
    • Drucktaste Next > betätigen
    • Option I accept the terms of the license agreement auswählen und Drucktaste FINISH betätigen
    • Druckaste Finish betätigen
    • Drucktaste Select All betätigen
    • Drucktaste Trust selected betätigen
    • Drucktaste Restart now betätigen

    Persönliches Java-Projekt erstellen und einrichten

    • Eclipse starten
    • Zu File – New – Java Project navigieren
    • Bei Feld Project name den Wert [Projektname] eingeben (z.B. Java)
    • Option Use default JRE 'jdk-[JDK Version]' and workspace compiler preferences auswählen und Drucktaste Finish betätigen
    • Drucktaste Apply and Close betätigen
    - + \ No newline at end of file diff --git a/additional-material/instructions/use-eclipse/index.html b/additional-material/instructions/use-eclipse/index.html index 89995898e2..4a920e5bd9 100644 --- a/additional-material/instructions/use-eclipse/index.html +++ b/additional-material/instructions/use-eclipse/index.html @@ -4,13 +4,13 @@ Eclipse verwenden | Programmieren mit Java - +
    Zum Hauptinhalt springen

    Eclipse verwenden

    Hilfreiche Tastaturkürzel

    KürzelFunktion
    Ctrl + SpaceAutovervollständigung
    Shift + F1Quellcode formatieren
    Ctrl + 1Quick-Fix ausführen
    Ctrl + 7Quellcode auskommentieren / entkommentieren
    Ctrl + +Quellcode-Schriftgröße erhöhen
    Ctrl + -Quellcode-Schriftgröße verringern

    Hilfreiche Einstellungen

    • Window - Preferences - Java - Editor - Save actions - Perform the selected actions on save: Ja
    • Window - Preferences - Java - Editor - Save actions - Perform the selected actions on save - Format source code: Ja
    • Window - Preferences - Java - Editor - Save actions - Perform the selected actions on save - Organize imports: Ja
    • Window - Preferences - Java - Editor - Save actions - Perform the selected actions on save - Additional actions: Ja

    Perspektiven wechseln

    image

    Hinweis

    Perspektiven können über Window – Perspective – Reset Perspective... auf den Ursprungszustand zurückgesetzt werden

    Hilfreiche Funktionen der Java-Perspektive

    image

    Hilfreiche Funktionen der Debugging-Perspektive

    image

    Git-Repository in Eclipse integrieren

    • In der Git-Perspektive Drucktaste Clone a Git repository betätigen
    • URI eingeben (z.B. https://github.com/appenmaier/dhbw-java) und Drucktaste Next > betätigen
    • Drucktaste Next > betätigen
    • Drucktaste Finish betätigen
    • Importiertes Git-Repository aufklappen
    • Im Working Tree Rechtsklick auf den gewünschten Ordner ausführen
    • Option Import Projects... auswählen
    • Drucktaste Finish betätigen

    Java-Projekt zu einem Git-Repository hinzufügen

    • In der Java-Perspektive Rechtsklick auf gewünschtes Java-Projekt ausführen
    • Option Team – Share Project auswählen
    • Option Git auswählen und Drucktaste Next > betätigen
    • Gewünschtes Git-Repository auswählen und Drucktaste Finish betätigen

    Git-Staging-View anzeigen lassen

    • Option Window – Show View – Other... auswählen
    • Option Git Staging auswählen
    • Drucktaste OK betätigen

    Änderungen eines lokalen Git-Repositories hochladen (Pushen)

    • In der View Git Staging alle geänderten Objekte markieren und Drucktaste Add selected files to the index betätigen
    • Commit Message eingeben und Drucktaste Commit and push betätigen

    Lokales Git-Repository aktualisieren (Pullen)

    • In der Java-Perspektive Rechtsklick auf gewünschtes Java-Projekt ausführen
    • Option Team – Pull auswählen
    - + \ No newline at end of file diff --git a/additional-material/slides/index.html b/additional-material/slides/index.html index 3125f0a71f..0d39720f69 100644 --- a/additional-material/slides/index.html +++ b/additional-material/slides/index.html @@ -4,7 +4,7 @@ Slides (Steffen) | Programmieren mit Java - + @@ -16,13 +16,13 @@ Wert besitz, soll dieser ignoriert werden.

    Erstelle eine ausführbare Klasse in der ein Auto mit der Marke "Mercedes", dem Modell "CLA45" und dem Zusatz "AMG" initialisiert wird. Gib das Auto in der Konsole aus. Entferne den Zusatz von dem Auto und gebe -das Auto erneut in der Konsole aus.

    Aufgabe Lambdafunktionen

    Klassendiagramm


    Hinweise zur Klasse Helper
    +das Auto erneut in der Konsole aus.

    public class Car {
    public String name;
    public String brand;
    public Optional<String> addition;

    public Car(String name, String brand) {
    this.name = name;
    this.brand = brand;
    this.addition = Optional.empty();
    }

    public Car(String name, String brand, String addition) {
    this.name = name;
    this.brand = brand;
    this.addition = Optional.ofNullable(addition);
    }

    public String toString() {
    if (addition.isPresent()) {
    return brand + " " + name + addition.get();
    } else {
    return brand + " " + name;
    }
    }
    }
    public class Main {
    public static void main(String[] args) {
    Car benz = new Car("CLA45", "Mercedes", "AMG");
    System.out.println(benz.toString());
    benz.addition = Optional.empty();
    System.out.println(benz.toString());
    }
    }

    Aufgabe Lambdafunktionen

    Klassendiagramm


    Hinweise zur Klasse Helper
    Im Klassendiagramm sind keine Rückgabetypen für die statischen Attribute angegeben. Gib für jedes Attribut den geeigneten Typ an.

    Hinweise zur Klasse Data

    Hinweise zur Klasse Task2
    Verwende für die nachfolgende Abfolge die Methoden der Klassen Data und Helper. Erzeuge einen Stream von Tieren und filtere jene heraus, die Größer als 50 Zentimeter sind. -Gib anschließend den vollen Namen und die Größe der Tiere in der Konsole aus.

    Aufgabe Streams

    Klassendiagramm


    Hinweise zur Klasse PhoneStore

    Klausurvorbereitung Java I

    08.03.2023

    Aufgaben in der Probeklausur 2202_Q4

    14.03.2023

    Aufgabe Array


    Hinweise zur Methode split
    +Gib anschließend den vollen Namen und die Größe der Tiere in der Konsole aus.

    public record Animal(String firstName, String lastName, int age, int size) {}
    public class Data {
    public static Stream<Animal> getAnimals() {
    return Stream.of(new Animal("Steffen", "Merk", 28, 170));
    }
    }
    public class Helper {
    public static Predicate<Animal> isNewBorn = animal -> animal.age() < 1;
    public static Function<Animal, String> toOutput = animal -> animal.firstName()
    + " " + animal.lastName() + " ist " + animal.size() + " Zentimeter groß";

    public static Predicate<Animal> isHigherThan(int size) {
    return animal -> animal.size() > size;
    }
    }
    public class Task2 {
    public static void main(String[] args) {
    Data.getAnimals()
    .filter(Helper.isHigherThan(50))
    .map(Helper.toOutput)
    .forEach(System.out::println);
    }
    }

    Aufgabe Streams

    Klassendiagramm


    public class PhoneStore {
    private ArrayList<Phone> phones;

    public PhoneStore(ArrayList<Phone> phones) {
    this.phones = phones;
    }

    public List<Phone> q1() {
    return phones.stream()
    .filter(p -> p.brand() == Brand.HUAWEI)
    .filter(p -> p.cameras() > 3)
    .sorted((p1, p2) -> Integer.compare(p2.cpuPower(), p1.cpuPower()))
    .limit(3)
    .sorted((p1, p2) -> Double.compare(p2.price(), p1.price()))
    .toList();
    }

    public OptionalDouble q2() {
    return phones.stream()
    .filter(p -> p.batterySize() > 2500)
    .mapToInt(p -> p.cameras())
    .average();
    }

    public List<Phone> q3(double maxPrice) {
    return phones.stream()
    .filter(p -> p.price() <= maxPrice)
    .filter(p -> p.connectionType().isModern())
    .filter(p -> p.cpuPower() < 2400)
    .sorted((p1, p2) -> Double.compare(p1.price(), p2.price()))
    .toList();
    }

    public Map<String, Phone> q4() {
    return phones.stream()
    .collect(Collectors.toMap(
    p -> p.brand().name() + p.connectionType().name(),
    p -> p));
    }

    public Map<ConnectionType, List<Phone>> q5() {
    return phones.stream()
    .collect(Collectors.groupingBy(p -> p.connectionType()));
    }

    }

    Hinweise zur Klasse PhoneStore

    Klausurvorbereitung Java I

    08.03.2023

    Aufgaben in der Probeklausur 2202_Q4

    14.03.2023

    Aufgabe Array


    Hinweise zur Methode split
    Die Methode split soll ein Array vom Typ int so verarbeiten, dass ein neues Array erstellt wird, was alle Elemente des eingehenden Arrays bis zum angegebenen Index enthält. Das neu erstellte Array soll anschließend zurückgegeben werden. Verwende keine ArrayList! @@ -50,7 +50,7 @@ Konsole aus.

    Aufgabe Comparator


    Hinweise zur Klasse CarVendor

    Hinweise zur Klasse ConstructionYearComparator

    - + \ No newline at end of file diff --git a/assets/js/f66ae8e2.2de0d04e.js b/assets/js/f66ae8e2.2de0d04e.js deleted file mode 100644 index 2ea8ea14c3..0000000000 --- a/assets/js/f66ae8e2.2de0d04e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkjava_docs=self.webpackChunkjava_docs||[]).push([[9970],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>g});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var u=n.createContext({}),o=function(e){var t=n.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=o(e.components);return n.createElement(u.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},k=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,u=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=o(a),k=r,g=p["".concat(u,".").concat(k)]||p[k]||m[k]||l;return a?n.createElement(g,i(i({ref:t},d),{},{components:a})):n.createElement(g,i({ref:t},d))}));function g(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=k;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var o=2;o{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>c,frontMatter:()=>u,metadata:()=>d,toc:()=>m});var n=a(7462),r=(a(7294),a(3905));const l=a.p+"assets/images/optionals-107747e6db3d97ecec463ef70feeecc4.png",i=a.p+"assets/images/lambdas-f8a84de54f3fd7519ee0c06c21cad0d5.png",s=a.p+"assets/images/streams-8476221e05c1c2802806cc90f7342225.png",u={title:"Slides (Steffen)",description:"",sidebar_position:40,tags:[]},o=void 0,d={unversionedId:"additional-material/slides",id:"additional-material/slides",title:"Slides (Steffen)",description:"",source:"@site/docs/additional-material/slides.md",sourceDirName:"additional-material",slug:"/additional-material/slides",permalink:"/java-docs/additional-material/slides",draft:!1,editUrl:"https://github.com/jappuccini/java-docs/tree/main/docs/additional-material/slides.md",tags:[],version:"current",sidebarPosition:40,frontMatter:{title:"Slides (Steffen)",description:"",sidebar_position:40,tags:[]},sidebar:"additionalMaterialSidebar",previous:{title:"Videosammlung",permalink:"/java-docs/additional-material/exam-exercises2/video-collection"}},p={},m=[{value:"Java I",id:"java-i",level:2},{value:"Java II",id:"java-ii",level:2},{value:"Demos",id:"demos",level:2},{value:"Klausurvorbereitung Java II",id:"klausurvorbereitung-java-ii",level:2},{value:"Aufgabe Optionals",id:"aufgabe-optionals",level:2},{value:"Klassendiagramm",id:"klassendiagramm",level:3},{value:"Aufgabe Lambdafunktionen",id:"aufgabe-lambdafunktionen",level:2},{value:"Klassendiagramm",id:"klassendiagramm-1",level:3},{value:"Aufgabe Streams",id:"aufgabe-streams",level:2},{value:"Klassendiagramm",id:"klassendiagramm-2",level:3},{value:"Hinweise zur Klasse PhoneStore",id:"hinweise-zur-klasse-phonestore",level:2},{value:"Klausurvorbereitung Java I",id:"klausurvorbereitung-java-i",level:2},{value:"08.03.2023",id:"08032023",level:3},{value:"14.03.2023",id:"14032023",level:3},{value:"Aufgabe Array",id:"aufgabe-array",level:4},{value:"Aufgabe Exception",id:"aufgabe-exception",level:4},{value:"21.03.2023",id:"21032023",level:3},{value:"Aufgabe abstrakte Klasse, Enum",id:"aufgabe-abstrakte-klasse-enum",level:4},{value:"Aufgabe Comparator",id:"aufgabe-comparator",level:4}],k={toc:m},g="wrapper";function c(e){let{components:t,...a}=e;return(0,r.kt)(g,(0,n.Z)({},k,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"java-i"},"Java I"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/intro"},"Einleitung")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/datatypes-and-dataobjects"},"Datentypen und Datenobjekte")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/methods-and-operators"},"Methoden und Operatoren")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/if-and-switch"},"Kontrollstrukturen und Arrays")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/math-random-scanner"},"Math, Random und Scanner")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/classes-and-objects"},"Klassen und Objekte")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/constructor-and-static"},"Konstruktor und static")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/class-diagram-java-api-enum"},"Java API, Enum, Klassendiagramm, Aktivit\xe4tsdiagramm")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/Inheritance"},"Vererbung")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/polymorphy"},"Polymorphie")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/abstract-and-final"},"Abstrakte und finale Klassen")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/interfaces"},"Interfaces")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/exceptions"},"Exceptions"))),(0,r.kt)("h2",{id:"java-ii"},"Java II"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/recap"},"Wiederholung und Klausurbesprechung 10.08.23")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/lambda"},"Innere Klassen und Lambda Funktionen 17.08.23")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/records-optionals"},"Records und Optionals 18.08.23")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/generics-maps"},"Generics und Maps 24.08.23")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/stream-api"},"Stream API 31.08.23 & 01.09.23")),(0,r.kt)("li",{parentName:"ul"},"Probeklausur 07.09.23"),(0,r.kt)("li",{parentName:"ul"},"Probeklausur 14.09.23")),(0,r.kt)("h2",{id:"demos"},"Demos"),(0,r.kt)("p",null,"Die Endergebnisse der Demos findet ihr in folgendem Branch:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git switch demos/steffen\n")),(0,r.kt)("h2",{id:"klausurvorbereitung-java-ii"},"Klausurvorbereitung Java II"),(0,r.kt)("a",{href:"/java-docs/pdf/java-cheat-sheet.pdf",target:"_blank"},"Cheatsheet"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Altklausuren 2022 Q3 - Klausur Java 2 Aufgabe 3")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java",metastring:"L\xf6sung","L\xf6sung":!0},'public class PlanetQueries {\n\n public static ArrayList planets = Planet.getPlantes();\n\n public static void a() {\n PlanetQueries.planets.stream()\n .filter(p -> p.moons() > 5)\n .forEach(p -> {\n System.out.println(p.name() + ": " + p.moons());\n });\n }\n\n public static OptionalDouble b() {\n return PlanetQueries.planets.stream()\n .filter(p -> p.type() == Type.GAS_PLANET)\n .mapToDouble(p -> p.diameter())\n .average();\n }\n\n public static List c() {\n return PlanetQueries.planets.stream()\n .sorted((p1, p2) -> Double.compare(p2.mass(), p1.mass()))\n .toList();\n }\n\n public static boolean d() {\n return PlanetQueries.planets.stream()\n .allMatch(p -> p.moons() > 0);\n }\n\n public static void e() {\n Map> planetsMap = PlanetQueries.planets.stream()\n .collect(Collectors.groupingBy(p -> p.type()));\n planetsMap.entrySet()\n .stream()\n .forEach(entry -> {\n System.out.println(entry.getKey() + ":" + entry.getValue());\n });\n }\n}\n')),(0,r.kt)("ol",{start:2},(0,r.kt)("li",{parentName:"ol"},"Altklausuren 2022 Q3 - Probeklausur Java 2 Klausur Aufgabe 3"),(0,r.kt)("li",{parentName:"ol"},"Altklausuren 2023 Q1 - Wiederholklausur 2 Java 2 Klausur Aufgabe 3"),(0,r.kt)("li",{parentName:"ol"},"Altklausuren 2023 Q1 - Wiederholklausur Java 2 Klausur Aufgabe 3")),(0,r.kt)("h2",{id:"aufgabe-optionals"},"Aufgabe Optionals"),(0,r.kt)("h3",{id:"klassendiagramm"},"Klassendiagramm"),(0,r.kt)("img",{src:l}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zu den Konstruktoren")," ",(0,r.kt)("br",null),"\nDie Konstruktoren sollen alle Attribute initialisieren."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Methode toString ")," ",(0,r.kt)("br",null),"\nDie Methode toString soll die Attribute brand, model und addition zur\xfcckgeben.\nDie Attribute sollen durch eine Leertaste getrennt sein. Falls addition keinen\nWert besitz, soll dieser ignoriert werden."),(0,r.kt)("p",null,'Erstelle eine ausf\xfchrbare Klasse in der ein Auto mit der Marke "Mercedes",\ndem Modell "CLA45" und dem Zusatz "AMG" initialisiert wird.\nGib das Auto in der Konsole aus. Entferne den Zusatz von dem Auto und gebe\ndas Auto erneut in der Konsole aus.'),(0,r.kt)("h2",{id:"aufgabe-lambdafunktionen"},"Aufgabe Lambdafunktionen"),(0,r.kt)("h3",{id:"klassendiagramm-1"},"Klassendiagramm"),(0,r.kt)("img",{src:i}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse Helper")," ",(0,r.kt)("br",null),"\nIm Klassendiagramm sind keine R\xfcckgabetypen f\xfcr die\nstatischen Attribute angegeben. Gib f\xfcr jedes Attribut\nden geeigneten Typ an."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Das Attribut ",(0,r.kt)("strong",{parentName:"li"},"isNewBorn")," soll eine Lambdafunktion enthalten die ermittelt, ob ein Tier j\xfcnger als 1 Jahr alt ist."),(0,r.kt)("li",{parentName:"ul"},"Das Attribut ",(0,r.kt)("strong",{parentName:"li"},"toOutput"),' soll eine Lambdafunktion enthalten, die ein Tier in folgenden String konvertiert: "firstName lastName ist size Zentimeter gro\xdf."'),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"isHigherThan")," soll eine Lambdafunktion zur\xfcckgeben, die abh\xe4ngig vom Parameter size \xfcberpr\xfcft, ob ein Tier gr\xf6\xdfer als die angegebene Gr\xf6\xdfe ist.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Hinweise zur Klasse Data")," ",(0,r.kt)("br",null)),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"getAnimals")," soll einen Stream von einem einzelnen Tier mit den Werten deiner Wahl zur\xfcckgeben.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Hinweise zur Klasse Task2")," ",(0,r.kt)("br",null),"\nVerwende f\xfcr die nachfolgende Abfolge die Methoden der Klassen Data und Helper.\nErzeuge einen Stream von Tieren und filtere jene heraus, die Gr\xf6\xdfer als 50 Zentimeter sind.\nGib anschlie\xdfend den vollen Namen und die Gr\xf6\xdfe der Tiere in der Konsole aus."),(0,r.kt)("h2",{id:"aufgabe-streams"},"Aufgabe Streams"),(0,r.kt)("h3",{id:"klassendiagramm-2"},"Klassendiagramm"),(0,r.kt)("img",{src:s}),(0,r.kt)("br",null),(0,r.kt)("h2",{id:"hinweise-zur-klasse-phonestore"},"Hinweise zur Klasse PhoneStore"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"q1")," soll die drei Leistungsst\xe4rksten (CPU Power) Smart Phones der Marke Huawei, absteigend nach dem Preis zur\xfcckgeben, welche mehr als 3 Kameras haben."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"q2")," soll die durchschnittliche Kameraanzahl aller Smart Phones zur\xfcckgeben, die einen Akku von 2500 oder mehr haben."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"q3")," soll die Smart Phones aufsteigend nach Preis zur\xfcckgeben, die den ",(0,r.kt)("strong",{parentName:"li"},"maxPrice")," nicht \xfcberschreiten, einen modernen Anschlusstyp haben und weniger als 2400 Leistung (CPU Power) haben."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"q4")," soll eine Map zur\xfcckgeben. Der Schl\xfcssel soll aus dem Markennamen und dem Anschlusstyp zusammengesetzt werden. Als Wert soll das Auto zur\xfcckgegeben werden."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"q5")," soll eine Map zur\xfcckgeben, welche alle Smart Phones nach Anschlusstyp gruppiert.")),(0,r.kt)("h2",{id:"klausurvorbereitung-java-i"},"Klausurvorbereitung Java I"),(0,r.kt)("h3",{id:"08032023"},"08.03.2023"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Aufgaben in der Probeklausur 2202_Q4 ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Aufgabe 1-a f\xfcr die Methode a"),(0,r.kt)("li",{parentName:"ul"},"Aufgabe 1-b"),(0,r.kt)("li",{parentName:"ul"},"Aufgabe 2"),(0,r.kt)("li",{parentName:"ul"},"Aufgabe 5")),(0,r.kt)("h3",{id:"14032023"},"14.03.2023"),(0,r.kt)("h4",{id:"aufgabe-array"},"Aufgabe Array"),(0,r.kt)("img",{style:{height:"200px"},src:"/java-docs/img/array_task.png"}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Methode split ")," ",(0,r.kt)("br",null),"\nDie Methode split soll ein Array vom Typ int so verarbeiten, dass ein neues Array erstellt wird, was alle Elemente des\neingehenden Arrays bis zum angegebenen Index enth\xe4lt. Das neu erstellte Array soll anschlie\xdfend zur\xfcckgegeben werden.\nVerwende keine ArrayList!\nBsp.: Der Parameter numbers enth\xe4lt die Elemente 10, 8, 3, 22 & 1 der Parameter index ist gleich 2. Zur\xfcckgegeben\nwerden soll ein neues Array, das die Elemente 10, 8 & 3 enth\xe4lt. "),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Methode main ")," ",(0,r.kt)("br",null),"\nIn der Methode main soll ein Arrays erstellt werden, dass die Ganzzahlen 10, 8, 3, 22 & 1 enth\xe4lt.\nErstelle mithilfe der Methode split ein neues Array, dass die ersten drei Elemente des ersten Arrays enthalten soll.\nGib mithilfe einer For-Schleife alle Elemente des neu erstellten Arrays aus. "),(0,r.kt)("h4",{id:"aufgabe-exception"},"Aufgabe Exception"),(0,r.kt)("img",{style:{height:"200px"},src:"/java-docs/img/exception_task.png"}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse OverflowException ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren. "),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"getHigherThanCapacity")," soll die zu viel hinzugef\xfcgte Fl\xfcssigkeit zur\xfcckgeben. ")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse Barrel")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren. Das Fass ist Anfangs immer leer."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"addFluid")," soll die OverflowException\tausl\xf6sen, wenn die Summe der eingehenden\nFl\xfcssigkeit und der im Fass befindenden Fl\xfcssigkeit die Kapazit\xe4t \xfcberschreitet. \xdcbergebe der Ausnahme\nden Wert, um wieviel die maximale Kapazit\xe4t \xfcberschritten wurde. Wenn die maximale Kapazit\xe4t nicht\n\xfcberschritten wird, soll die eingehende Fl\xfcssigkeit dem Fass hinzugef\xfcgt werden")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Zusatz in ausf\xfchrbarer Klasse ")," ",(0,r.kt)("br",null),"\nErstelle ein neues Fass, das die maximale Kapazit\xe4t von 100 hat. Versuche anschlie\xdfend das Fass auf 101 zu\nf\xfcllen und fange die Ausnahme ab. Gib in der Konsole aus, um wieviel die maximale Kapazit\xe4t \xfcberschritten\nwurde.",(0,r.kt)("br",null),"\n",(0,r.kt)("strong",{parentName:"p"}," Beispiel Konsolenausgabe: ")," ",(0,r.kt)("br",null),'\n"Es w\xe4re um 1 zu viel bef\xfcllt worden." '),(0,r.kt)("h3",{id:"21032023"},"21.03.2023"),(0,r.kt)("h4",{id:"aufgabe-abstrakte-klasse-enum"},"Aufgabe abstrakte Klasse, Enum"),(0,r.kt)("img",{style:{height:"200px"},src:"/java-docs/img/class_task.png"}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse EnergySource ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Erstelle die zwei Konstanten Batterie und Steckdose f\xfcr die Arten einer\nEnergiequelle."),(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode getType soll den Typ der Energiequelle zur\xfcckgeben."),(0,r.kt)("li",{parentName:"ul"},"Die Methode canBeUsedEverywhere soll true zur\xfcckgeben, wenn die Energiequelle\neine Batterie ist.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse Phone ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse CablePhone ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode readyForUse soll true zur\xfcckgeben, wenn das Kabeltelefon\neingesteckt und eingeschalten ist.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse SmartPhone ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode readyForUse soll true zur\xfcckgeben, wenn die Energie des\nSmartphones die minimal erforderliche Energie \xfcberschreitet.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse ExamTask04 ")," ",(0,r.kt)("br",null),"\nErzeuge ein Kabeltelefon mit Akku und eines, dass an die Steckdose\nangeschlossen ist. Erzeuge ein leeres Smartphone und eines das halb voll ist.\nSpeichere alle erzeugten Fahrzeuge in einer ArrayList. Ermittle mithilfe einer\nSchleife die Anzahl der betriebsbereiten Telefone. Gib die Anzahl in der\nKonsole aus."),(0,r.kt)("h4",{id:"aufgabe-comparator"},"Aufgabe Comparator"),(0,r.kt)("img",{style:{height:"200px"},src:"/java-docs/img/comparator_task.png"}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse CarVendor ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode sortByConstructionYear soll die Autos absteigend nach Baujahr\nsortieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode print soll das Baujahr aller Autos in der Konsole ausgeben.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse ConstructionYearComparator ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der ConstructionYearComparator soll das Comparator Interface implementieren\nund Autos absteigend nach Baujahr sortieren.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f66ae8e2.fb1d8aa9.js b/assets/js/f66ae8e2.fb1d8aa9.js new file mode 100644 index 0000000000..7a71eabd09 --- /dev/null +++ b/assets/js/f66ae8e2.fb1d8aa9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkjava_docs=self.webpackChunkjava_docs||[]).push([[9970],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>k});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var u=a.createContext({}),o=function(e){var n=a.useContext(u),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=o(e.components);return a.createElement(u.Provider,{value:n},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,u=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=o(t),c=r,k=d["".concat(u,".").concat(c)]||d[c]||m[c]||i;return t?a.createElement(k,l(l({ref:n},p),{},{components:t})):a.createElement(k,l({ref:n},p))}));function k(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,l=new Array(i);l[0]=c;var s={};for(var u in n)hasOwnProperty.call(n,u)&&(s[u]=n[u]);s.originalType=e,s[d]="string"==typeof e?e:r,l[1]=s;for(var o=2;o{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>g,frontMatter:()=>u,metadata:()=>p,toc:()=>m});var a=t(7462),r=(t(7294),t(3905));const i=t.p+"assets/images/optionals-107747e6db3d97ecec463ef70feeecc4.png",l=t.p+"assets/images/lambdas-f8a84de54f3fd7519ee0c06c21cad0d5.png",s=t.p+"assets/images/streams-8476221e05c1c2802806cc90f7342225.png",u={title:"Slides (Steffen)",description:"",sidebar_position:40,tags:[]},o=void 0,p={unversionedId:"additional-material/slides",id:"additional-material/slides",title:"Slides (Steffen)",description:"",source:"@site/docs/additional-material/slides.md",sourceDirName:"additional-material",slug:"/additional-material/slides",permalink:"/java-docs/additional-material/slides",draft:!1,editUrl:"https://github.com/jappuccini/java-docs/tree/main/docs/additional-material/slides.md",tags:[],version:"current",sidebarPosition:40,frontMatter:{title:"Slides (Steffen)",description:"",sidebar_position:40,tags:[]},sidebar:"additionalMaterialSidebar",previous:{title:"Videosammlung",permalink:"/java-docs/additional-material/exam-exercises2/video-collection"}},d={},m=[{value:"Java I",id:"java-i",level:2},{value:"Java II",id:"java-ii",level:2},{value:"Demos",id:"demos",level:2},{value:"Klausurvorbereitung Java II",id:"klausurvorbereitung-java-ii",level:2},{value:"Aufgabe Optionals",id:"aufgabe-optionals",level:2},{value:"Klassendiagramm",id:"klassendiagramm",level:3},{value:"Aufgabe Lambdafunktionen",id:"aufgabe-lambdafunktionen",level:2},{value:"Klassendiagramm",id:"klassendiagramm-1",level:3},{value:"Aufgabe Streams",id:"aufgabe-streams",level:2},{value:"Klassendiagramm",id:"klassendiagramm-2",level:3},{value:"Hinweise zur Klasse PhoneStore",id:"hinweise-zur-klasse-phonestore",level:2},{value:"Klausurvorbereitung Java I",id:"klausurvorbereitung-java-i",level:2},{value:"08.03.2023",id:"08032023",level:3},{value:"14.03.2023",id:"14032023",level:3},{value:"Aufgabe Array",id:"aufgabe-array",level:4},{value:"Aufgabe Exception",id:"aufgabe-exception",level:4},{value:"21.03.2023",id:"21032023",level:3},{value:"Aufgabe abstrakte Klasse, Enum",id:"aufgabe-abstrakte-klasse-enum",level:4},{value:"Aufgabe Comparator",id:"aufgabe-comparator",level:4}],c={toc:m},k="wrapper";function g(e){let{components:n,...t}=e;return(0,r.kt)(k,(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"java-i"},"Java I"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/intro"},"Einleitung")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/datatypes-and-dataobjects"},"Datentypen und Datenobjekte")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/methods-and-operators"},"Methoden und Operatoren")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/if-and-switch"},"Kontrollstrukturen und Arrays")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/math-random-scanner"},"Math, Random und Scanner")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/classes-and-objects"},"Klassen und Objekte")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/constructor-and-static"},"Konstruktor und static")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/class-diagram-java-api-enum"},"Java API, Enum, Klassendiagramm, Aktivit\xe4tsdiagramm")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/Inheritance"},"Vererbung")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/polymorphy"},"Polymorphie")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/abstract-and-final"},"Abstrakte und finale Klassen")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/interfaces"},"Interfaces")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/exceptions"},"Exceptions"))),(0,r.kt)("h2",{id:"java-ii"},"Java II"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/recap"},"Wiederholung und Klausurbesprechung 10.08.23")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/lambda"},"Innere Klassen und Lambda Funktionen 17.08.23")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/records-optionals"},"Records und Optionals 18.08.23")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/generics-maps"},"Generics und Maps 24.08.23")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/slides/steffen/stream-api"},"Stream API 31.08.23 & 01.09.23")),(0,r.kt)("li",{parentName:"ul"},"Probeklausur 07.09.23"),(0,r.kt)("li",{parentName:"ul"},"Probeklausur 14.09.23")),(0,r.kt)("h2",{id:"demos"},"Demos"),(0,r.kt)("p",null,"Die Endergebnisse der Demos findet ihr in folgendem Branch:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git switch demos/steffen\n")),(0,r.kt)("h2",{id:"klausurvorbereitung-java-ii"},"Klausurvorbereitung Java II"),(0,r.kt)("a",{href:"/java-docs/pdf/java-cheat-sheet.pdf",target:"_blank"},"Cheatsheet"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Altklausuren 2022 Q3 - Klausur Java 2 Aufgabe 3")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},'public class PlanetQueries {\n\n public static ArrayList planets = Planet.getPlantes();\n\n public static void a() {\n PlanetQueries.planets.stream()\n .filter(p -> p.moons() > 5)\n .forEach(p -> {\n System.out.println(p.name() + ": " + p.moons());\n });\n }\n\n public static OptionalDouble b() {\n return PlanetQueries.planets.stream()\n .filter(p -> p.type() == Type.GAS_PLANET)\n .mapToDouble(p -> p.diameter())\n .average();\n }\n\n public static List c() {\n return PlanetQueries.planets.stream()\n .sorted((p1, p2) -> Double.compare(p2.mass(), p1.mass()))\n .toList();\n }\n\n public static boolean d() {\n return PlanetQueries.planets.stream()\n .allMatch(p -> p.moons() > 0);\n }\n\n public static void e() {\n Map> planetsMap = PlanetQueries.planets.stream()\n .collect(Collectors.groupingBy(p -> p.type()));\n planetsMap.entrySet()\n .stream()\n .forEach(entry -> {\n System.out.println(entry.getKey() + ":" + entry.getValue());\n });\n }\n}\n')),(0,r.kt)("ol",{start:2},(0,r.kt)("li",{parentName:"ol"},"Altklausuren 2022 Q3 - Probeklausur Java 2 Klausur Aufgabe 3"),(0,r.kt)("li",{parentName:"ol"},"Altklausuren 2023 Q1 - Wiederholklausur 2 Java 2 Klausur Aufgabe 3"),(0,r.kt)("li",{parentName:"ol"},"Altklausuren 2023 Q1 - Wiederholklausur Java 2 Klausur Aufgabe 3")),(0,r.kt)("h2",{id:"aufgabe-optionals"},"Aufgabe Optionals"),(0,r.kt)("h3",{id:"klassendiagramm"},"Klassendiagramm"),(0,r.kt)("img",{src:i}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zu den Konstruktoren")," ",(0,r.kt)("br",null),"\nDie Konstruktoren sollen alle Attribute initialisieren."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Methode toString ")," ",(0,r.kt)("br",null),"\nDie Methode toString soll die Attribute brand, model und addition zur\xfcckgeben.\nDie Attribute sollen durch eine Leertaste getrennt sein. Falls addition keinen\nWert besitz, soll dieser ignoriert werden."),(0,r.kt)("p",null,'Erstelle eine ausf\xfchrbare Klasse in der ein Auto mit der Marke "Mercedes",\ndem Modell "CLA45" und dem Zusatz "AMG" initialisiert wird.\nGib das Auto in der Konsole aus. Entferne den Zusatz von dem Auto und gebe\ndas Auto erneut in der Konsole aus.'),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},'public class Car {\n public String name;\n public String brand;\n public Optional addition;\n\n public Car(String name, String brand) {\n this.name = name;\n this.brand = brand;\n this.addition = Optional.empty();\n }\n\n public Car(String name, String brand, String addition) {\n this.name = name;\n this.brand = brand;\n this.addition = Optional.ofNullable(addition);\n }\n\n public String toString() {\n if (addition.isPresent()) {\n return brand + " " + name + addition.get();\n } else {\n return brand + " " + name;\n }\n }\n}\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},'public class Main {\n public static void main(String[] args) {\n Car benz = new Car("CLA45", "Mercedes", "AMG");\n System.out.println(benz.toString());\n benz.addition = Optional.empty();\n System.out.println(benz.toString());\n }\n}\n')),(0,r.kt)("h2",{id:"aufgabe-lambdafunktionen"},"Aufgabe Lambdafunktionen"),(0,r.kt)("h3",{id:"klassendiagramm-1"},"Klassendiagramm"),(0,r.kt)("img",{src:l}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse Helper")," ",(0,r.kt)("br",null),"\nIm Klassendiagramm sind keine R\xfcckgabetypen f\xfcr die\nstatischen Attribute angegeben. Gib f\xfcr jedes Attribut\nden geeigneten Typ an."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Das Attribut ",(0,r.kt)("strong",{parentName:"li"},"isNewBorn")," soll eine Lambdafunktion enthalten die ermittelt, ob ein Tier j\xfcnger als 1 Jahr alt ist."),(0,r.kt)("li",{parentName:"ul"},"Das Attribut ",(0,r.kt)("strong",{parentName:"li"},"toOutput"),' soll eine Lambdafunktion enthalten, die ein Tier in folgenden String konvertiert: "firstName lastName ist size Zentimeter gro\xdf."'),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"isHigherThan")," soll eine Lambdafunktion zur\xfcckgeben, die abh\xe4ngig vom Parameter size \xfcberpr\xfcft, ob ein Tier gr\xf6\xdfer als die angegebene Gr\xf6\xdfe ist.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Hinweise zur Klasse Data")," ",(0,r.kt)("br",null)),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"getAnimals")," soll einen Stream von einem einzelnen Tier mit den Werten deiner Wahl zur\xfcckgeben.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Hinweise zur Klasse Task2")," ",(0,r.kt)("br",null),"\nVerwende f\xfcr die nachfolgende Abfolge die Methoden der Klassen Data und Helper.\nErzeuge einen Stream von Tieren und filtere jene heraus, die Gr\xf6\xdfer als 50 Zentimeter sind.\nGib anschlie\xdfend den vollen Namen und die Gr\xf6\xdfe der Tiere in der Konsole aus."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},"public record Animal(String firstName, String lastName, int age, int size) {}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},'public class Data {\n public static Stream getAnimals() {\n return Stream.of(new Animal("Steffen", "Merk", 28, 170));\n }\n}\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},'public class Helper {\n public static Predicate isNewBorn = animal -> animal.age() < 1;\n public static Function toOutput = animal -> animal.firstName()\n + " " + animal.lastName() + " ist " + animal.size() + " Zentimeter gro\xdf";\n\n public static Predicate isHigherThan(int size) {\n return animal -> animal.size() > size;\n }\n}\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},"public class Task2 {\n public static void main(String[] args) {\n Data.getAnimals()\n .filter(Helper.isHigherThan(50))\n .map(Helper.toOutput)\n .forEach(System.out::println);\n }\n}\n")),(0,r.kt)("h2",{id:"aufgabe-streams"},"Aufgabe Streams"),(0,r.kt)("h3",{id:"klassendiagramm-2"},"Klassendiagramm"),(0,r.kt)("img",{src:s}),(0,r.kt)("br",null),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},"public class PhoneStore {\n private ArrayList phones;\n\n public PhoneStore(ArrayList phones) {\n this.phones = phones;\n }\n\n public List q1() {\n return phones.stream()\n .filter(p -> p.brand() == Brand.HUAWEI)\n .filter(p -> p.cameras() > 3)\n .sorted((p1, p2) -> Integer.compare(p2.cpuPower(), p1.cpuPower()))\n .limit(3)\n .sorted((p1, p2) -> Double.compare(p2.price(), p1.price()))\n .toList();\n }\n\n public OptionalDouble q2() {\n return phones.stream()\n .filter(p -> p.batterySize() > 2500)\n .mapToInt(p -> p.cameras())\n .average();\n }\n\n public List q3(double maxPrice) {\n return phones.stream()\n .filter(p -> p.price() <= maxPrice)\n .filter(p -> p.connectionType().isModern())\n .filter(p -> p.cpuPower() < 2400)\n .sorted((p1, p2) -> Double.compare(p1.price(), p2.price()))\n .toList();\n }\n\n public Map q4() {\n return phones.stream()\n .collect(Collectors.toMap(\n p -> p.brand().name() + p.connectionType().name(),\n p -> p));\n }\n\n public Map> q5() {\n return phones.stream()\n .collect(Collectors.groupingBy(p -> p.connectionType()));\n }\n\n}\n")),(0,r.kt)("h2",{id:"hinweise-zur-klasse-phonestore"},"Hinweise zur Klasse PhoneStore"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"q1")," soll die drei Leistungsst\xe4rksten (CPU Power) Smart Phones der Marke Huawei, absteigend nach dem Preis zur\xfcckgeben, welche mehr als 3 Kameras haben."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"q2")," soll die durchschnittliche Kameraanzahl aller Smart Phones zur\xfcckgeben, die einen Akku von 2500 oder mehr haben."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"q3")," soll die Smart Phones aufsteigend nach Preis zur\xfcckgeben, die den ",(0,r.kt)("strong",{parentName:"li"},"maxPrice")," nicht \xfcberschreiten, einen modernen Anschlusstyp haben und weniger als 2400 Leistung (CPU Power) haben."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"q4")," soll eine Map zur\xfcckgeben. Der Schl\xfcssel soll aus dem Markennamen und dem Anschlusstyp zusammengesetzt werden. Als Wert soll das Auto zur\xfcckgegeben werden."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"q5")," soll eine Map zur\xfcckgeben, welche alle Smart Phones nach Anschlusstyp gruppiert.")),(0,r.kt)("h2",{id:"klausurvorbereitung-java-i"},"Klausurvorbereitung Java I"),(0,r.kt)("h3",{id:"08032023"},"08.03.2023"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Aufgaben in der Probeklausur 2202_Q4 ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Aufgabe 1-a f\xfcr die Methode a"),(0,r.kt)("li",{parentName:"ul"},"Aufgabe 1-b"),(0,r.kt)("li",{parentName:"ul"},"Aufgabe 2"),(0,r.kt)("li",{parentName:"ul"},"Aufgabe 5")),(0,r.kt)("h3",{id:"14032023"},"14.03.2023"),(0,r.kt)("h4",{id:"aufgabe-array"},"Aufgabe Array"),(0,r.kt)("img",{style:{height:"200px"},src:"/java-docs/img/array_task.png"}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Methode split ")," ",(0,r.kt)("br",null),"\nDie Methode split soll ein Array vom Typ int so verarbeiten, dass ein neues Array erstellt wird, was alle Elemente des\neingehenden Arrays bis zum angegebenen Index enth\xe4lt. Das neu erstellte Array soll anschlie\xdfend zur\xfcckgegeben werden.\nVerwende keine ArrayList!\nBsp.: Der Parameter numbers enth\xe4lt die Elemente 10, 8, 3, 22 & 1 der Parameter index ist gleich 2. Zur\xfcckgegeben\nwerden soll ein neues Array, das die Elemente 10, 8 & 3 enth\xe4lt. "),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Methode main ")," ",(0,r.kt)("br",null),"\nIn der Methode main soll ein Arrays erstellt werden, dass die Ganzzahlen 10, 8, 3, 22 & 1 enth\xe4lt.\nErstelle mithilfe der Methode split ein neues Array, dass die ersten drei Elemente des ersten Arrays enthalten soll.\nGib mithilfe einer For-Schleife alle Elemente des neu erstellten Arrays aus. "),(0,r.kt)("h4",{id:"aufgabe-exception"},"Aufgabe Exception"),(0,r.kt)("img",{style:{height:"200px"},src:"/java-docs/img/exception_task.png"}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse OverflowException ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren. "),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"getHigherThanCapacity")," soll die zu viel hinzugef\xfcgte Fl\xfcssigkeit zur\xfcckgeben. ")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse Barrel")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren. Das Fass ist Anfangs immer leer."),(0,r.kt)("li",{parentName:"ul"},"Die Methode ",(0,r.kt)("strong",{parentName:"li"},"addFluid")," soll die OverflowException\tausl\xf6sen, wenn die Summe der eingehenden\nFl\xfcssigkeit und der im Fass befindenden Fl\xfcssigkeit die Kapazit\xe4t \xfcberschreitet. \xdcbergebe der Ausnahme\nden Wert, um wieviel die maximale Kapazit\xe4t \xfcberschritten wurde. Wenn die maximale Kapazit\xe4t nicht\n\xfcberschritten wird, soll die eingehende Fl\xfcssigkeit dem Fass hinzugef\xfcgt werden")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Zusatz in ausf\xfchrbarer Klasse ")," ",(0,r.kt)("br",null),"\nErstelle ein neues Fass, das die maximale Kapazit\xe4t von 100 hat. Versuche anschlie\xdfend das Fass auf 101 zu\nf\xfcllen und fange die Ausnahme ab. Gib in der Konsole aus, um wieviel die maximale Kapazit\xe4t \xfcberschritten\nwurde.",(0,r.kt)("br",null),"\n",(0,r.kt)("strong",{parentName:"p"}," Beispiel Konsolenausgabe: ")," ",(0,r.kt)("br",null),'\n"Es w\xe4re um 1 zu viel bef\xfcllt worden." '),(0,r.kt)("h3",{id:"21032023"},"21.03.2023"),(0,r.kt)("h4",{id:"aufgabe-abstrakte-klasse-enum"},"Aufgabe abstrakte Klasse, Enum"),(0,r.kt)("img",{style:{height:"200px"},src:"/java-docs/img/class_task.png"}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse EnergySource ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Erstelle die zwei Konstanten Batterie und Steckdose f\xfcr die Arten einer\nEnergiequelle."),(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode getType soll den Typ der Energiequelle zur\xfcckgeben."),(0,r.kt)("li",{parentName:"ul"},"Die Methode canBeUsedEverywhere soll true zur\xfcckgeben, wenn die Energiequelle\neine Batterie ist.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse Phone ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse CablePhone ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode readyForUse soll true zur\xfcckgeben, wenn das Kabeltelefon\neingesteckt und eingeschalten ist.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse SmartPhone ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode readyForUse soll true zur\xfcckgeben, wenn die Energie des\nSmartphones die minimal erforderliche Energie \xfcberschreitet.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse ExamTask04 ")," ",(0,r.kt)("br",null),"\nErzeuge ein Kabeltelefon mit Akku und eines, dass an die Steckdose\nangeschlossen ist. Erzeuge ein leeres Smartphone und eines das halb voll ist.\nSpeichere alle erzeugten Fahrzeuge in einer ArrayList. Ermittle mithilfe einer\nSchleife die Anzahl der betriebsbereiten Telefone. Gib die Anzahl in der\nKonsole aus."),(0,r.kt)("h4",{id:"aufgabe-comparator"},"Aufgabe Comparator"),(0,r.kt)("img",{style:{height:"200px"},src:"/java-docs/img/comparator_task.png"}),(0,r.kt)("br",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse CarVendor ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der Konstruktor soll alle Attribute initialisieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode sortByConstructionYear soll die Autos absteigend nach Baujahr\nsortieren."),(0,r.kt)("li",{parentName:"ul"},"Die Methode print soll das Baujahr aller Autos in der Konsole ausgeben.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Hinweise zur Klasse ConstructionYearComparator ")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Der ConstructionYearComparator soll das Comparator Interface implementieren\nund Autos absteigend nach Baujahr sortieren.")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.5276d4e4.js b/assets/js/runtime~main.bb82bd08.js similarity index 99% rename from assets/js/runtime~main.5276d4e4.js rename to assets/js/runtime~main.bb82bd08.js index 2cdae8fd9a..3067926484 100644 --- a/assets/js/runtime~main.5276d4e4.js +++ b/assets/js/runtime~main.bb82bd08.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,b,d,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={exports:{}};return c[e].call(f.exports,f,f.exports,r),f.exports}r.m=c,e=[],r.O=(a,f,b,d)=>{if(!f){var c=1/0;for(i=0;i=d)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[f,b,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var c={};a=a||[null,f({}),f([]),f(f)];for(var t=2&b&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(d,c),d},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({45:"c05e8971",50:"225cb340",53:"935f2afb",88:"88e58e54",116:"2ad6d4d0",119:"64452ca6",207:"13f64d8c",214:"a0d9ec93",335:"6ae4f4e7",436:"6e740d4f",454:"08c8ef44",486:"ee440d3d",565:"d7fd9edf",618:"de71ac1c",626:"203119e9",643:"55d2ec21",682:"b071ca9b",720:"2728216c",860:"1067baac",874:"d52bf187",897:"910e0f90",924:"63de337f",966:"6ad455fa",970:"17743401",1017:"a2bd7c0f",1051:"93930ebb",1109:"dff2a305",1115:"a976b06e",1186:"bdfd1fcf",1220:"0f9e2f9e",1389:"64ddee01",1401:"0410e12d",1431:"9c85de4a",1470:"d6e65f8a",1551:"568c7731",1649:"cb80e729",1664:"b483d51b",1760:"9ad41fa2",1804:"ee7b2f2b",1878:"a25b9043",1999:"dd64b19b",2018:"6346fcc4",2023:"a1a0e1c8",2026:"f51e2c38",2065:"e6f35a47",2110:"95002365",2154:"7a2fc1d0",2155:"00bdcdfd",2176:"8cd71234",2211:"26b0b060",2259:"fc366093",2375:"a76452f4",2382:"d8d1f700",2517:"7569a642",2645:"afde35fa",2651:"3c637039",2664:"a054c7bb",2708:"8f25f5d6",2784:"1ad957dc",2799:"677fe8ea",2817:"6c58d44a",2855:"ecbb1d71",2962:"1ebeac2d",2977:"3f67f55a",2996:"233b353a",3057:"984df2d5",3085:"1f391b9e",3147:"a26b60a5",3239:"ab891b2d",3262:"109e9612",3296:"1f54aa44",3309:"2fe20bee",3342:"ee7512bf",3461:"9e67ecd3",3499:"cca9ab01",3519:"fa32d8f5",3657:"690f2976",3748:"e46d06a7",3750:"1796cdcc",3751:"3720c009",3759:"59c11c09",3770:"83b849fb",3778:"fe530ce3",3868:"f2631415",3935:"8dbfc019",3978:"d8e4d5a2",3994:"d433a361",4016:"cc920e38",4121:"37efec55",4183:"e647cc90",4210:"5e761421",4214:"4df51fab",4238:"075900c2",4244:"e90f8152",4285:"89f763c3",4334:"b3c04648",4398:"d1a92424",4462:"76bafe4a",4501:"baff1c13",4527:"222020f0",4604:"a2352dbb",4649:"099c3df6",4688:"55960ee5",4690:"f29c3938",4705:"1b91faeb",4722:"bd6299ac",4725:"b147f28c",4751:"5555c7ad",4765:"bf2f2bdf",4768:"6f55c9cf",4822:"f5b10b8e",4879:"805235b2",4926:"d1d6965f",4985:"940c63b5",5059:"201053fe",5139:"2b8e7cce",5185:"4a041131",5188:"645caf87",5225:"e34f5b49",5232:"b1be59c7",5248:"72f8c013",5277:"a016b679",5356:"1267f3eb",5436:"8e1aca95",5511:"e0b428e9",5518:"d492abb2",5574:"3c12eb91",5655:"03eb7fc9",5847:"feeaba8c",5853:"ec657ac0",5864:"91d769ec",5938:"47c3edc2",5968:"e7799648",6029:"444eea02",6044:"36ff7946",6063:"ea9d7419",6071:"1086c4e3",6101:"2e8a245f",6133:"9a9bcadb",6144:"a518c2df",6165:"298453e4",6172:"6ab65d69",6199:"91c34f41",6248:"f4013560",6272:"eddf3597",6345:"37a06808",6383:"a729f601",6418:"a583544e",6511:"78ef12e0",6623:"cbab3e1c",6629:"ce3496c0",6661:"5d17b01a",6668:"6050cbd3",6691:"aa2b73ba",6699:"ae00b075",6786:"ad2b96ab",6791:"aa0123c2",6872:"24525d35",6901:"92e88698",6946:"46d096f8",6961:"01dd9109",6983:"c9b64e62",7128:"42cecbd1",7208:"082617a4",7235:"6660ff76",7298:"d5fb78b2",7356:"b590b05e",7388:"0fc9e6b7",7394:"eabe565e",7448:"f3a354f1",7456:"a005d525",7486:"55d21a58",7536:"829da9db",7598:"3ed68424",7630:"a90a4a9e",7684:"045b9fc8",7705:"c7a27f72",7819:"5ef057d2",7866:"b05168c4",7908:"a8720fa0",7918:"17896441",7969:"ae2be934",7979:"3aeed4b8",7997:"31ea1fe1",8047:"e488e9fc",8050:"6988c53c",8053:"ed934f36",8087:"78d06b84",8145:"d32f801f",8193:"3117d461",8210:"f726a4be",8265:"6ae9f69f",8310:"cff312c3",8322:"b16067d9",8340:"e3f84cd2",8429:"2abf00b7",8485:"744316eb",8511:"c0e1474d",8595:"2eca6aec",8609:"a5b9108a",8635:"cf2e9d71",8685:"bf2bc47a",8695:"1b614a22",8711:"9aa4b37e",8719:"69b1ab02",8723:"4f20cd3e",8802:"6b2816df",8842:"054f9627",8898:"5d5c4b17",8906:"e0067c3a",8936:"d4e3b5f0",8972:"7aceb302",9022:"f73f4300",9055:"c8d9e14a",9080:"8a5bb0fa",9110:"a27b67a1",9112:"05e916a1",9135:"49705f8c",9213:"3f357898",9270:"36d80f80",9344:"e43648cd",9347:"a95a0fbe",9355:"83580c2e",9401:"94dfb9f8",9410:"99fd26bf",9414:"b056ff5d",9424:"352af136",9432:"4bcab200",9446:"69e41596",9514:"1be78505",9578:"97fd7fd6",9597:"88b881fe",9638:"19d0bdb5",9684:"c6b1a212",9762:"a752ebca",9774:"19e4d3f4",9790:"0dd3d16d",9827:"219ea060",9893:"84ddaeaf",9924:"df203c0f",9927:"12db9723",9970:"f66ae8e2"}[e]||e)+"."+{45:"1de63886",50:"69d0fbcd",53:"a0391154",88:"d2a6d982",116:"873c9fa2",119:"40dd6514",207:"0beef416",214:"f99aacb8",335:"32b0cbb7",436:"49878c14",454:"ab23f796",486:"bfd5196c",565:"ac200d50",618:"7c90bdbd",626:"6bcd4927",643:"602b21d1",682:"5bc50866",720:"51fb76a7",814:"38d5aa51",860:"f4117eab",874:"b360c5bc",897:"f4de921a",924:"b1329e5d",966:"4d54285a",970:"dd75869b",1017:"4990f648",1051:"ca9d2ef0",1109:"0d3d0cc8",1115:"04df8b8a",1186:"8c588604",1220:"e682b15c",1389:"735405b7",1401:"fd4ca9b2",1431:"a286e04e",1470:"2bc219bf",1551:"8361f58b",1649:"6bbd762a",1664:"a8c3606e",1760:"05890d24",1804:"5180adb8",1878:"90ec480d",1999:"14855e07",2018:"97e99eaa",2023:"20183e87",2026:"d08501f0",2065:"1f3a3848",2110:"04d57461",2154:"20bfb676",2155:"94a48811",2176:"c2b241bc",2211:"02a5960c",2259:"fdae7b33",2375:"339b0b39",2382:"d486f722",2517:"8440fd34",2645:"4823cea8",2651:"01392013",2664:"50285eaa",2708:"35a5379a",2784:"fb16df8d",2799:"3e559288",2817:"effa78c5",2855:"f12219a4",2962:"9f6d67d0",2977:"5f66780a",2996:"e716d18d",3057:"460437d4",3085:"ac7b57ae",3147:"e7435625",3239:"1907ddd8",3262:"fa0bb298",3296:"557ec47d",3309:"bf2b8de7",3342:"5c000700",3461:"a951f439",3473:"735c58b3",3499:"e23461c2",3519:"e7d7a792",3657:"7ed9043d",3748:"6e758a65",3750:"ced4988c",3751:"453a61a4",3759:"4266fc51",3770:"7f184527",3778:"074ee180",3868:"6fb92e1f",3935:"9d6e09a2",3978:"77b29515",3994:"36c6b25e",4016:"f69f67af",4121:"3bf30610",4183:"aa16ace0",4210:"0daa44d1",4214:"06dbdc91",4238:"8e72b705",4244:"152c47ba",4285:"414887b7",4334:"5ba82ac1",4398:"d386850e",4462:"e777bdf2",4501:"a4d3423d",4527:"e26bfa55",4604:"475344c5",4649:"4cb0a59d",4688:"caa65c0c",4690:"21686e8c",4705:"425eeda0",4722:"9b6be2ac",4725:"50b4a938",4751:"3abd945f",4765:"80f06a66",4768:"68547d91",4822:"cc08aaec",4879:"61c75bfa",4926:"3d7eb3a0",4972:"38411571",4985:"5cdb8e01",5059:"dcb4027c",5139:"6fd8fc44",5185:"3fdf0b01",5188:"00a09a2b",5225:"f339f830",5232:"74ddf250",5248:"11742896",5277:"11a699ae",5356:"635b9c8e",5436:"3dab65ec",5511:"470e27f8",5518:"3474886b",5574:"355d2833",5655:"0c6b4661",5847:"cc751109",5853:"284b61be",5864:"c4499a2e",5938:"41f937a6",5968:"cf9fab7f",6029:"b503243b",6044:"17225441",6063:"80e33f76",6071:"ee836878",6101:"c2e77587",6133:"78b3f5d6",6144:"78c84680",6165:"e8f3942d",6172:"11285ab9",6199:"514924d6",6248:"a017f796",6272:"256c8992",6345:"7089485b",6383:"3357bf92",6418:"30e28284",6511:"f8ebe955",6623:"f6475666",6629:"1296e100",6661:"b80739a9",6668:"ddfe79d5",6691:"bc49f097",6699:"679533d9",6786:"04539885",6791:"fa9513a4",6872:"3d131f12",6901:"f90b7131",6946:"6015293b",6961:"60259e0b",6983:"24e52265",7128:"f8efff49",7208:"df31cc5c",7235:"977a04c1",7298:"820c47e6",7356:"f216b7cf",7388:"6f7fb50a",7394:"4da15ecb",7448:"13dce0ee",7456:"257e2b15",7486:"fdde023a",7536:"8f4a5621",7598:"f3f5e321",7630:"b785bd5f",7684:"9d6b7f11",7705:"6b84c941",7819:"d7a867a0",7866:"3cf1dbc0",7908:"e20a115b",7918:"1e5e56a4",7969:"b9260f84",7979:"6df4db2b",7997:"3c5bf3e6",8047:"d6eae75f",8050:"33ccc749",8053:"d336e834",8087:"d8719dd3",8145:"78052133",8193:"7d7bdba8",8210:"3b63ed5a",8265:"de990ab2",8310:"554a6e60",8322:"276eef7d",8340:"be08b7c0",8429:"198ec7f1",8485:"2a7a05b5",8511:"de9d1c8e",8595:"57618bed",8609:"ccca8746",8635:"046aa9c4",8685:"81d7f4a6",8695:"5d51e83f",8711:"5d47f34a",8719:"c099e48b",8723:"f07aec5b",8802:"54ad990a",8810:"5e3999bf",8842:"7341c419",8898:"ef63445d",8906:"3192fd89",8936:"d2d9155a",8972:"30bf1ceb",9022:"fd3ced05",9055:"822f9927",9080:"975a7f31",9110:"fa20d02f",9112:"8e408301",9135:"d2df2332",9213:"0a4b826c",9270:"c1dba3c3",9344:"e7f39f79",9347:"973aec7f",9355:"5c1d452f",9401:"d5a59433",9410:"832c78fc",9414:"ed714623",9424:"aa78e06b",9432:"5ed88683",9446:"63f7f765",9514:"174a2bce",9578:"02284a06",9597:"9dfc79a4",9638:"a2db8688",9684:"ebd74548",9762:"9cfa7411",9774:"6f855b4e",9790:"3e223f7b",9827:"501e06e1",9893:"54a4f430",9924:"5fd2ca30",9927:"6ac0e964",9970:"2de0d04e"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},d="java-docs:",r.l=(e,a,f,c)=>{if(b[e])b[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var d=b[e];if(delete b[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/java-docs/",r.gca=function(e){return e={17743401:"970",17896441:"7918",95002365:"2110",c05e8971:"45","225cb340":"50","935f2afb":"53","88e58e54":"88","2ad6d4d0":"116","64452ca6":"119","13f64d8c":"207",a0d9ec93:"214","6ae4f4e7":"335","6e740d4f":"436","08c8ef44":"454",ee440d3d:"486",d7fd9edf:"565",de71ac1c:"618","203119e9":"626","55d2ec21":"643",b071ca9b:"682","2728216c":"720","1067baac":"860",d52bf187:"874","910e0f90":"897","63de337f":"924","6ad455fa":"966",a2bd7c0f:"1017","93930ebb":"1051",dff2a305:"1109",a976b06e:"1115",bdfd1fcf:"1186","0f9e2f9e":"1220","64ddee01":"1389","0410e12d":"1401","9c85de4a":"1431",d6e65f8a:"1470","568c7731":"1551",cb80e729:"1649",b483d51b:"1664","9ad41fa2":"1760",ee7b2f2b:"1804",a25b9043:"1878",dd64b19b:"1999","6346fcc4":"2018",a1a0e1c8:"2023",f51e2c38:"2026",e6f35a47:"2065","7a2fc1d0":"2154","00bdcdfd":"2155","8cd71234":"2176","26b0b060":"2211",fc366093:"2259",a76452f4:"2375",d8d1f700:"2382","7569a642":"2517",afde35fa:"2645","3c637039":"2651",a054c7bb:"2664","8f25f5d6":"2708","1ad957dc":"2784","677fe8ea":"2799","6c58d44a":"2817",ecbb1d71:"2855","1ebeac2d":"2962","3f67f55a":"2977","233b353a":"2996","984df2d5":"3057","1f391b9e":"3085",a26b60a5:"3147",ab891b2d:"3239","109e9612":"3262","1f54aa44":"3296","2fe20bee":"3309",ee7512bf:"3342","9e67ecd3":"3461",cca9ab01:"3499",fa32d8f5:"3519","690f2976":"3657",e46d06a7:"3748","1796cdcc":"3750","3720c009":"3751","59c11c09":"3759","83b849fb":"3770",fe530ce3:"3778",f2631415:"3868","8dbfc019":"3935",d8e4d5a2:"3978",d433a361:"3994",cc920e38:"4016","37efec55":"4121",e647cc90:"4183","5e761421":"4210","4df51fab":"4214","075900c2":"4238",e90f8152:"4244","89f763c3":"4285",b3c04648:"4334",d1a92424:"4398","76bafe4a":"4462",baff1c13:"4501","222020f0":"4527",a2352dbb:"4604","099c3df6":"4649","55960ee5":"4688",f29c3938:"4690","1b91faeb":"4705",bd6299ac:"4722",b147f28c:"4725","5555c7ad":"4751",bf2f2bdf:"4765","6f55c9cf":"4768",f5b10b8e:"4822","805235b2":"4879",d1d6965f:"4926","940c63b5":"4985","201053fe":"5059","2b8e7cce":"5139","4a041131":"5185","645caf87":"5188",e34f5b49:"5225",b1be59c7:"5232","72f8c013":"5248",a016b679:"5277","1267f3eb":"5356","8e1aca95":"5436",e0b428e9:"5511",d492abb2:"5518","3c12eb91":"5574","03eb7fc9":"5655",feeaba8c:"5847",ec657ac0:"5853","91d769ec":"5864","47c3edc2":"5938",e7799648:"5968","444eea02":"6029","36ff7946":"6044",ea9d7419:"6063","1086c4e3":"6071","2e8a245f":"6101","9a9bcadb":"6133",a518c2df:"6144","298453e4":"6165","6ab65d69":"6172","91c34f41":"6199",f4013560:"6248",eddf3597:"6272","37a06808":"6345",a729f601:"6383",a583544e:"6418","78ef12e0":"6511",cbab3e1c:"6623",ce3496c0:"6629","5d17b01a":"6661","6050cbd3":"6668",aa2b73ba:"6691",ae00b075:"6699",ad2b96ab:"6786",aa0123c2:"6791","24525d35":"6872","92e88698":"6901","46d096f8":"6946","01dd9109":"6961",c9b64e62:"6983","42cecbd1":"7128","082617a4":"7208","6660ff76":"7235",d5fb78b2:"7298",b590b05e:"7356","0fc9e6b7":"7388",eabe565e:"7394",f3a354f1:"7448",a005d525:"7456","55d21a58":"7486","829da9db":"7536","3ed68424":"7598",a90a4a9e:"7630","045b9fc8":"7684",c7a27f72:"7705","5ef057d2":"7819",b05168c4:"7866",a8720fa0:"7908",ae2be934:"7969","3aeed4b8":"7979","31ea1fe1":"7997",e488e9fc:"8047","6988c53c":"8050",ed934f36:"8053","78d06b84":"8087",d32f801f:"8145","3117d461":"8193",f726a4be:"8210","6ae9f69f":"8265",cff312c3:"8310",b16067d9:"8322",e3f84cd2:"8340","2abf00b7":"8429","744316eb":"8485",c0e1474d:"8511","2eca6aec":"8595",a5b9108a:"8609",cf2e9d71:"8635",bf2bc47a:"8685","1b614a22":"8695","9aa4b37e":"8711","69b1ab02":"8719","4f20cd3e":"8723","6b2816df":"8802","054f9627":"8842","5d5c4b17":"8898",e0067c3a:"8906",d4e3b5f0:"8936","7aceb302":"8972",f73f4300:"9022",c8d9e14a:"9055","8a5bb0fa":"9080",a27b67a1:"9110","05e916a1":"9112","49705f8c":"9135","3f357898":"9213","36d80f80":"9270",e43648cd:"9344",a95a0fbe:"9347","83580c2e":"9355","94dfb9f8":"9401","99fd26bf":"9410",b056ff5d:"9414","352af136":"9424","4bcab200":"9432","69e41596":"9446","1be78505":"9514","97fd7fd6":"9578","88b881fe":"9597","19d0bdb5":"9638",c6b1a212:"9684",a752ebca:"9762","19e4d3f4":"9774","0dd3d16d":"9790","219ea060":"9827","84ddaeaf":"9893",df203c0f:"9924","12db9723":"9927",f66ae8e2:"9970"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,f)=>{var b=r.o(e,a)?e[a]:void 0;if(0!==b)if(b)f.push(b[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var d=new Promise(((f,d)=>b=e[a]=[f,d]));f.push(b[2]=d);var c=r.p+r.u(a),t=new Error;r.l(c,(f=>{if(r.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var d=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+c+")",t.name="ChunkLoadError",t.type=d,t.request=c,b[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var b,d,c=f[0],t=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(b in t)r.o(t,b)&&(r.m[b]=t[b]);if(o)var i=o(r)}for(a&&a(f);n{"use strict";var e,a,f,b,d,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={exports:{}};return c[e].call(f.exports,f,f.exports,r),f.exports}r.m=c,e=[],r.O=(a,f,b,d)=>{if(!f){var c=1/0;for(i=0;i=d)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[f,b,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var c={};a=a||[null,f({}),f([]),f(f)];for(var t=2&b&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(d,c),d},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({45:"c05e8971",50:"225cb340",53:"935f2afb",88:"88e58e54",116:"2ad6d4d0",119:"64452ca6",207:"13f64d8c",214:"a0d9ec93",335:"6ae4f4e7",436:"6e740d4f",454:"08c8ef44",486:"ee440d3d",565:"d7fd9edf",618:"de71ac1c",626:"203119e9",643:"55d2ec21",682:"b071ca9b",720:"2728216c",860:"1067baac",874:"d52bf187",897:"910e0f90",924:"63de337f",966:"6ad455fa",970:"17743401",1017:"a2bd7c0f",1051:"93930ebb",1109:"dff2a305",1115:"a976b06e",1186:"bdfd1fcf",1220:"0f9e2f9e",1389:"64ddee01",1401:"0410e12d",1431:"9c85de4a",1470:"d6e65f8a",1551:"568c7731",1649:"cb80e729",1664:"b483d51b",1760:"9ad41fa2",1804:"ee7b2f2b",1878:"a25b9043",1999:"dd64b19b",2018:"6346fcc4",2023:"a1a0e1c8",2026:"f51e2c38",2065:"e6f35a47",2110:"95002365",2154:"7a2fc1d0",2155:"00bdcdfd",2176:"8cd71234",2211:"26b0b060",2259:"fc366093",2375:"a76452f4",2382:"d8d1f700",2517:"7569a642",2645:"afde35fa",2651:"3c637039",2664:"a054c7bb",2708:"8f25f5d6",2784:"1ad957dc",2799:"677fe8ea",2817:"6c58d44a",2855:"ecbb1d71",2962:"1ebeac2d",2977:"3f67f55a",2996:"233b353a",3057:"984df2d5",3085:"1f391b9e",3147:"a26b60a5",3239:"ab891b2d",3262:"109e9612",3296:"1f54aa44",3309:"2fe20bee",3342:"ee7512bf",3461:"9e67ecd3",3499:"cca9ab01",3519:"fa32d8f5",3657:"690f2976",3748:"e46d06a7",3750:"1796cdcc",3751:"3720c009",3759:"59c11c09",3770:"83b849fb",3778:"fe530ce3",3868:"f2631415",3935:"8dbfc019",3978:"d8e4d5a2",3994:"d433a361",4016:"cc920e38",4121:"37efec55",4183:"e647cc90",4210:"5e761421",4214:"4df51fab",4238:"075900c2",4244:"e90f8152",4285:"89f763c3",4334:"b3c04648",4398:"d1a92424",4462:"76bafe4a",4501:"baff1c13",4527:"222020f0",4604:"a2352dbb",4649:"099c3df6",4688:"55960ee5",4690:"f29c3938",4705:"1b91faeb",4722:"bd6299ac",4725:"b147f28c",4751:"5555c7ad",4765:"bf2f2bdf",4768:"6f55c9cf",4822:"f5b10b8e",4879:"805235b2",4926:"d1d6965f",4985:"940c63b5",5059:"201053fe",5139:"2b8e7cce",5185:"4a041131",5188:"645caf87",5225:"e34f5b49",5232:"b1be59c7",5248:"72f8c013",5277:"a016b679",5356:"1267f3eb",5436:"8e1aca95",5511:"e0b428e9",5518:"d492abb2",5574:"3c12eb91",5655:"03eb7fc9",5847:"feeaba8c",5853:"ec657ac0",5864:"91d769ec",5938:"47c3edc2",5968:"e7799648",6029:"444eea02",6044:"36ff7946",6063:"ea9d7419",6071:"1086c4e3",6101:"2e8a245f",6133:"9a9bcadb",6144:"a518c2df",6165:"298453e4",6172:"6ab65d69",6199:"91c34f41",6248:"f4013560",6272:"eddf3597",6345:"37a06808",6383:"a729f601",6418:"a583544e",6511:"78ef12e0",6623:"cbab3e1c",6629:"ce3496c0",6661:"5d17b01a",6668:"6050cbd3",6691:"aa2b73ba",6699:"ae00b075",6786:"ad2b96ab",6791:"aa0123c2",6872:"24525d35",6901:"92e88698",6946:"46d096f8",6961:"01dd9109",6983:"c9b64e62",7128:"42cecbd1",7208:"082617a4",7235:"6660ff76",7298:"d5fb78b2",7356:"b590b05e",7388:"0fc9e6b7",7394:"eabe565e",7448:"f3a354f1",7456:"a005d525",7486:"55d21a58",7536:"829da9db",7598:"3ed68424",7630:"a90a4a9e",7684:"045b9fc8",7705:"c7a27f72",7819:"5ef057d2",7866:"b05168c4",7908:"a8720fa0",7918:"17896441",7969:"ae2be934",7979:"3aeed4b8",7997:"31ea1fe1",8047:"e488e9fc",8050:"6988c53c",8053:"ed934f36",8087:"78d06b84",8145:"d32f801f",8193:"3117d461",8210:"f726a4be",8265:"6ae9f69f",8310:"cff312c3",8322:"b16067d9",8340:"e3f84cd2",8429:"2abf00b7",8485:"744316eb",8511:"c0e1474d",8595:"2eca6aec",8609:"a5b9108a",8635:"cf2e9d71",8685:"bf2bc47a",8695:"1b614a22",8711:"9aa4b37e",8719:"69b1ab02",8723:"4f20cd3e",8802:"6b2816df",8842:"054f9627",8898:"5d5c4b17",8906:"e0067c3a",8936:"d4e3b5f0",8972:"7aceb302",9022:"f73f4300",9055:"c8d9e14a",9080:"8a5bb0fa",9110:"a27b67a1",9112:"05e916a1",9135:"49705f8c",9213:"3f357898",9270:"36d80f80",9344:"e43648cd",9347:"a95a0fbe",9355:"83580c2e",9401:"94dfb9f8",9410:"99fd26bf",9414:"b056ff5d",9424:"352af136",9432:"4bcab200",9446:"69e41596",9514:"1be78505",9578:"97fd7fd6",9597:"88b881fe",9638:"19d0bdb5",9684:"c6b1a212",9762:"a752ebca",9774:"19e4d3f4",9790:"0dd3d16d",9827:"219ea060",9893:"84ddaeaf",9924:"df203c0f",9927:"12db9723",9970:"f66ae8e2"}[e]||e)+"."+{45:"1de63886",50:"69d0fbcd",53:"a0391154",88:"d2a6d982",116:"873c9fa2",119:"40dd6514",207:"0beef416",214:"f99aacb8",335:"32b0cbb7",436:"49878c14",454:"ab23f796",486:"bfd5196c",565:"ac200d50",618:"7c90bdbd",626:"6bcd4927",643:"602b21d1",682:"5bc50866",720:"51fb76a7",814:"38d5aa51",860:"f4117eab",874:"b360c5bc",897:"f4de921a",924:"b1329e5d",966:"4d54285a",970:"dd75869b",1017:"4990f648",1051:"ca9d2ef0",1109:"0d3d0cc8",1115:"04df8b8a",1186:"8c588604",1220:"e682b15c",1389:"735405b7",1401:"fd4ca9b2",1431:"a286e04e",1470:"2bc219bf",1551:"8361f58b",1649:"6bbd762a",1664:"a8c3606e",1760:"05890d24",1804:"5180adb8",1878:"90ec480d",1999:"14855e07",2018:"97e99eaa",2023:"20183e87",2026:"d08501f0",2065:"1f3a3848",2110:"04d57461",2154:"20bfb676",2155:"94a48811",2176:"c2b241bc",2211:"02a5960c",2259:"fdae7b33",2375:"339b0b39",2382:"d486f722",2517:"8440fd34",2645:"4823cea8",2651:"01392013",2664:"50285eaa",2708:"35a5379a",2784:"fb16df8d",2799:"3e559288",2817:"effa78c5",2855:"f12219a4",2962:"9f6d67d0",2977:"5f66780a",2996:"e716d18d",3057:"460437d4",3085:"ac7b57ae",3147:"e7435625",3239:"1907ddd8",3262:"fa0bb298",3296:"557ec47d",3309:"bf2b8de7",3342:"5c000700",3461:"a951f439",3473:"735c58b3",3499:"e23461c2",3519:"e7d7a792",3657:"7ed9043d",3748:"6e758a65",3750:"ced4988c",3751:"453a61a4",3759:"4266fc51",3770:"7f184527",3778:"074ee180",3868:"6fb92e1f",3935:"9d6e09a2",3978:"77b29515",3994:"36c6b25e",4016:"f69f67af",4121:"3bf30610",4183:"aa16ace0",4210:"0daa44d1",4214:"06dbdc91",4238:"8e72b705",4244:"152c47ba",4285:"414887b7",4334:"5ba82ac1",4398:"d386850e",4462:"e777bdf2",4501:"a4d3423d",4527:"e26bfa55",4604:"475344c5",4649:"4cb0a59d",4688:"caa65c0c",4690:"21686e8c",4705:"425eeda0",4722:"9b6be2ac",4725:"50b4a938",4751:"3abd945f",4765:"80f06a66",4768:"68547d91",4822:"cc08aaec",4879:"61c75bfa",4926:"3d7eb3a0",4972:"38411571",4985:"5cdb8e01",5059:"dcb4027c",5139:"6fd8fc44",5185:"3fdf0b01",5188:"00a09a2b",5225:"f339f830",5232:"74ddf250",5248:"11742896",5277:"11a699ae",5356:"635b9c8e",5436:"3dab65ec",5511:"470e27f8",5518:"3474886b",5574:"355d2833",5655:"0c6b4661",5847:"cc751109",5853:"284b61be",5864:"c4499a2e",5938:"41f937a6",5968:"cf9fab7f",6029:"b503243b",6044:"17225441",6063:"80e33f76",6071:"ee836878",6101:"c2e77587",6133:"78b3f5d6",6144:"78c84680",6165:"e8f3942d",6172:"11285ab9",6199:"514924d6",6248:"a017f796",6272:"256c8992",6345:"7089485b",6383:"3357bf92",6418:"30e28284",6511:"f8ebe955",6623:"f6475666",6629:"1296e100",6661:"b80739a9",6668:"ddfe79d5",6691:"bc49f097",6699:"679533d9",6786:"04539885",6791:"fa9513a4",6872:"3d131f12",6901:"f90b7131",6946:"6015293b",6961:"60259e0b",6983:"24e52265",7128:"f8efff49",7208:"df31cc5c",7235:"977a04c1",7298:"820c47e6",7356:"f216b7cf",7388:"6f7fb50a",7394:"4da15ecb",7448:"13dce0ee",7456:"257e2b15",7486:"fdde023a",7536:"8f4a5621",7598:"f3f5e321",7630:"b785bd5f",7684:"9d6b7f11",7705:"6b84c941",7819:"d7a867a0",7866:"3cf1dbc0",7908:"e20a115b",7918:"1e5e56a4",7969:"b9260f84",7979:"6df4db2b",7997:"3c5bf3e6",8047:"d6eae75f",8050:"33ccc749",8053:"d336e834",8087:"d8719dd3",8145:"78052133",8193:"7d7bdba8",8210:"3b63ed5a",8265:"de990ab2",8310:"554a6e60",8322:"276eef7d",8340:"be08b7c0",8429:"198ec7f1",8485:"2a7a05b5",8511:"de9d1c8e",8595:"57618bed",8609:"ccca8746",8635:"046aa9c4",8685:"81d7f4a6",8695:"5d51e83f",8711:"5d47f34a",8719:"c099e48b",8723:"f07aec5b",8802:"54ad990a",8810:"5e3999bf",8842:"7341c419",8898:"ef63445d",8906:"3192fd89",8936:"d2d9155a",8972:"30bf1ceb",9022:"fd3ced05",9055:"822f9927",9080:"975a7f31",9110:"fa20d02f",9112:"8e408301",9135:"d2df2332",9213:"0a4b826c",9270:"c1dba3c3",9344:"e7f39f79",9347:"973aec7f",9355:"5c1d452f",9401:"d5a59433",9410:"832c78fc",9414:"ed714623",9424:"aa78e06b",9432:"5ed88683",9446:"63f7f765",9514:"174a2bce",9578:"02284a06",9597:"9dfc79a4",9638:"a2db8688",9684:"ebd74548",9762:"9cfa7411",9774:"6f855b4e",9790:"3e223f7b",9827:"501e06e1",9893:"54a4f430",9924:"5fd2ca30",9927:"6ac0e964",9970:"fb1d8aa9"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},d="java-docs:",r.l=(e,a,f,c)=>{if(b[e])b[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var d=b[e];if(delete b[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/java-docs/",r.gca=function(e){return e={17743401:"970",17896441:"7918",95002365:"2110",c05e8971:"45","225cb340":"50","935f2afb":"53","88e58e54":"88","2ad6d4d0":"116","64452ca6":"119","13f64d8c":"207",a0d9ec93:"214","6ae4f4e7":"335","6e740d4f":"436","08c8ef44":"454",ee440d3d:"486",d7fd9edf:"565",de71ac1c:"618","203119e9":"626","55d2ec21":"643",b071ca9b:"682","2728216c":"720","1067baac":"860",d52bf187:"874","910e0f90":"897","63de337f":"924","6ad455fa":"966",a2bd7c0f:"1017","93930ebb":"1051",dff2a305:"1109",a976b06e:"1115",bdfd1fcf:"1186","0f9e2f9e":"1220","64ddee01":"1389","0410e12d":"1401","9c85de4a":"1431",d6e65f8a:"1470","568c7731":"1551",cb80e729:"1649",b483d51b:"1664","9ad41fa2":"1760",ee7b2f2b:"1804",a25b9043:"1878",dd64b19b:"1999","6346fcc4":"2018",a1a0e1c8:"2023",f51e2c38:"2026",e6f35a47:"2065","7a2fc1d0":"2154","00bdcdfd":"2155","8cd71234":"2176","26b0b060":"2211",fc366093:"2259",a76452f4:"2375",d8d1f700:"2382","7569a642":"2517",afde35fa:"2645","3c637039":"2651",a054c7bb:"2664","8f25f5d6":"2708","1ad957dc":"2784","677fe8ea":"2799","6c58d44a":"2817",ecbb1d71:"2855","1ebeac2d":"2962","3f67f55a":"2977","233b353a":"2996","984df2d5":"3057","1f391b9e":"3085",a26b60a5:"3147",ab891b2d:"3239","109e9612":"3262","1f54aa44":"3296","2fe20bee":"3309",ee7512bf:"3342","9e67ecd3":"3461",cca9ab01:"3499",fa32d8f5:"3519","690f2976":"3657",e46d06a7:"3748","1796cdcc":"3750","3720c009":"3751","59c11c09":"3759","83b849fb":"3770",fe530ce3:"3778",f2631415:"3868","8dbfc019":"3935",d8e4d5a2:"3978",d433a361:"3994",cc920e38:"4016","37efec55":"4121",e647cc90:"4183","5e761421":"4210","4df51fab":"4214","075900c2":"4238",e90f8152:"4244","89f763c3":"4285",b3c04648:"4334",d1a92424:"4398","76bafe4a":"4462",baff1c13:"4501","222020f0":"4527",a2352dbb:"4604","099c3df6":"4649","55960ee5":"4688",f29c3938:"4690","1b91faeb":"4705",bd6299ac:"4722",b147f28c:"4725","5555c7ad":"4751",bf2f2bdf:"4765","6f55c9cf":"4768",f5b10b8e:"4822","805235b2":"4879",d1d6965f:"4926","940c63b5":"4985","201053fe":"5059","2b8e7cce":"5139","4a041131":"5185","645caf87":"5188",e34f5b49:"5225",b1be59c7:"5232","72f8c013":"5248",a016b679:"5277","1267f3eb":"5356","8e1aca95":"5436",e0b428e9:"5511",d492abb2:"5518","3c12eb91":"5574","03eb7fc9":"5655",feeaba8c:"5847",ec657ac0:"5853","91d769ec":"5864","47c3edc2":"5938",e7799648:"5968","444eea02":"6029","36ff7946":"6044",ea9d7419:"6063","1086c4e3":"6071","2e8a245f":"6101","9a9bcadb":"6133",a518c2df:"6144","298453e4":"6165","6ab65d69":"6172","91c34f41":"6199",f4013560:"6248",eddf3597:"6272","37a06808":"6345",a729f601:"6383",a583544e:"6418","78ef12e0":"6511",cbab3e1c:"6623",ce3496c0:"6629","5d17b01a":"6661","6050cbd3":"6668",aa2b73ba:"6691",ae00b075:"6699",ad2b96ab:"6786",aa0123c2:"6791","24525d35":"6872","92e88698":"6901","46d096f8":"6946","01dd9109":"6961",c9b64e62:"6983","42cecbd1":"7128","082617a4":"7208","6660ff76":"7235",d5fb78b2:"7298",b590b05e:"7356","0fc9e6b7":"7388",eabe565e:"7394",f3a354f1:"7448",a005d525:"7456","55d21a58":"7486","829da9db":"7536","3ed68424":"7598",a90a4a9e:"7630","045b9fc8":"7684",c7a27f72:"7705","5ef057d2":"7819",b05168c4:"7866",a8720fa0:"7908",ae2be934:"7969","3aeed4b8":"7979","31ea1fe1":"7997",e488e9fc:"8047","6988c53c":"8050",ed934f36:"8053","78d06b84":"8087",d32f801f:"8145","3117d461":"8193",f726a4be:"8210","6ae9f69f":"8265",cff312c3:"8310",b16067d9:"8322",e3f84cd2:"8340","2abf00b7":"8429","744316eb":"8485",c0e1474d:"8511","2eca6aec":"8595",a5b9108a:"8609",cf2e9d71:"8635",bf2bc47a:"8685","1b614a22":"8695","9aa4b37e":"8711","69b1ab02":"8719","4f20cd3e":"8723","6b2816df":"8802","054f9627":"8842","5d5c4b17":"8898",e0067c3a:"8906",d4e3b5f0:"8936","7aceb302":"8972",f73f4300:"9022",c8d9e14a:"9055","8a5bb0fa":"9080",a27b67a1:"9110","05e916a1":"9112","49705f8c":"9135","3f357898":"9213","36d80f80":"9270",e43648cd:"9344",a95a0fbe:"9347","83580c2e":"9355","94dfb9f8":"9401","99fd26bf":"9410",b056ff5d:"9414","352af136":"9424","4bcab200":"9432","69e41596":"9446","1be78505":"9514","97fd7fd6":"9578","88b881fe":"9597","19d0bdb5":"9638",c6b1a212:"9684",a752ebca:"9762","19e4d3f4":"9774","0dd3d16d":"9790","219ea060":"9827","84ddaeaf":"9893",df203c0f:"9924","12db9723":"9927",f66ae8e2:"9970"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,f)=>{var b=r.o(e,a)?e[a]:void 0;if(0!==b)if(b)f.push(b[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var d=new Promise(((f,d)=>b=e[a]=[f,d]));f.push(b[2]=d);var c=r.p+r.u(a),t=new Error;r.l(c,(f=>{if(r.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var d=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+c+")",t.name="ChunkLoadError",t.type=d,t.request=c,b[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var b,d,c=f[0],t=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(b in t)r.o(t,b)&&(r.m[b]=t[b]);if(o)var i=o(r)}for(a&&a(f);n Abstrakte und finale Klassen und Methoden | Programmieren mit Java - +

    Abstrakte und finale Klassen und Methoden

    Mit Hilfe der Schlüsselwörter abstract und final kann die Verwendung von Klassen vorgegeben bzw. eingeschänkt werden.

    Abstrakte Klassen

    Abstrakte Klassen können nicht instanziiert werden.

    image

    Abstrakte Methoden

    Abstrakte Methoden werden in abstrakten Klassen definiert, besitzen dort keinen Methodenrumpf und müssen in den abgeleiteten Klassen der abstrakten Klasse überschrieben werden.

    image

    Finale Klassen

    Finale Klassen können nicht abgeleitet werden.

    image

    Finale Methoden

    Finale Methoden können nicht überschrieben werden.

    image

    - + \ No newline at end of file diff --git a/documentation/arrays/index.html b/documentation/arrays/index.html index a8fc374b26..f7f00b3c11 100644 --- a/documentation/arrays/index.html +++ b/documentation/arrays/index.html @@ -4,7 +4,7 @@ Felder (Arrays) | Programmieren mit Java - + @@ -13,7 +13,7 @@ werden können.

    image

    Erzeugen von Feldern

    Da es sich bei Feldern um Objekte handelt, müssen diese vor Verwendung erzeugt werden. Bei der Erzeugung muss immer die Länge des Feldes (d.h. die Anzahl der Elemente) angegeben werden. Jedes Feld verfügt über das Attribut length, welches die Länge des Feldes enthält.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int[] ids = new int[5];
    System.out.println(Arrays.toString(ids));
    int[] ids2 = {4, 8, 15, 16, 23, 42};
    System.out.println(Arrays.toString(ids2));
    }

    }
    Hinweis

    Felder werden zwar mit Hilfe des new-Operators erzeugt, besitzen aber keinen Konstruktor.

    Zugriff auf Feldelemente

    Der Zugriff auf die Elemente eines Feldes erfolgt über die Angabe des entsprechenden Index.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int[] ids = {4, 8, 15, 16, 23, 42};

    for (int i = 0; i < ids.length; i++) {
    System.out.println(ids[i]);
    }
    }

    }
    Hinweis

    Der Index beginnt bei Java bei 0.

    Der Parameter String[] args

    Der Parameter String[] args der main-Methode ermöglicht es dem Anwender, der ausführbaren Klasse beim Aufruf Informationen mitzugeben.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    for (int i = 0; i < args.length; i++) {
    System.out.println("args[" + i + "]: " + args[i]);
    }
    }

    }

    Variable Arugmentlisten (VarArgs)

    Variable Argumentlisten (VarArgs) ermöglichen die Definition von Methoden, denen beliebig viele Werte eines Datentyps mitgegeben werden können. Die Parameterliste einer Methode kann allerdings nur eine variable Argumentliste beinhalten und diese muss immer am Ende der Parameterliste stehen.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    printAll("Peter", "Lisa");
    printAll("Heidi", "Franz", "Fritz");
    }

    public static void printAll(String... texts) {
    for (int i = 0; i < texts.length; i++) {
    System.out.println(texts[i]);
    }
    }

    }
    Hinweis

    Technisch gesehen handelt es sich bei einer variablen Argumentliste um ein Feld.

    Herausforderungen beim Arbeiten mit Feldern

    Das Arbeiten mit Feldern stellt einige Herausforderungen bereit:

    • Die Länge eines Feldes muss bereits bei der Initialisierung des Feldes angegeben werden und kann nicht mehr verändert werden
    • Beim Hinzufügen eines Elements in ein volles Feld müssen alle Elemente des Feldes in ein neues, größeres Feld kopiert werden
    • Beim Einfügen oder Löschen eines Elements müssen alle nachfolgenden Elemente verschoben werden

    image

    - + \ No newline at end of file diff --git a/documentation/calculations/index.html b/documentation/calculations/index.html index 160003b4cd..03c6fb1ca1 100644 --- a/documentation/calculations/index.html +++ b/documentation/calculations/index.html @@ -4,13 +4,13 @@ Mathematische Berechnungen | Programmieren mit Java - + - + \ No newline at end of file diff --git a/documentation/class-structure/index.html b/documentation/class-structure/index.html index 2d80377aa7..a5ade7f62f 100644 --- a/documentation/class-structure/index.html +++ b/documentation/class-structure/index.html @@ -4,7 +4,7 @@ Aufbau einer Java-Klasse | Programmieren mit Java - + @@ -14,7 +14,7 @@ Anweisungsblocks können sich weitere Anweisungsblöcke befinden.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    System.out.println("Winter is Coming");
    }

    }

    Statische Methoden

    Statische Methoden sind abgeschlossene Programmteile, die Parameter enthalten und einen Wert zurückgeben können. Sie müssen mit dem Schlüsselwort static gekennzeichnet werden. Bei statischen Methoden, die einen Wert zurückgeben, muss der Datentyp des Rückgabewertes angegeben werden; bei statische Methoden, die keinen Wert zurückgeben, das Schlüsselwort void. Der Aufruf einer statischen Methode erfolgt über den Klassennamen gefolgt von einem Punkt.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    MainClass.printStarkMotto();
    MainClass.printText("Winter is Coming");
    }

    public static void printStarkMotto() {
    System.out.println("Winter is Coming");
    }

    public static void printText(String text) {
    System.out.println(text);
    }

    }
    Hinweis

    Die statischen Methoden einer Startklasse werden auch als Unterprogramme bezeichnet.

    Die main-Methode

    Die Methode void main(args: String[]) ist eine spezielle Methode in Java und stellt Startpunkt sowie Endpunkt einer Anwendung bzw. eines Programms dar. Nur Klassen mit einer main-Methode können von der Laufzeitumgebung ausgeführt werden. Aus diesem Grund werden Klassen mit einer main-Methode auch als ausführbare Klassen oder als Startklassen bezeichnet.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    System.out.println("Winter is Coming");
    }

    }

    Kommentare

    Kommentare sollen die Lesbarkeit des Programms verbessern. Sie bewirken bei der Ausführung keine Aktion und werden vom Java-Compiler ignoriert. Java kennt einzeilige Kommentare mit //, Kommentarblöcke mit /* */ und Dokumentationskommentare mit /** */.

    MainClass.java
    /**
    * Beschreibung der Klasse
    *
    * @author Autor der Klasse
    * @version Version
    *
    */
    public class MainClass {

    /**
    * Beschreibung der Methode
    *
    * @param args Beschreibung der Parameter
    */
    public static void main(String[] args) {
    /* Kommentarblock */
    System.out.println("Winter is Coming"); // Kommentar
    }

    }

    Entwicklungspakete

    Entwicklungspakete ermöglichen das hierarchische Strukturieren von Klassen. Um die Klassen eines Entwicklungspaketes verwenden zu können, müssen die jeweiligen Klassen explizit mit Hilfe des Schlüsselworts import importiert werden.

    image

    Hinweis

    Die Klassen des Entwicklungspaketes java.lang müssen nicht importiert werden.

    - + \ No newline at end of file diff --git a/documentation/comparators/index.html b/documentation/comparators/index.html index 5cdcd6048f..1dfe3ee363 100644 --- a/documentation/comparators/index.html +++ b/documentation/comparators/index.html @@ -4,7 +4,7 @@ Komparatoren | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Komparatoren

    Mit Hilfe der Methode int compareTo(o: T) der Schnittstelle Comparable<T> bzw. der Methode int compare(o1: T, o2: T) der Schnittstelle Comparator<T> können Objekte einer Klasse miteinander verglichen werden. Der Rückgabewert beider Methoden gibt die Ordnung der zu vergleichenden Objekte an:

    • Rückgabewert kleiner Null: das Vergleichsobjekt ist größer
    • Rückgabewert gleich Null: beide Objekte sind gleich groß
    • Rückgabewert größer Null: das Vergleichsobjekt ist kleiner

    Objekte der Klasse Foo können durch die Implementierung der Methode int compareTo(o: T) der Schnittstelle Comparable<T> miteinander verglichen werden.

    Container.java
    public class Container implements Comparable<Container> {

    private String value;

    public Container(String value) {
    this.value = value;
    }

    public void setValue(String value) {
    this.value = value;
    }

    public String getValue() {
    return value;
    }

    @Override
    public int compareTo(Container o) {
    return value.compareTo(o.value);
    }

    }

    In der main-Methode der Startklasse wird mit Hilfe der statischen Methode void sort(list: List<T>) der Klasse Collections eine Liste mit Objekten der Klasse Foo sortiert. Aufgrund der Implementierung der compareTo-Methode wird die Liste aufsteigend nach dem Attribut bar sortiert.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    ArrayList<Container> containers = new ArrayList<>();
    containers.add(new Container("Winter"));
    containers.add(new Container("is"));
    containers.add(new Container("Coming"));

    Collections.sort(containers);
    }

    }
    - + \ No newline at end of file diff --git a/documentation/console-applications/index.html b/documentation/console-applications/index.html index 90c4aa39b6..afc0faffa4 100644 --- a/documentation/console-applications/index.html +++ b/documentation/console-applications/index.html @@ -4,13 +4,13 @@ Konsolenanwendungen | Programmieren mit Java - +

    Konsolenanwendungen

    Konsolenanwendungen sind Programme ohne eine grafische Benutzeroberfläche d.h. die Steuerung sowie die Eingabe und Ausgabe erfolgen ausschließlich über textuelle Anweisungen.

    Konsoleneingaben

    Die Klasse Scanner im Paket java.util stellt Methoden zur Verfügung, um Eingaben von der Konsole einzulesen und in entsprechende Datentypen umzuwandeln.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int i = scanner.nextInt();
    System.out.println(i);
    }

    }
    Hinweis

    Dem Konstruktor muss der Standard-Eingabestrom System.in als Wert mitgegeben werden.

    Konsolenausgaben

    Der Standard-Ausgabestrom System.out bietet verschiedene Methoden, um Informationen auf der Konsole auszugeben:

    • Bei den print-Methoden wird die Information unverändert und linksbündig ausgegeben
    • Bei den println-Methoden wird die Information unverändert und linksbündig ausgegeben. Zusätzlich wird ein Zeilenumbruch ausgeführt
    • Bei den printf-Methoden wird die Information formatiert ausgegeben. Die Formatierungsregeln sind nach dem Muster [flags][width][.precision]conversion-character aufgebaut
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    System.out.print("Winter is Coming");
    System.out.println("Winter is Coming");
    System.out.printf("%25S", "Winter is Coming");
    }

    }
    - + \ No newline at end of file diff --git a/documentation/control-structures/cases/index.html b/documentation/control-structures/cases/index.html index 95c05c060d..8bafce384c 100644 --- a/documentation/control-structures/cases/index.html +++ b/documentation/control-structures/cases/index.html @@ -4,7 +4,7 @@ Verzweigungen | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Verzweigungen

    Mit Hilfe von Verzweigungen können unterschiedliche Anweisungsblöcke ausgeführt werden.

    Einfache Verzweigungen

    Die if-Verzweigung ist eine Anweisung, die abhängig von einer Bedingung zwischen unterschiedlichen Anweisungsblöcken auswählt: Ist die Bedingung wahr, wird der Anweisungsblock direkt nach der Bedingung ausgeführt, ansonsten wird der Anweisungsblock nach else ausgeführt.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int a = 3, b = 4, c;

    if (a > b) {
    c = a - b;
    } else {
    c = b - a;
    }

    System.out.println(c);
    }

    }
    Hinweis

    Der else-Zweig ist optional, kann also weggelassen werden.

    Kaskadierte Verzweigungen

    Mehrfachverzweigungen können mit Hilfe einer if-else-if-Leiter abgebildet werden. Die if-else-if-Leiter verschachtelt mehrere if-Anweisungen zu einer sogenannten kaskadierten Verzweigung.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int amount = 6;

    if (amount >= 10) {
    System.out.println("viel");
    } else if (amount == 0) {
    System.out.println("nichts");
    } else if (amount > 0 && amount <= 5) {
    System.out.println("wenig");
    } else if (amount < 0) {
    System.out.println("nicht definiert");
    } else {
    System.out.println("irgendwas zwischen wenig und viel");
    }
    }

    }

    Bedingte Zuweisungen

    Wird eine if-Verzweigung für eine Wertzuweisung verwendet, spricht man von einer bedingten Zuweisung. Zusätzlich zur ausführlichen Schreibweise existiert für bedingte Zuweisungen auch eine Kurzschreibweise.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int x = 1;
    int y = 2;
    int z;

    /* ausführliche Schreibweise */
    if (x > y) {
    z = 3;
    } else {
    z = 4;
    }
    System.out.println(z);

    /* Kurzschreibweise */
    z = (x > y) ? 3 : 4;
    System.out.println(z);
    }

    }
    Hinweis

    Die Kurzschreibweise sollte verantwortungsvoll verwendet werden, da die Lesbarkeit dadurch eventuell erschwert wird.

    Mehrfachverzweigungen

    Mehrfachverzweigungen können entweder mit Hilfe von if-else-if-Leitern oder mit Hilfe der switch-case-Anweisung realisiert werden. Tritt ein Fall ein, werden alle Anweisungen bis zum nächsten break ausgeführt. Durch Weglassen von break können unterschiedliche Fälle gleich behandelt werden. Der default-Block wird immer dann ausgeführt, wenn keiner der aufgeführten Fälle eintritt.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    String color = "r";
    switch (color) {
    case "r":
    case "R":
    System.out.println("rot");
    break;
    case "g":
    case "G":
    System.out.println("grün");
    break;
    case "b":
    case "B":
    System.out.println("blau");
    break;
    default:
    break;
    }
    }

    }

    Seit Java 14 beheben Switch-Ausdrücke einige Ungereimtheiten der klassischen switch-case-Anweisung und ermöglichen eine elegantere Syntax.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    String color = "r";

    String colorText = switch (color) {
    case "r", "R" -> "rot";
    case "g", "G" -> "grün";
    case "b", "B" -> "blau";
    default -> "";
    };

    System.out.println(colorText);
    }

    }
    - + \ No newline at end of file diff --git a/documentation/control-structures/index.html b/documentation/control-structures/index.html index a7036d8d73..93d4ddcfea 100644 --- a/documentation/control-structures/index.html +++ b/documentation/control-structures/index.html @@ -4,14 +4,14 @@ Kontrollstrukturen | Programmieren mit Java - + - + \ No newline at end of file diff --git a/documentation/control-structures/loops/index.html b/documentation/control-structures/loops/index.html index 7cbb8898b0..82d15650b0 100644 --- a/documentation/control-structures/loops/index.html +++ b/documentation/control-structures/loops/index.html @@ -4,14 +4,14 @@ Schleifen | Programmieren mit Java - +

    Schleifen

    Schleifen sind eine von zwei Möglichkeiten, Anweisungsblöcke wiederholt auszuführen. Die zweite Möglichkeit sind Selbstaufrufe in Form rekursiver Methoden.

    while-Schleifen

    Bei der while-Schleife wird eine bestimmte Anweisungsfolge (Schleifenrumpf) wiederholt, solange eine bestimmte Bedingung (Schleifenbedingung) wahr ist. Da zu Beginn der Schleife die Bedingung geprüft wird, spricht man auch von einer kopfgesteuerten Schleife.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int i = 0;
    while (i < 10) {
    System.out.println(i);
    i++;
    }
    }

    }

    do/while-Schleifen

    Im Gegensatz zur while-Schleife wird bei der do/while-Schleife der Schleifenrumpf immer mindestens einmal durchlaufen. Da die Bedingung hier am Ende der Schleife geprüft wird, spricht man hier von einer fußgesteuerten Schleife.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int i = 0;
    do {
    System.out.println(i);
    i++;
    } while (i < 10);
    }

    }

    for-Schleifen

    Bei der for-Schleife handelt es sich um eine indexgesteuerte Schleife, auch Zählschleife genannt. Durch den Index wird bereits zu Schleifenbeginn festgelegt, wie oft die Schleife durchlaufen wird.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
    System.out.println(i);
    }
    }

    }

    for-each-Schleifen

    Mit Hilfe der for-each-Schleife können Datensammlungen wie z.B. Felder und Listen elementweise durchlaufen werden. Allerdings können die Elemente einer Datensammlung nur geändert werden, nicht jedoch die Datensammlung selbst.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int[] ids = {4, 8, 15, 16, 23, 42};
    for (int i : ids) {
    System.out.println(i);
    }
    }

    }

    Schleifensteuerung

    Die Anweisung break sorgt dafür, dass eine Schleife ungeachtet der Bedingung komplett verlassen wird. Mit der Anweisung continue wird der aktuelle Schleifendurchgang abgebrochen und die Schleife wird mit dem nächsten Durchlauf fortgeführt.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
    if (i == 6) {
    break;
    }
    if (i % 2 == 0) {
    continue;
    }
    System.out.println(i);
    }
    }

    }
    - + \ No newline at end of file diff --git a/documentation/data-objects/index.html b/documentation/data-objects/index.html index 8df683682a..d40cd5d46b 100644 --- a/documentation/data-objects/index.html +++ b/documentation/data-objects/index.html @@ -4,7 +4,7 @@ Datenobjekte | Programmieren mit Java - + @@ -14,7 +14,7 @@ mit dem Schlüsselwort final deklariert. Literale sind sogenannte wörtliche Konstanten, d.h. fixe Datenobjekte ohne Bezeichner. Da Literale über keinen Bezeichner verfügen, können Sie im Programm nicht angesprochen werden.

    image

    Deklaration von Datenobjekten

    Durch Angabe von Datentyp und Bezeichner wird ein Datenobjekt deklariert, d.h. dem Compiler bekannt gegeben. Deklarationen werden wie jede Anweisung mit einem Semikolon abgeschlossen. Datenobjekte gleichen Datentyps können mit Komma getrennt aufgeführt werden.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int a, b;
    boolean error;
    char char1;
    String text;
    }

    }
    Hinweis

    Java ist case-sensitiv, unterscheidet also zwischen Groß- und Kleinschreibung. Um die Lesbarkeit zu erhöhen, sollten Variablen mit einem Kleinbuchstaben beginnen, wohingegen Konstanten immer in Großbuchstaben geschrieben werden sollten.

    Initialisierung von Datenobjekten

    In Java müssen Datenobjekte vor der ersten Verwendung explizit initialisiert werden, d.h. mit einem Wert belegt werden. Der Zuweisungsoperator = weist dem Datenobjekt auf der linken Seite den Wert des Ausdrucks auf der rechten Seite zu.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int a = 42, b = a;
    boolean error = true;
    char char1;
    String text;

    char1 = 'M';
    text = "Winter is Coming";
    }

    }

    Typinferenz bei Datenobjekten

    Unter Typinferenz versteht man, dass bei der Deklaration eines Datenobjekts auf die Angabe eine Datentyps verzichtet werden kann, wenn der Compiler aufgrund der restlichen Angaben den Typ selbstständig ermitteln kann. Für die Typinferenz wird das Schlüsselwort var verwendet.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int i = 5;
    i = "Text"; // Kompilierungsfehler

    var j = 5;
    j = "Text"; // Kompilierungsfehler
    }

    }
    Hinweis

    Mit var deklarierte Datenobjekte sind weiterhin statisch typisiert.

    Gültigkeitsbereiche von Datenobjekten

    Datenobjekte sind nur innerhalb eines Anweisungsblocks gültig, d.h. man kann nur innerhalb dieses Programmabschnitts auf das Datenobjekt zugreifen.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int a = 1, b;
    b = foo(a);
    }

    public static int foo(int c) {
    int d;
    d = a++; // Kompilierungsfehler
    d = c++;
    return d;
    }

    }

    Typumwandlung (Type Casting)

    Der Cast-Operator () erlaubt die explizite Umwandlung eines Datentyps in einen anderen. Bei Wertzuweisungen findet eine implizite Typumwandlung vom niederwertigen zum höherwertigen Datentyp statt. Zu beachten ist, dass bei einer Typumwandlung ein Genauigkeitsverlust stattfinden kann.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    int a = 14;
    int b = 3;
    double result;

    // implizite Typumwandlung
    result = a / b;
    System.out.println(result);

    // explizite Typumwandlung
    result = (double) a / b;
    System.out.println(result);
    }

    }

    Die Wertigkeit von Datentypen entscheidet darüber, welche Typumwandlungen möglich sind.

    image

    Hinweis

    Für den Datentyp boolean ist keine Typumwandlung möglich.

    - + \ No newline at end of file diff --git a/documentation/data-types/index.html b/documentation/data-types/index.html index 54054e3a41..724c624c79 100644 --- a/documentation/data-types/index.html +++ b/documentation/data-types/index.html @@ -4,7 +4,7 @@ Datentypen | Programmieren mit Java - + @@ -13,7 +13,7 @@ statischer Typsicherheit. Unter Typsicherheit versteht man, dass Datentypen gemäß ihrer Definition verwendet werden und dabei keine Typverletzungen auftreten. Bei statisch typisierten Sprachen findet die Typprüfung bei der Kompilierung statt. Beispiele für generische Klassen sind die Klasse ArrayList<E> sowie die Klasse HashMap<K, V>.

    Abstrakte Datentypen

    Abstrakte Datentypen sind Sammlungen von Daten samt den dazugehörigen Operationen wie Einfügen, Löschen etc. Beispiele für abstrakte Datentypen sind Listen (z.B. die Klassen ArrayList<E> und LinkedList<E>), Mengen (z.B. die Klassen HashSet<E> und TreeSet<E>), Warteschlangen (z.B. die Klassen LinkedList<E> und PriorityQueue<E>) sowie Assoziativspeicher (z.B. die Klassen HashMap<K, V> und TreeMap<K, V>).

    - + \ No newline at end of file diff --git a/documentation/design/index.html b/documentation/design/index.html index d94ea7e7b6..1109ad4e67 100644 --- a/documentation/design/index.html +++ b/documentation/design/index.html @@ -4,13 +4,13 @@ Softwaredesign | Programmieren mit Java - +

    Softwaredesign

    Als Teilprozess der Softwareentwicklumg umfasst das Softwaredesign die Datenmodellierung, den Entwurf der Softwarearchitektur sowie das Festlegen benötigter Komponenten, Datentypen und Algorithmen. Bei der Datenmodellierung werden alle relevanten Objekte der Anwendung inklusive ihrer Eigenschaften und Beziehungen zueinander dargestellt; die Softwarearchitektur beschreibt alle relevanten Komponenten und deren Interaktionen. Bei der Gestaltung von Software kommen häufig Entwurfsmuster zur Lösung wiederkehrender Probleme zum Einsatz. Zudem soll durch Beachtung von Gestaltungsprinzipien eine hohe Softwarequalität sichergestellt werden.

    Entwurfsmuster

    Entwurfsmuster (Design Patterns) sind Lösungsansätze für wiederkehrende Probleme der Softwareentwicklung und sollen dabei helfen, Programmierfehler zu vermeiden, Programmentwürfe wiederverwendbar und möglichst effizient zu gestalten. Sie können u.a. in Erzeugungsmuster (z.B. Einzelstück (Singleton)), Strukturmuster (z.B. Adapter) und Verhaltensmuster (z.B. Beobachter (Observer)) unterteilt werden. Der Begriff Entwurfsmuster wurde maßgeblich durch das 1994 erschienene Buch Design Patterns – Elements of Reusable Object-Oriented Software von Richard Helm, Ralph Johnson und John Vlissides (auch bekannt als Gang of Four) geprägt.

    Gestaltungsprinzipien

    Unter Gestaltungsprinzipien (Design Principles) versteht man Richtlinien, welche eine hohe Softwarequalität sicherstellen sollen. Neben einfachen Gestaltungsprinzipen wie DRY (Don´t Repeat Yourself), KISS (Keep It Simple, Stupid) und YAGNI (You Ain´t Gonna Need It) sind in der objektorientierten Programmierung vor allem die SOLID-Prinzipen von Bedeutung. Hinter dem Akronym SOLID verbergen sich 5 Gestaltungsprinzipien:

    • Single Responsibility Principle: jede Klasse sollte genau eine Verantwortung besitzen
    • Open Closed Principle: Software-Einheiten sollten offen für Erweiterungen, aber geschlossen für Modifikationen sein
    • Liscov Substitution Principle: Objekte von Unterklassen sollten sich so Verhalten wie Objekte der dazugehörigen Oberklasse
    • Interface Segregation Principle: Klassen sollten nur Methoden implementieren müssen, die sie auch verwenden
    • Dependency Inversion Principle: Abhängigkeiten sollten immer von den konkreten zu den abstrakten Modulen verlaufen

    Das Akronym SOLID geht auf den Softwareentwickler Robert C. Martin zurück, der unter anderem auch an der Entwicklung des Agilen Manifests beteiligt war. Dieses wurde 2001 verfasst und umfasst die vier wesentlichen Leitsätze der agilen Softwareentwicklung.

    - + \ No newline at end of file diff --git a/documentation/enumerations/index.html b/documentation/enumerations/index.html index 164657c9e8..c99de5a58c 100644 --- a/documentation/enumerations/index.html +++ b/documentation/enumerations/index.html @@ -4,14 +4,14 @@ Aufzählungen (Enumerations) | Programmieren mit Java - +

    Aufzählungen (Enumerations)

    Bei einer Aufzählung (Enumeration) handelt es sich um eine spezielle Klasse, von der nur eine vorgegebene, endliche Anzahl an Instanzen existiert. Diese Instanzen werden als Aufzählungskonstanten bezeichnet. Technisch gesehen handelt es sich bei Aufzählungskonstanten um öffentliche, statische Konstanten vom Typ der Aufzählung.

    Implementieren von Aufzählungen

    Die Definition einer Aufzählung erfolgt analog zur Definition von Klassen, das Schlüsselwort hierfür lautet enum.

    WeekDay.java
    public enum WeekDay {

    MONDAY("Montag", true), TUESDAY("Dienstag", true), WEDNESDAY("Mittwoch", true), THURSDAY(
    "Donnerstag",
    true), FRIDAY("Freitag", true), SATURDAY("Samstag", true), SUNDAY("Sonntag", false);

    private String description;
    private boolean isWorkingDay;

    WeekDay(String description, boolean isWorkingDay) {
    this.description = description;
    this.isWorkingDay = isWorkingDay;
    }

    public String getDescription() {
    return description;
    }

    public boolean getWorkingDay() {
    return isWorkingDay;
    }

    }

    Verwenden von Aufzählungen

    Aufzählungen besitzen eine Reihe hilfreicher Methoden:

    • Die statische Methode T[] values() gibt alle Aufzählunskonstanten als Feld zurück
    • Die statische Methode T valueOf(name: String) gibt zu einer eingehenden Zeichenkette die dazugehörige Aufzählungskonstante zurück
    • Die Methode int ordinal() gibt die Ordnungszahl der Aufzählungskonstanten zurück
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    for (WeekDay w : WeekDay.values()) {
    System.out.println(w.ordinal());
    }
    }

    }
    - + \ No newline at end of file diff --git a/documentation/exceptions/index.html b/documentation/exceptions/index.html index 72cd7a46d4..c87700d451 100644 --- a/documentation/exceptions/index.html +++ b/documentation/exceptions/index.html @@ -4,7 +4,7 @@ Ausnahmen (Exceptions) | Programmieren mit Java - + @@ -17,7 +17,7 @@ Ausnahmen können behandelt bzw. weitergeleitet werden.

    Die Klassenhierarchie der Laufzeitfehler

    Die Klasse Throwable stellt die Oberklasse aller Laufzeitfehler dar. Schwerwiegende Fehler (hauptsächlich Probleme in der JVM (Java Virtual Machine)) werden durch Unterklassen der Klasse Error abgebildet, geprüfte Ausnahmen durch Unterklassen der Klasse Exception und ungeprüfte Ausnahmen durch Unterklassen der Klasse RuntimeException.

    image

    Definition von Ausnahmenklassen

    Eigene Ausnahmenklassen werden durch einfaches Ableiten von einer bestehenden Ausnahmenklasse definiert. Ausnahmenklassen sollten dabei immer von der Klasse Exception oder einer ihrer Unterklassen abgeleitet werden, nicht von der Klasse Error.

    QuxException.java
    public class QuxException extends Exception {

    public QuxException() {}

    public QuxException(String message) {}

    }

    Auslösen von Ausnahmen

    Mit dem Schlüsselwort throw kann innerhalb einer Methode eine Ausnahme ausgelöst werden. Die Methode, in der die Ausnahme ausgelöst wird, muss mit dem Schlüsselwort throws die Ausnahmenklasse angeben, die ausgelöst werden kann.

    Foo.java
    public class Foo {

    public void bar() throws QuxException {
    throw new QuxException();
    }

    }

    Weiterleiten von Ausnahmen

    Ausnahmen können weitergeleitet werden. Hierbei wird die Fehlerbehandlung an die nächsthöhere Ebene weitergegeben. Um eine Ausnahme weiterzuleiten, muss in der weiterleitenden Methode mit throws die Ausnahme angegeben werden, die ausgelöst werden kann.

    Foo.java
    public class Foo {

    public void bar() throws QuxException {
    throw new QuxException();
    }

    public void baz() throws QuxException {
    bar();
    }

    }

    Abfangen von Ausnahmen

    Mit Hilfe der try-catch-Anweisung können Methoden, die eine Ausnahme auslösen können, überwacht werden; d.h. die Ausnahmen werden gegebenenfalls abgefangen. Der try-Block enthält die Anweisungen, die überwacht werden sollen, der catch-Block enthält die eigentliche Fehlerbehandlung. Als Parameter von catch muss angegeben werden, welche Ausnahme(n) abgefangen werden soll(en).

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    try {
    Foo foo = new Foo();
    foo.bar();
    } catch (QuxException e) {
    /* Fehlerbehandlung */
    }
    }

    }
    - + \ No newline at end of file diff --git a/documentation/generics/index.html b/documentation/generics/index.html index 653c08b461..ad364dbdad 100644 --- a/documentation/generics/index.html +++ b/documentation/generics/index.html @@ -4,7 +4,7 @@ Generische Programmierung | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Generische Programmierung

    Quellcode sollte generell so allgemein bzw. generisch geschrieben werden, dass er für unterschiedliche Datenstrukturen und Datentypen verwendet werden kann. Das Ziel der generischen Programmierung ist die Entwicklung von wiederverwendbarem Code. In Java verwendet man das Konzept der generischen Datentypen, also Klassen, die mit verschiedene Datentypen verwendet werden können.

    Generische Klassen ohne Java Generics

    Auch ohne Java Generics kann in Java mit Hilfe der Klasse Object generisch programmiert werden. Der Nachteil besteht darin, dass durch den Upcast einer beliebigen Klasse auf die Klasse Object die spezifischen Methoden der Klasse nicht mehr verwendet werden können und der dadurch notwendige Downcast zu Laufzeitfehlern führen kann.

    Die Klasse Box ermöglicht das Speichern einer beliebig typisierten Information.

    Box.java
    public class Box {

    private Object content;

    public void set(Object content) {
    this.content = content;
    }

    public Object get() {
    return content;
    }

    }

    In der main-Methode der Startklasse wird zunächst eine ganze Zahl in einer Box gespeichert und anschließend wieder ausgelesen. Die Umwandlung der ganzen Zahl in eine Zeichenkette führt erst zur Laufzeit zu einem Fehler.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Box box = new Box();
    box.set(5);
    String i = (String) box.get(); // Laufzeitfehler
    System.out.println(i);
    }

    }

    Generische Klassen mit Java Generics

    Klassen und Methoden können in Java mit Typen parametrisiert werden. Diese werden durch spitze Klammern <> gekennzeichnet und stellen Platzhalter für konkrete Datentypen dar. Beim Kompilieren werden alle generischen Informationen vollständig entfernt und durch die konkreten Datentypen ersetzt. Durch die dadurch vorhandene statische Typsicherheit können Laufzeitfehler verhindert und Fehler bereits beim Kompilieren entdeckt werden.

    Die generische Klasse Box<T> ermöglicht das Speichern einer beliebig typisierten Information mit Hilfe des Typparameters T.

    Box.java
    public class Box<T> {

    private T content;

    public void set(T content) {
    this.content = content;
    }

    public T get() {
    return content;
    }

    }

    In der main-Methode der Startklasse wird zunächst eine ganze Zahl in einer Box gespeichert und anschließend wieder ausgelesen. Die Umwandlung der ganzen Zahl in eine Zeichenkette führt aufgrund der statischen Typsicherheit zu einem Kompilierungsfehler.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Box<Integer> box = new Box<>();
    box.set(5);
    String i = box.get(); // Kompilierungsfehler
    System.out.println(i);
    }

    }
    Hinweis

    Die Typisierung kann entweder explizit oder implizit über den Diamantenoperator <> erfolgen.

    Hinweis

    Typparameter können auf die Unterklassen einer bestimmten Klasse eingeschränkt werden. Dadurch kann in der generischen Klasse auf Attribute und Methoden der angegebenen Klasse zugegriffen werden. Die Angabe eines eingeschränkten Typparameters erfolgt über den Zusatz extends sowie die Angabe der entsprechenden Klasse.

    Generische Methoden mit Java Generics

    Die generische Methode <T> int getIndex(value: T, values: T[]) gibt den Index eines beliebig typisierten gesuchten Wertes innerhalb eines gleichtypisierten Feldes zurück.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    System.out.println(getIndex(5, new Integer[] {3, 5, 2, 4, 1}));
    }

    public static <T> int getIndex(T value, T[] values) {
    for (int i = 0; i < values.length; i++) {
    if (values[i].equals(value)) {
    return i;
    }
    }
    return -1;
    }

    }

    Namensrichtlinien für Typparameter

    Um den Einsatzbereich von Typparametern in generischen Klassen und Methoden kenntlich zu machen, sollte man festgelegte Zeichen verwenden.

    TypparameterEinsatzbereich
    T, U, V, W...Datentyp (Type)
    EElement einer Datensammlung (Element)
    KSchlüssel eines Assoziativspeichers (Key)
    VWert eines Assoziativspeichers (Value)

    Varianz

    Bei der Deklaration einer generischen Klasse ermöglicht der Wildcard-Typ ? die Angabe eines unbestimmten Typs. Dieser kann gar nicht (Bivarianz), nach oben (Kovarianz), nach unten (Kontravarianz), oder sowohl nach oben als auch nach unten (Invarianz) eingeschränkt werden.

    Die generische Klasse Box<T> ermöglicht das Speichern einer beliebig typisierten Information.

    Box.java
    public class Box<T> {

    private T content;

    public void set(T content) {
    this.content = content;
    }

    public T get() {
    return content;
    }

    }

    In der main-methode der Startklasse werden verschiedene Boxen unterschiedlich deklariert und anschließend initialisiert. Dabei ist die Klasse String eine Unterklasse der Klasse Object, die Klasse Integer eine Unterklasse der Klasse Number und diese eine Unterklasse der Klasse Object.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Box<?> bivariantBox;
    bivariantBox = new GenericBox<Object>();
    bivariantBox = new GenericBox<Number>();
    bivariantBox = new GenericBox<Integer>();
    bivariantBox = new GenericBox<String>();

    Box<? extends Number> covariantBox;
    covariantBox = new GenericBox<Object>(); // Kompilierungsfehler
    covariantBox = new GenericBox<Number>();
    covariantBox = new GenericBox<Integer>();
    covariantBox = new GenericBox<Integer>(); // Kompilierungsfehler

    Box<? super Number> contravariantBox;
    contravariantBox = new GenericBox<Object>();
    contravariantBox = new GenericBox<Number>();
    contravariantBox = new GenericBox<Integer>(); // Kompilierungsfehler
    covariantBox = new GenericBox<Integer>(); // Kompilierungsfehler

    Box<Number> invariantBox;
    invariantBox = new GenericBox<Object>(); // Kompilierungsfehler
    invariantBox = new GenericBox<Number>();
    invariantBox = new GenericBox<Integer>(); // Kompilierungsfehler
    covariantBox = new GenericBox<String>(); // Kompilierungsfehler
    }

    }
    - + \ No newline at end of file diff --git a/documentation/inheritance/index.html b/documentation/inheritance/index.html index 9f3fd4f162..1d6ef2cc53 100644 --- a/documentation/inheritance/index.html +++ b/documentation/inheritance/index.html @@ -4,7 +4,7 @@ Vererbung | Programmieren mit Java - + @@ -14,7 +14,7 @@ Die Beziehung zwischen einer speziellen Klasse und einer allgemeinen Klasse wird Vererbung bezeichnet. Die speziellen Klasse einer Vererbung werden als Unterklassen (Sub Classes), die allgemeinen Klassen als Oberklassen (Super Classes) bezeichnet.

    Implementieren von Vererbung

    Die Vererbung wird mit dem Schlüsselwort extends realisiert. In der Oberklasse können Attribute und Methoden mit dem Schlüsselwort protected als geschützt festlegt werden. Unterklassen können auf alle öffentlichen und geschützten Attribute und Methoden der Oberklasse zugreifen.

    SuperClass.java
    public class SuperClass {

    public String foo;
    protected String bar;
    private String baz;

    public SuperClass(String foo, String bar, String baz) {
    this.foo = foo;
    this.bar = bar;
    this.baz = baz;
    }

    }
    SubClass.java
    public class SubClass extends SuperClass {

    public SubClass(String foo, String bar, String baz) {
    super(foo, bar, baz);
    }

    public void foobar() {
    System.out.println(foo);
    System.out.println(bar);
    System.out.println(baz); // Kompilierungsfehler
    }

    }
    Hinweis

    In den Konstruktoren der Unterklasse muss ein Konstruktor der Oberklasse mit Hilfe von super aufgerufen werden.

    Überschreiben von Methoden

    Wird in einer Unterklasse eine Methode definiert, die der Signatur einer Methode der Oberklasse entspricht, wird die Methode der Oberklasse überschrieben, d.h. von der Unterklasse neu implementiert. Bei Bedarf kann die ursprüngliche Methodenimplementierung der Oberklasse mit Hilfe der Objektreferenz super aufgerufen werden.

    SuperClass.java
    public class SuperClass {

    public void foo() {
    System.out.print("foo");
    }

    }
    SubClass.java
    public class SubClass extends SuperClass {

    @Override
    public void foo() {
    super.foo();
    System.out.println("bar");
    }

    }
    Hinweis

    Die Annotation @Override sorgt bei fehlerhaftem Überschreiben der Methode für entsprechende Kompilierungsfehler.

    - + \ No newline at end of file diff --git a/documentation/inner-classes/index.html b/documentation/inner-classes/index.html index 815f58badd..bc3a1ff361 100644 --- a/documentation/inner-classes/index.html +++ b/documentation/inner-classes/index.html @@ -4,7 +4,7 @@ Innere Klassen (Inner Classes) | Programmieren mit Java - + @@ -17,7 +17,7 @@ benötigt, implementiert die anonyme Klasse diese Schnittstelle, wird als Datentyp eine Klasse benötigt, so wird die anonyme Klasse daraus abgeleitet.

    Zunächst wird die Schnittstelle Qux samt der Methode void quux(s: String)definiert.

    Qux.java
    public interface Qux {

    void quux(String s);

    }

    Die Klasse Foo soll die Verwenderklasse der Schnittstelle Qux darstellen.

    Foo.java
    public class Foo {

    public static void bar(String s, Qux q) {
    q.quux(s);
    }

    }

    In der main-Methode der Startklasse soll die Methode void bar(s: String, q: Qux) der Klasse Foo aufgerufen werden, wofür eine konkrete Implementierung der Schnittstelle Qux benötigt wird. Die Implementierung erfolgt in Form einer anonymen Klasse.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Foo.bar("Winter is Coming", new Qux() {
    @Override
    public void quux(String s) {
    System.out.println(s);
    }
    });
    }

    }

    Lambda-Ausdrücke

    Lambda-Ausdrücke sind anonyme Funktionen, die nur über ihre Referenz angesprochen werden können. Die Methodenparameter und der Methodenkörper werden getrennt vom Pfeiloperator -> notiert. Voraussetzung für den Einsatz eines Lambda-Ausdrucks ist eine funktionale Schnittstelle, also eine Schnittstelle, die über genau eine Methode verfügt.

    Zunächst wird die Schnittstelle Qux samt der Methode void quux(s: String)definiert.

    Qux.java
    public interface Qux {

    void quux(String s);

    }

    Die Klasse Foo soll die Verwenderklasse der Schnittstelle Qux darstellen.

    Foo.java
    public class Foo {

    public static void bar(String s, Qux q) {
    q.quux(s);
    }

    }

    In der main-Methode der Startklasse soll die Methode void bar(s: String, q: Qux) der Klasse Foo aufgerufen werden, wofür eine konkrete Implementierung der Schnittstelle Qux benötigt wird. Die Implementierung erfolgt in Form eines Lambda-Ausdrucks.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Foo.bar("Winter is Coming", s -> System.out.println(s));
    }

    }

    Syntaxvarianten

    • Bei keinem oder mehreren Methodenparametern müssen diese in runden Klammern angegeben werden, bei genau einem Methodenparameter können die runden Klammern weggelassen werden
    • Besteht der Methodenkörper aus mehreren Anweisungen, müssen diese in geschweiften Klammern angegeben werden, bei genau einer Anweisung können die geschweiften Klammern weggelassen werden
    • Besteht der Methodenkörper aus genau einer Anweisung, kann das Semikolon am Anweisungsende weggelassen werden, ist die Anweisung eine return-Anweisung, kann auch das return weggelassen werden

    Methodenreferenzen

    Lambda-Ausdrücke, bei denen die referenzierte Methode von den Parametertypen und vom Rückgabetyp genau auf die zu implementierende Methode passt, können als Methodenreferenz dargestellt werden. Bei einer Methodenreferenz wird die Klasse bzw. die Referenz auf der linken Seite mit Hilfe zweier Doppelpunkte vom Methodennamen auf der recht Seite getrennt.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Foo.bar("Winter is Coming", s -> System.out.println(s)); // Lambda-Ausdruck
    Foo.bar("Winter is Coming", System.out::println); // Methodenreferenz
    }

    }
    - + \ No newline at end of file diff --git a/documentation/interfaces/index.html b/documentation/interfaces/index.html index 9005537132..07cb2dd902 100644 --- a/documentation/interfaces/index.html +++ b/documentation/interfaces/index.html @@ -4,7 +4,7 @@ Schnittstellen (Interfaces) | Programmieren mit Java - + @@ -13,7 +13,7 @@ über mehrere mögliche Pfade von einer Basisklasse und werden dabei möglicherweise Methoden der Basisklasse unterschiedlich überschrieben, entstehen dadurch nicht eindeutige Varianten. Aufgrund der Rautenform des Klassendiagramms wird dieses Szenario also Diamantenproblem bezeichnet.

    image

    Zur Lösung des Diamantenproblems werden Schnittstellen (Interfaces) verwendet. Schnittstellen sind im Prinzip abstrakte Klassen, die ausschließlich abstrakte Methoden besitzen. Durch Schnittstellen wird sichergestellt, dass Klassen bestimmte Methoden bereitstellen und dass verschiedene Klassen miteinander kommunizieren können.

    Definition von Schnittstellen

    Die Definition einer Schnittstelle erfolgt analog zur Definition von Klassen. Das Schlüsselwort für Schnittstellen lautet interface. Eine Schnittstelle kann nur öffentliche, abstrakte und öffentliche, statische Methoden beinhalten.

    Foo.java
    public interface Foo {

    void bar();

    void baz();

    }
    Hinweis

    Die Angabe von abstract und public bei Methoden ist nicht erforderlich.

    Implementieren von Schnittstellen

    Schnittstellen werden mit Hilfe des Schlüsselworts implements von einer Klasse implementiert. Durch die Implementierung der Schnittstelle verpflichtet sich die Klasse, alle Methoden der Schnittstelle zu implementieren.

    Qux.java
    public class Qux implements Foo {

    public void bar() {
    System.out.println("bar");
    }

    public void baz() {
    System.out.println("baz");
    }

    }

    Verwenden von Schnittstellen

    Schnittstellen können ebenso wie Klassen als Datentypen verwendet werden. Die Typumwandlung von der implementierenden Klasse zur Schnittstelle bezeichnet man als Upcast die Rückumwandlung als Downcast

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Foo foo;
    Qux qux = new Qux();
    foo = qux; // Upcast
    }

    }
    - + \ No newline at end of file diff --git a/documentation/io-streams/index.html b/documentation/io-streams/index.html index edccf4d52b..6a80f7885a 100644 --- a/documentation/io-streams/index.html +++ b/documentation/io-streams/index.html @@ -4,7 +4,7 @@ Datenströme (IO-Streams) | Programmieren mit Java - + @@ -14,7 +14,7 @@ Schreiben und Lesen byteorientierter Daten und zum Schreiben und Lesen serialisierter Objekte. Das Arbeiten mit Datenstrom-Klassen kann dabei aufwändig über "normale" try-catch-Anweisungen oder mit Hilfe von try-with-resources-Anweisungen realisiert werden.

    image

    Standard-Datenströme zur Ein- und Ausgabe

    Java stellt Standard-Datenströme für die Eingabe (System.in), die Ausgabe (System.out), sowie die Fehlerausgabe (System.err) zur Verfügung.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    byte input[] = new byte[256];
    int noBytes = 0;
    String output = "";

    try {
    noBytes = System.in.read(input);
    } catch (IOException e) {
    System.err.println(e.getMessage());
    }

    if (noBytes > 0) {
    output = new String(input, 0, noBytes);
    System.out.println(output);
    }
    }

    }
    Hinweis

    Die Klasse Scanner, die ebenfalls auf dem Datenstrom-Konzept basiert, ermöglicht eine einfache Möglichkeit der Eingabe.

    Schreiben und Lesen byteorientierter Daten

    Für die Verarbeitung von byteorientierten Daten (z.B. Bild- und Video-Dateien) stehen die abstrakten Basisklassen InputStream und OutputStream zur Verfügung.

    DatenstromklasseEin- und Ausgabe in...
    BufferedInputStream und BufferedOutputStream...einen Puffer
    FileInputStream und FileOutputStream...eine Datei
    StringInputStream und StringOutputStream...eine Zeichenkette

    Schreiben byteorientierter Daten

    1. Datei-Objekt erzeugen
    2. FileOutputStream-Objekt erzeugen
    3. BufferedOutputStream-Objekt erzeugen
    4. Daten schreiben
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    File file = new File("stark.bin");

    try (FileOutputStream fileOutputStream = new FileOutputStream(file);
    BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream)) {
    bufferedOutputStream.write("Winter is Coming".getBytes());
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }

    Lesen byteorientierter Daten

    1. Datei-Objekt erzeugen
    2. FileInputStream-Objekt erzeugen
    3. BufferedInputStream-Objekt erzeugen
    4. Werte auslesen
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    File file = new File("stark.bin");

    try (FileInputStream fileInputStream = new FileInputStream(file);
    BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream)) {
    byte[] input = bufferedInputStream.readAllBytes();
    System.out.println(new String(input));
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }

    Schreiben und Lesen zeichenorientierter Daten

    Für die Verarbeitung von zeichenorientierten Daten (z.B. Textdokumente) stehen die abstrakten Basisklassen Reader und Writer zur Verfügung.

    DatenstromklasseEin- und Ausgabe in...
    BufferedReader und BufferedWriter...einen Puffer
    FileReader und FileWriter...eine Datei
    StringReader und StringWriter...eine Zeichenkette

    Schreiben zeichenorientierter Daten

    1. Datei-Objekt erzeugen
    2. FileWriter-Objekt erzeugen
    3. BufferedWriter-Objekt erzeugen
    4. Daten schreiben
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    File file = new File("stark.txt");

    try (FileWriter fileWriter = new FileWriter(file);
    BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) {
    bufferedWriter.write("Winter is Coming");
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }

    Lesen zeichenorientierter Daten

    1. Datei-Objekt erzeugen
    2. FileReader-Objekt erzeugen
    3. BufferedReader-Objekt erzeugen
    4. Werte auslesen
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    File file = new File("stark.txt");

    try (FileReader fileReader = new FileReader(file);
    BufferedReader bufferedReader = new BufferedReader(fileReader)) {
    String line;
    while ((line = bufferedReader.readLine()) != null) {
    System.out.println(line);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }

    Schreiben und Lesen serialisierter Objekte

    Um ein Objekt persistent zu machen (also zu sichern) und um ein Objekt durch das Netzwerk zu schicken (also für entfernte Methodenaufrufe) ist es notwendig, das Objekt in einen Byte-Strom umzuwandeln. Die Umwandlung eines Objektes in einen Byte-Strom bezeichnet man als Serialisierung die Rückumwandlung als Deserialisierung Die Serialisierung erfolgt über die writeObject-Methode der Klasse ObjectOutputStream, die Deserialisierung über die readObject-Methode der Klasse ObjectInputStream.

    Damit Objekte einer Klasse serialisiert werden können, muss die entsprechende Klasse die Schnittstelle Serializable implementieren. Die Schnittstelle Serializable ist eine sogenannte Marker-Schnittstelle, d.h. sie besitzt keine zu implementierenden Methoden.

    Foo.java
    public class Foo implements Serializable {

    }

    Schreiben serialisierter Objekte

    1. Datei-Objekt erzeugen
    2. FileOutputStream-Objekt erzeugen
    3. ObjectOutputStream-Objekt erzeugen
    4. Objekte schreiben
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    ArrayList<Foo> foos = new ArrayList<>();
    foos.add(new Foo());
    foos.add(new Foo());

    File file = new File("foos.bin");

    try (FileOutputStream fileOutputStream = new FileOutputStream(file);
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream)) {
    for (Foo f : foos) {
    objectOutputStream.writeObject(f);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }

    Lesen serialisierter Objekte

    1. Datei-Objekt erzeugen
    2. FileInputStream-Objekt erzeugen
    3. ObjectInputStream-Objekt erzeugen
    4. Objekte auslesen
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    File file = new File("foos.bin");

    try (FileInputStream fileInputStream = new FileInputStream(file);
    ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream)) {
    while (true) {
    Foo foo = (Foo) objectInputStream.readObject();
    System.out.println(foo);
    }
    } catch (EOFException e) {
    /* End of File */
    } catch (IOException | ClassNotFoundException e) {
    e.printStackTrace();
    }
    }

    }

    Versionierung bei der Serialisierung

    Die Konstante serialVersionUID vom Datentyp long dient zur eindeutigen Identifikation der Version einer serialisierbaren Klasse. Durch die Konstante kann sichergestellt werden, dass Empfänger von serialisierten Objekten typkompatibel zum Sender sind, d.h. eine passende Klassenstruktur aufweisen.

    Foo.java
    public class Foo implements Serializable {

    public static final long serialVersionUID = 1L;

    }
    Hinweis

    Obwohl jede serialisierbare Klasse automatisch eine ID erhält, wird die manuelle Zuweisung dringend empfohlen.

    Die try-with-resources-Anweisung

    Bei einer "normalen" try-catch-Anweisung müssen die Datenstrom-Klassen manuell geschlossen werden, was sich als sehr aufwändig darstellt.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    File file = new File("stark.txt");
    FileWriter fileWriter = null;
    BufferedWriter bufferedWriter = null;

    try {
    fileWriter = new FileWriter(file);
    bufferedWriter = new BufferedWriter(fileWriter);
    bufferedWriter.write("Winter is Coming");
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (bufferedWriter != null) {
    try {
    bufferedWriter.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }

    }
    Hinweis

    Der finally-Block einer try-Anweisung wird in jedem Fall durchlaufen.

    Die try-with-resources-Anweisung ermöglicht die Deklaration von Ressourcen, die am Ende des try-Blockes automatisch geschlossen werden.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    File file = new File("stark.txt");

    try (FileWriter fileWriter = new FileWriter(file);
    BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) {
    bufferedWriter.write("Winter is Coming");
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    }
    Hinweis

    Voraussetzung für den Einsatz der try-with-resources-Anweisung ist, dass die Ressourcen-Klassen die Schnittstelle AutoCloseable implementiert haben.

    - + \ No newline at end of file diff --git a/documentation/java-api/dates-and-times/index.html b/documentation/java-api/dates-and-times/index.html index 07740e7276..642b9dbb89 100644 --- a/documentation/java-api/dates-and-times/index.html +++ b/documentation/java-api/dates-and-times/index.html @@ -4,13 +4,13 @@ Datums- und Zeitangaben | Programmieren mit Java - +

    Datums- und Zeitangaben

    Die Klasse LocalDateTime liefert alle relevanten Informationen zum fast weltweit verwendeten Kalendersystem ISO-8601 (gregorianischer Kalender).

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    LocalDateTime now = LocalDateTime.now();

    System.out.println("Jahr: " + now.getYear());
    System.out.println("Monat: " + now.getMonth());
    System.out.println("Tag: " + now.getDayOfMonth());
    }

    }

    Neben den print-Methoden des Standard-Ausgabestroms System.out besitzt die Klasse System auch die Methode long currentTimeMillis(), die die Differenz in Millisekunden zwischen der aktuellen Systemzeit und dem Nullpunkt zurückgibt.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    long timeInMilliseconds = System.currentTimeMillis();
    System.out.println(timeInMilliseconds);
    }

    }
    Hinweis

    Der festgelegte Nullpunkt ist der 1. Januar 1970, 0 Uhr.

    - + \ No newline at end of file diff --git a/documentation/java-api/files/index.html b/documentation/java-api/files/index.html index e166941c59..ed62568c92 100644 --- a/documentation/java-api/files/index.html +++ b/documentation/java-api/files/index.html @@ -4,7 +4,7 @@ Dateien und Verzeichnisse | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Dateien und Verzeichnisse

    Die Klasse File ermöglicht die Arbeit mit Dateien und Verzeichnissen. Mit Hilfe der Methode boolean exists() kann beispielsweise geprüft werden, ob ein entsprechendes Verzeichnis bzw. eine entsprechende Datei existiert oder nicht. Die Klasse bietet zudem M ethoden zum Erstellen und Löschen von Verzeichnissen bzw. Dateien. Zum Erzeugen eines File-Objekts wird entweder ein Pfad zu einem Verzeichnis bzw. zu einer Datei oder ein URI (Unified Resource Identifier) benötigt.

    Lesen von Dateien mit Hilfe der Klasse Scanner

    Zum Lesen einer Datei können entweder Datenstromklassen oder die Klasse Scanner verwendet werden.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) throws FileNotFoundException {
    File file = new File("text.txt");
    Scanner scanner = new Scanner(file);

    while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    System.out.println(line);
    }

    scanner.close();
    }

    }
    Hinweis

    Nach der letzten Verwendung sollte die Methode void close() der Klasse Scanner aufgerufen werden.

    Absolute und relative Pfadangaben

    Beim Zugriff auf Verzeichnisse bzw. Dateien unterscheidet man zwischen absoluten und relativen Pfadangaben. Bei absoluten Pfadangaben wird der vollständige Pfad von der Wurzel des jeweiligen Verzeichnissystems bis zum Ziel angegeben, bei relativen der Weg von einem festgelegten Bezugspunkt bis zum Ziel.

    image

    Hinweis

    Alle Klassen im Paket java.io verwenden als Bezugspunkt das Arbeitsverzeichnis des Benutzers (Systemeigenschaft user.dir).

    - + \ No newline at end of file diff --git a/documentation/java-api/index.html b/documentation/java-api/index.html index a1a8403803..be2b08cab4 100644 --- a/documentation/java-api/index.html +++ b/documentation/java-api/index.html @@ -4,7 +4,7 @@ Die Java API | Programmieren mit Java - + @@ -13,7 +13,7 @@ als Javadoc bereit. Entwicklungsumgebungen wie Eclipse bieten meist eine vollständige Integration der Java API an. Das Javadoc ist ein Werkzeug zur Software-Dokumentation und erstellt aus den öffentlichen Deklarationen von Klassen, Schnittstellen, Attributen und Methoden sowie eventuell vorhandenen Dokumentationskommentaren HTML-Seiten. Um die Navigation innerhalb der Dokumentationsdateien zu erleichtern, werden zusätzlich verschiedene Index- und Hilfsdateien generiert. HTML-Tags in den Dokumentationskommentaren ermöglichen die Formatierung der Dokumentation.

    - + \ No newline at end of file diff --git a/documentation/java-api/wrappers/index.html b/documentation/java-api/wrappers/index.html index 9040bcbbd9..6529d37506 100644 --- a/documentation/java-api/wrappers/index.html +++ b/documentation/java-api/wrappers/index.html @@ -4,13 +4,13 @@ Wrapper-Klassen | Programmieren mit Java - +

    Wrapper-Klassen

    Wrapper-Klassen (auch Hüllenklassen genannt) verpacken primitive Datentypen in vollwertigen Klassen und erweitern so die primitiven Datentypen um hilfreiche Methoden. Das Verpacken eines primitiven Datentyps bezeichnet man als Boxing, das Entpacken als Unboxing.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Integer i = Integer.valueOf("631");
    System.out.println(i);
    Boolean b = Boolean.logicalXor(true, false);
    System.out.println(b);
    Character c = Character.toUpperCase('a');
    System.out.println(c);
    }

    }
    Hinweis

    Wrapper-Klassen basieren auf dem Entwurfsmuster Adapter, welches die Kommunikation zwischen Klassen mit zueinander inkompatiblen Schnittstellen ermöglicht.

    - + \ No newline at end of file diff --git a/documentation/java-stream-api/index.html b/documentation/java-stream-api/index.html index fed4ea8720..7818390d86 100644 --- a/documentation/java-stream-api/index.html +++ b/documentation/java-stream-api/index.html @@ -4,7 +4,7 @@ Die Java Stream API | Programmieren mit Java - + @@ -15,7 +15,7 @@ ausgeführt.

    In der main-Methode der Startklasse wird auf den Zahlenstrom 4-8-15-16-23-42 zunächst der Filter Zahl > 15 angewendet, anschließend der Filter Zahl = ganze Zahl und abschließend werden die verbliebenen Zahlen auf der Konsole ausgegeben. Zum Nachvollziehen werden die Zahlen auch bei den beiden Filtern auf der Konsole ausgegeben.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Stream.of(4, 8, 15, 16, 23, 42).filter(i -> {
    System.out.println(i + ": filter 1");
    return i % 2 == 0;
    }).filter(i -> {
    System.out.println(i + ": filter 2");
    return i > 15;
    }).forEach(i -> System.out.println(i + ": forEach"));
    }

    }

    Ohne Bedarfsauswertung würden die verschiedenen Operationen für die jeweils verbliebenen Elemente ausgeführt nacheinander werden. Die Ausgabe sähe wie folgt aus:

     4: filter 1
    8: filter 1
    15: filter 1
    16: filter 1
    23: filter 1
    42: filter 1
    4: filter 2
    8: filter 2
    16: filter 2
    42: filter 2
    16: forEach
    42: forEach

    Aufgrund der Bedarfsauswertung werden die verschiedenen Operationen aber für jedes Element einzeln nacheinander ausgeführt. Dadurch ergibt sich folgende Ausgabe:

    4: filter 1
    4: filter 2
    8: filter 1
    8: filter 2
    15: filter 1
    16: filter 1
    16: filter 2
    16: forEach
    23: filter 1
    42: filter 1
    42: filter 2
    42: forEach

    Unendliche Ströme

    Die Java Stream API stellt drei Methoden zur Verfügung, mit deren Hilfe (un)endliche Ströme erzeugt werden können:

    • Die Methode Stream<T> iterate(seed: T, f: UnaryOperator<T>) generiert einen unendlichen Strom aus einem Startwert und einer Funktion, welche das nächste Element erstellt
    • Die Methode Stream<T> iterate(seed: T, hasNext: Predicat <T>, next: UnaryOperator<T>) erweitert die "normale" iterate-Methode um eine Prädikatsfunktion zum Beenden des Stroms
    • Die Methode Stream<T> generate(s: Supplier<T>) kann zum Beispiel zum Erzeugen unendlich vieler zufälliger Elemente genutzt werden

    In der main-Methode der Startklasse werden drei (un)endliche Zahlenströme erzeugt.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Stream.iterate(0, i -> ++i).limit(100).forEach(System.out::println);
    Stream.iterate(0, i -> i < 100, i -> ++i).forEach(System.out::println);
    Stream.generate(() -> new Random().nextInt(100)).limit(100).forEach(System.out::println);
    }

    }

    Die ersten beiden Zahlenströme geben die Zahlen von 0 bis 99 aus, der dritte Zahlenstrom 100 Pseudozufallszahlen von 0 bis 99. Der erste und dritte Zahlenstrom würden eigentlich unendliche viele (Pseudozufalls-)Zahlen erzeugen, werden aber durch die Methode Stream<T> limit(maxSize: long) auf 100 (Pseudozufalls-)Zahlen begrenzt.

    - + \ No newline at end of file diff --git a/documentation/lists/index.html b/documentation/lists/index.html index 25b146e51e..7e47de1060 100644 --- a/documentation/lists/index.html +++ b/documentation/lists/index.html @@ -4,14 +4,14 @@ Listen | Programmieren mit Java - +

    Listen

    Die Java API stellt eine Reihe von Klassen und Schnittstellen zur Verfügung, mit deren Hilfe Listen realisiert werden. Unter einer Liste versteht man eine geordnete Folge von Elementen, die auch doppelt enthalten sein können. Der Zugriff auf die Elemente erfolgt über den Index oder sequentiell.

    Die Klasse ArrayList<E>

    Die Klasse ArrayList<E> stellt eine veränderbare Liste dynamischer Größe auf Basis eine Feldes dar.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Hans");
    list.add("Peter");
    list.add("Lisa");

    System.out.println(list.size());
    System.out.println(list.get(0));
    list.set(0, "Max");
    list.add("Heidi");
    list.remove(0);
    }

    }

    Die Klasse Arrays

    Die Klasse Arrays stellt neben Methoden zum Sortieren und Durchsuchen von Feldern auch eine Methode zum Erzeugen veränderbarer Listen fixer Größe zur Verfügung.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    List<String> list = Arrays.asList("Hans", "Peter", "Lisa");

    System.out.println(list.size());
    System.out.println(list.get(0));
    list.set(0, "Max");
    list.add("Heidi"); // Laufzeitfehler
    list.remove(0); // Laufzeitfehler
    }

    }

    Die Schnittstelle List<E>

    Die Schnittstelle List<E> stellt verschiedene Fabrikmethoden zum Erzeugen unveränderlicher Listen zur Verfügung.

    Hinweis

    Fabrikmethoden sind Methoden, die Objekte erzeugen.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    List<String> list = List.of("Hans", "Peter", "Lisa");

    System.out.println(list.size());
    System.out.println(list.get(0));
    list.set(0, "Max"); // Laufzeitfehler
    list.add("Heidi"); // Laufzeitfehler
    list.remove(0); // Laufzeitfehler
    }

    }
    - + \ No newline at end of file diff --git a/documentation/maps/index.html b/documentation/maps/index.html index 8af78e8d95..7197fab12f 100644 --- a/documentation/maps/index.html +++ b/documentation/maps/index.html @@ -4,7 +4,7 @@ Assoziativspeicher (Maps) | Programmieren mit Java - + @@ -14,7 +14,7 @@ gemäß den entsprechenden Dokumentationskommentaren überschrieben hat. Im Gegensatz zu einem Binärbaum liegen die Paare in einer Hashtabelle unsortiert vor.

    IndexSchlüsselWert
    0Butter3
    2Brot9
    13Milch2
    14Eier5

    Die Klasse TreeMap<K, V> implementiert den Assoziativspeicher in Form eines Binärbaumes. Als Datenstruktur wird dabei ein balancierter Baum verwendet, d.h. spezielle Einfüge- und Löschoperationen stellen sicher, dass der Baum nicht zu einer linearen Liste entartet. Da die Paare in einem Binärbaum sortiert vorliegen, ist es für den Einsatz zwingend erforderlich, dass die Klasse, die den Schlüssel bildet, die Schnittstelle Comparable<T> implementiert hat. Alternativ kann dem Konstruktor der Klasse TreeMap<K, V> ein Komparator für den Schlüssel mitgegeben werden.

    image

    - + \ No newline at end of file diff --git a/documentation/object/index.html b/documentation/object/index.html index 0873454f8a..13645b3196 100644 --- a/documentation/object/index.html +++ b/documentation/object/index.html @@ -4,13 +4,13 @@ Die Mutter aller Klassen | Programmieren mit Java - +

    Die Mutter aller Klassen

    Alle Klassen in Java sind letztlich Unterklassen der Klasse Object. Daher wird diese auch als die Mutter aller Klassen bezeichnet. Die Klasse vererbt ihren Unterklassen wichtige Methoden, die jede Unterklasse überschreiben sollte:

    • Die Methode boolean equals(object: Object) prüft zwei Objekte auf Gleichheit
    • Die Methode int hashCode() liefert den Hashcode des aktuellen Objektes zurück
    • Die Methode String toString() liefert eine eindeutige Kennung des Objektes in der Form [Vollständiger Klassenname]@[Adresse des Objektes im Hauptspeicher in hexadezimaler Notation] zurück
    Hinweis

    Zwei Objekte sind gleich, wenn all ihre Attribute gleich sind.

    Hinweis

    Wird den print-Methoden des Ausgabestroms System.out eine Objektreferenz übergeben, wird implizit die Methode String toString() des jeweiligen Objektes aufgerufen.

    - + \ No newline at end of file diff --git a/documentation/oo/index.html b/documentation/oo/index.html index 297c841526..ef0cb0db54 100644 --- a/documentation/oo/index.html +++ b/documentation/oo/index.html @@ -4,7 +4,7 @@ Objektorientierte Programmierung | Programmieren mit Java - + @@ -17,7 +17,7 @@ eine Referenzvariable angesprochen werden können) löscht.

    Foo.java
    public class Foo {

    private String bar;
    public int baz;

    public Foo(String bar) {
    this.bar = bar;
    }

    public Foo(int bar) {
    this.bar = bar + "";
    }

    public String getBar() {
    return bar;
    }

    }
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Foo foo = new Foo("Winter is Coming");
    Foo foo2 = new Foo(42);
    }

    }
    Hinweis

    Auch Konstruktoren können überladen werden.

    Statische Attribute und Methoden

    Neben "normalen" Attributen und Methoden kann eine Klasse auch statische Attribute und statische Methoden besitzen. Im Gegensatz zu "normalen" Attributen existieren statische Attribute nur einmal pro Klasse und besitzen daher für alle Objekte dieser Klasse dieselben Werte. Innerhalb einer statischen Methode kann nur auf die statischen Attribute der Klasse zugegriffen werden.

    Bei der Deklaration von statischen Attributen und statischen Methoden kommt das Schlüsselwort static zum Einsatz. Für den Zugriff auf ein statisches Attribut bzw. den Aufruf einer statischen Methode wird keine Instanziierung benötigt, d.h. der der Zugriff bzw. Aufruf erfolgt über den Klassennamen.

    Foo.java
    public class Foo {

    private String bar;
    public int baz;

    private static int foobar;

    public Foo(String bar) {
    this.bar = bar;
    foobar++;
    }

    public Foo(int bar) {
    this.bar = bar + "";
    }

    public String getBar() {
    return bar;
    }

    public static int getFoobar() {
    return foobar;
    }

    }
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Foo foo = new Foo("Winter is Coming");
    int foobar = Foo.getFoobar();
    System.out.println(foobar);
    }

    }
    Hinweis

    "Normale" Attribute und Methoden werden auch als Instanzattribute bzw. Instanzmethoden bezeichnet, statische Attribute und Methoden auch Klassenattribute bzw. Klassenmethoden.

    - + \ No newline at end of file diff --git a/documentation/operators/index.html b/documentation/operators/index.html index 34ce636d97..368b03cb32 100644 --- a/documentation/operators/index.html +++ b/documentation/operators/index.html @@ -4,14 +4,14 @@ Operatoren | Programmieren mit Java - +

    Operatoren

    Operatoren sind Zeichen, mit denen Daten manipuliert werden können. Mit Hilfe von Operanden und Operatoren können beliebig komplexe Ausdrücke abgebildet werden. Operatoren mit einem, zwei oder drei Operanden werden als unäre Operatoren binäre Operatoren und ternäre Operatoren bezeichnet. Man unterscheidet zudem zwischen arithmetischen, bitweisen und logischen Operatoren sowie Vergleichsoperatoren.

    Arithmetische Operatoren

    Für die arithmetischen Grundrechenarten stehen verschiedene arithmetische Operatoren zur Verfügung.

    Ausdruck mit OperatorBedeutung
    x + yAddiere y zu x
    x - ySubtrahiere y von x
    x * yMultipliziere x mit y
    x / yDividiere x durch y
    x % yDivisionsrest von x / y
    x++Inkrementiere x und gib den alten Wert an den Ausdruck zurück
    ++xInkrementiere x und gib den neuen Wert an den Ausdruck zurück
    x--Dekrementiere x und gib den alten Wert an den Ausdruck zurück
    --xDekrementiere x und gib den neuen Wert an den Ausdruck zurück

    Bitweise Operatoren

    Bitweise Operatoren können dazu verwendet werden, Binäroperationen auf Operanden durchzuführen.

    Ausdruck mit OperatorBedeutung
    a & bBitweise AND-Verknüpfung
    a | bBitweise OR-Verknüpfung
    a ^ bBitweise XOR-Verknüpfung
    ~aBitweises NOT

    Logische Operatoren

    Logische Operatoren können dazu verwendet werden, logische Aussagen miteinander zu verknüpfen.

    Ausdruck mit OperatorBedeutung
    a && bLogische AND-Verknüpfung
    a || bLogische OR-Verknüpfung
    !aLogisches NOT

    Vergleichsoperatoren

    Logische Bedingungen für zwei Werte eines elementaren Datentyps können durch Vergleichsoperatoren realisiert werden.

    Ausdruck mit OperatorBedeutung
    x == yx ist gleich y
    x != yx ist ungleich y
    x > yx ist größer y
    x < yx ist kleiner y
    x >= yx ist größer gleich y
    x <= yx ist kleiner gleich y
    Hinweis

    Da der Vergleichsoperator == auf referenzielle Gleichheit prüft, sollte zum Vergleich von zwei Objekten die Methode boolean equals(object: Object) verwendet werden.

    Priorität von Operatoren

    Operatoren werden gemäß ihrer Priorität verarbeitet.

    PrioritätOperator
    1()
    2++, --, Vorzeichenplus, Vorzeichenminus, ~, !, (Datentyp)
    3*, /, %
    4+, -
    5<, <=, >, >=
    6==, !=
    7&
    8^
    9|
    10&&
    11||
    - + \ No newline at end of file diff --git a/documentation/optionals/index.html b/documentation/optionals/index.html index 2c9e40b75f..b58753d83a 100644 --- a/documentation/optionals/index.html +++ b/documentation/optionals/index.html @@ -4,14 +4,14 @@ Optionals | Programmieren mit Java - +

    Optionals

    Der Umgang mit null-Werten stellt in vielen Programmiersprachen eine große Herausforderung dar. Zur Vermeidung von Laufzeitfehlern (NullPointerException) müsste vor jedem Methodenaufruf eigentlich überprüft werden, ob ein gültiger Wert vorliegt oder nicht.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    String text = foo();
    System.out.println(text.length()); // Laufzeitfehler
    }

    public static String foo() {
    return null;
    }

    }

    Die Klasse Optional ermöglicht in Java eine komfortable Möglichkeit, mit null-Werten umzugehen. Das eigentliche Objekt wird dabei in einem Objekt der Klasse Optional verpackt; der Zugriff auf das verpackte Objekt erfolgt über entsprechende Methoden. Dies stellt sicher, dass sich der Entwickler mit null-Werten auseinander setzen muss.

    Für den Umgang mit null-Werten stellt die Klasse Optional Methoden wie T get(), boolean isPresent() und void ifPresent(consumer: Consumer<T>) zur Verfügung. Zudem existieren Methoden wie void orElse(other: T), mit denen Standardwerte festgelegt werden können.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    Optional<String> optionalText = foo();
    optionalText.ifPresent(t -> System.out.println(t.length()));
    }

    public static Optional<String> foo() {
    return Optional.ofNullable(null);
    }

    }
    - + \ No newline at end of file diff --git a/documentation/polymorphy/index.html b/documentation/polymorphy/index.html index 523d95c32a..5db270b11d 100644 --- a/documentation/polymorphy/index.html +++ b/documentation/polymorphy/index.html @@ -4,7 +4,7 @@ (Dynamische) Polymorphie | Programmieren mit Java - + @@ -14,7 +14,7 @@ fest, welche Methoden aufgerufen werden können, der dynamische, welche Methodenimplementierung aufgerufen wird. Die Typumwandlung von der abgeleiteten Unterklasse zur Oberklasse bezeichnet man als Upcast, die Rückumwandlung als Downcast.

    Upcast

    Beim Upcast wird die Objektreferenz der Unterklasse in eine Objektreferenz der Oberklasse umgewandelt.

    SuperClass.java
    public class SuperClass {
    }
    SubClass.java
    public class SubClass extends SuperClass {
    }
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    SuperClass superClass;
    SubClass subClass = new SubClass();
    superClass = subClass; // Upcast
    }

    }

    Downcast

    Beim Downcast wird die Objektreferenz der Oberklasse in eine Objektreferenz der Unterklasse umgewandelt. Im Gegensatz zum Upcast muss bei einem Downcast der Typ explizit angegeben werden. Der Downcast einer nicht zuweisungskompatiblen Referenz führt zu einer ClassCastException.

    SuperClass.java
    public class SuperClass {
    }
    SubClass.java
    public class SubClass extends SuperClass {
    }
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    SuperClass superClass;
    SubClass subClass = new SubClass();
    superClass = subClass; // Upcast
    subClass = (SubClass) superClass; // Downcast
    }

    }

    Der instanceof-Operator

    Mit dem Operator instanceof kann zur Laufzeit geprüft werden, ob eine Objektreferenz zuweisungskompatibel zu einer Klasse ist. Eine Objektreferenz ist dann zuweisungskompatibel zu einer Klasse, wenn die Klasse des referenzierten Objektes in einer Vererbungsbeziehung zur Klasse steht.

    SuperClass.java
    public class SuperClass {
    }
    SubClass.java
    public class SubClass extends SuperClass {
    }
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    SuperClass superClass;
    SubClass subClass = new SubClass();
    superClass = subClass; // Upcast
    if (superClass instanceof SubClass) {
    subClass = (SubClass) superClass; // Downcast
    }
    }

    }

    Seit Java 16 ermöglicht der Mustervergleich bei instanceof das Vermeiden notwendiger Typumwandlungen und sorgt gleichzeitig für eine sicherere Programmierung.

    SuperClass.java
    public class SuperClass {
    }
    SubClass.java
    public class SubClass extends SuperClass {
    }
    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    SuperClass superClass;
    SubClass subClass = new SubClass();
    superClass = subClass; // Upcast
    if (superClass instanceof SubClass s) { // Downcast
    }
    }

    }
    - + \ No newline at end of file diff --git a/documentation/programming/index.html b/documentation/programming/index.html index 89f606686f..32dd2285b8 100644 --- a/documentation/programming/index.html +++ b/documentation/programming/index.html @@ -4,7 +4,7 @@ Programmieren | Programmieren mit Java - + @@ -18,7 +18,7 @@ veröffentlicht. Der große Durchbruch von Java kam 1996 durch eine Kooperation mit der Firma Netscape zustande, die eine Integration von Java-Applets mit Hilfe von JavaScript in den Browser Netscape Navigator 2.0 ermöglichte. Weitere wichtige Meilensteine in der Geschichte von Java waren die Veröffentlichungen der Google-Entwicklungsumgebung Android 2008 sowie des Computerspiels Minecraft 2009.

    Hinweis

    Java war der Name der beliebtesten Kaffeesorte der Entwickler.

    JDK und JRE

    Das JDK (Java Development Kit) stellt die wichtigste Komponente zum Programmieren von Java-Programmen dar. Es enthält neben dem Compiler und Debugger weitere wichtige Werkzeuge sowie umfangreiche Bibliotheken (siehe Die Java API). Die JRE (Java Runtime Environment) enthält den Interpreter (die Java Virtual Machine) und wird zum Ausführen von Java-Applikationen benötigt.

    - + \ No newline at end of file diff --git a/documentation/pseudo-random-numbers/index.html b/documentation/pseudo-random-numbers/index.html index f49588893e..17ae113ee1 100644 --- a/documentation/pseudo-random-numbers/index.html +++ b/documentation/pseudo-random-numbers/index.html @@ -4,13 +4,13 @@ Pseudozufallszahlen | Programmieren mit Java - + - + \ No newline at end of file diff --git a/documentation/records/index.html b/documentation/records/index.html index 0e4fd6b82d..3a599bb58b 100644 --- a/documentation/records/index.html +++ b/documentation/records/index.html @@ -4,7 +4,7 @@ Datenklassen (Records) | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Datenklassen (Records)

    Datenklassen sind Klassen die lediglich der Kapselung unveränderlicher Daten dienen. Daher bestehen Datenklassen häufig aus Boilerplate-Code. Unter Boilerplate-Code versteht man Anweisungblöcke, die an verschiedenen Stellen mehr oder weniger identisch verwendet werden.

    Student.java
    public final class Student {

    public final int id;
    public final String name;

    public Student(int id, String name) {
    this.id = id;
    this.name = name;
    }

    public int id() {
    return id;
    }

    public String name() {
    return name;
    }

    @Override
    public final int hashCode() {
    return Objects.hash(id, name);
    }

    @Override
    public final boolean equals(Object obj) {
    if (this == obj) {
    return true;
    }
    if (obj == null) {
    return false;
    }
    if (getClass() != obj.getClass()) {
    return false;
    }
    Student other = (Student) obj;
    return id == other.id && Objects.equals(name, other.name);
    }

    @Override
    public final String toString() {
    return "Student [id=" + id + ", name=" + name + "]";
    }

    }

    Seit Java 16 bieten Records die Möglichkeiten, Datenklassen einfach umzusetzen. Records sind spezielle Klassen, die anhand der festgelegten Parameter entsprechende Konstruktoren, Getter sowie Implementierungen für die Methoden boolean equals(object: Object), int hashCode() und String toString() erzeugen. Das Schlüsselwort für Records lautet record.

    Student.java
    public record Student(int id, String name) {
    }
    Hinweis

    Da Records von der Klasse Record abgeleitet sind, können sie nicht von einer weiteren Klasse abgeleitet werden. Allerdings können Records, wie andere Klassen auch, beliebig viele Schnittstellen implementieren.

    - + \ No newline at end of file diff --git a/documentation/strings/index.html b/documentation/strings/index.html index d459ed2202..4bd811ae5f 100644 --- a/documentation/strings/index.html +++ b/documentation/strings/index.html @@ -4,14 +4,14 @@ Zeichenketten (Strings) | Programmieren mit Java - +

    Zeichenketten (Strings)

    Ketten von beliebigen Zeichen werden durch die Klasse String realisiert. Diese stellt einige hilfreiche Methoden zur Verfügung, die bei der Analyse und der Verarbeitung von Zeichenketten Verwendung finden. Die Angabe einer Zeichenkette erfolgt über die Anführungszeichen.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    String text = "Winter";
    String text2 = "Coming";

    String text3 = text + " is " + text2;

    int length = text3.length();
    char charAt1 = text3.charAt(0);
    String upperCase = text3.toUpperCase();
    }

    }

    Escape-Sequenzen

    Steuer- und Sonderzeichen in Zeichenketten können mit Hilfe einer Escape-Sequenz realisiert werden.

    Escape-SquenzBeschreibung
    \nZeilensprung
    \tTabulatorsprung
    \\Schräger rechts
    \"Anführungszeichen
    \'Hochkomma
    \u0000 bis \uFFFFUnicode-Zeichen

    Textblöcke

    Seit Java 15 ermöglichen Textblöcke mehrzeilige Zeichenketten ohne umständliche Umwege.

    MainClass.java
    public class MainClass {

    public static void main(String[] args) {
    String text = """
    <html>
    <body>
    <p>Winter is Coming</p>
    </body>
    </html>""";
    System.out.println(text);
    }

    }
    - + \ No newline at end of file diff --git a/documentation/tests/index.html b/documentation/tests/index.html index 70b24ea0f4..0047274a19 100644 --- a/documentation/tests/index.html +++ b/documentation/tests/index.html @@ -4,14 +4,14 @@ Softwaretests | Programmieren mit Java - +

    Softwaretests

    Softwaretests sollen sicherstellen, dass bei der Entwicklung oder Änderung einer Software der Quellcode in allen festgelegten Anwendungsfällen korrekt funktioniert. Mit Hilfe von Softwaretests können Softwareentwickler im Idealfall schon während des Entwicklungsprozesses mögliche Fehler identifizieren und beheben.

    Testarten

    Man unterscheidet bei Softwaretests zwischen verschiedenen Testarten, die in der Testpyramide dargestellt werden:

    • Akzeptanztests: Testen des gesamten Systems unter realitätsgetreuen Bedingungen
    • Systemtests: Testen des gesamten Systems
    • Integrationstests: Testen mehrerer, voneinander abhängiger Komponenten
    • Komponententests: Testen einzelner, abgeschlossener Softwarebausteine

    image

    Testgetriebe Entwicklung (Test Driven Development)

    Komponententests (Unit Tests) spielen vor allem bei der Testgetriebenen Entwicklung (Test Driven Development) eine große Rolle. Hierbei werden Anwendungen Schritt für Schritt (also inkrementell) um neue Funktionen erweitert (Red-Green-Refactor-Methode):

    • Red: Einen Test schreiben, der zunächst fehlschlägt
    • Green: Genau soviel Produktivcode schreiben, damit der Test erfolgreich durchläuft
    • Refactor: Testcode und Produktivcode aufräumen (vereinfachen und verbessern)

    image

    Hinweis

    Da durch die vorangestellten Tests eine kontinuierliche Designverbesserung stattfindet, wird die Testgetriebene Entwicklung zu den Designstrategien gezählt.

    Test Doubles

    Oftmals werden zum Testen einer Methode andere Objekte bzw. Komponenten benötigt, die vom Test bereitgestellt werden müssen. Zum Testen können entweder die realen Komponenten, oder aber sogenannte Test Doubles verwendet werden:

    • Eine Fälschung (Fake) imitiert eine reale Komponente
    • Eine Attrappe (Dummy) ist ein Platzhalter für ein Objekt, welches im Test nicht benötigt wird
    • Ein Stummel (Stub) gibt bei Aufruf einen festen Wert zurück; wird also für eingehende Aufrufe verwendet
    • Eine Nachahmung (Mock) zeichnet die Methodenaufrufe an ihr auf und kann zurückgeben, welche Methode wie oft mit welchen Parametern aufgerufen wurde; wird also für ausgehende Aufrufe verwendet
    • Ein Spion (Spy) kann ähnlich wie eine Nachahmung Methodenaufrufe aufzeichnen, kann diese aber auch die reale Komponente weiterleiten

    Test Doubles sollen die Abhängigkeiten des SUT (System under Test) minimieren und für vorhersagbare Ergebnisse sorgen.

    - + \ No newline at end of file diff --git a/documentation/uml/activity-diagrams/index.html b/documentation/uml/activity-diagrams/index.html index 2a519a37e1..4d63679e67 100644 --- a/documentation/uml/activity-diagrams/index.html +++ b/documentation/uml/activity-diagrams/index.html @@ -4,14 +4,14 @@ Aktivitätsdiagramme | Programmieren mit Java - +

    Aktivitätsdiagramme

    Aktivitätsdiagramme sind ein Diagrammtyp der UML und gehören dort zum Bereich der Verhaltensdiagramme. Der Fokus von Aktivitätsdiagrammen liegt auf imperativen Verarbeitungsaspekten. Eine Aktivität stellt einen gerichteten Graphen dar, der über Knoten (Aktionen, Datenknoten und Kontrollknoten) und Kanten (Kontrollflüsse und Datenflüsse) verfügt:

    • Aktionen sind elementare Bausteine für beliebiges, benutzerdefiniertes Verhalten
    • Kontrollknoten steuern den Kontroll- und Datenfluss in einer Aktivität:
      • Startknoten: legen den Beginn der Aktivität fest
      • Endknoten: legen das Ende der Aktivität fest
      • Ablaufendknoten: legen das Ende eines Ablaufes fest
      • Verzweigungsknoten: ermöglichen die Verzweigung von Abläufen
      • Zusammenführungsknoten: ermöglichen die Zusammenführung von Abläufen
    • Datenknoten sind Hilfsknoten, die als ein- oder ausgehende Parameter einer Aktion verwendet werden können
    • Kontroll- und Datenflüsse legen Abläufe zwischen Vorgänger- und Nachfolger-Knoten fest

    image

    - + \ No newline at end of file diff --git a/documentation/uml/class-diagrams/index.html b/documentation/uml/class-diagrams/index.html index 72cab40a23..33250ba58d 100644 --- a/documentation/uml/class-diagrams/index.html +++ b/documentation/uml/class-diagrams/index.html @@ -4,7 +4,7 @@ Klassendiagramme | Programmieren mit Java - + @@ -13,7 +13,7 @@ den Attributen, den Methoden und weiteren Klassen-Bestandteilen enthalten.

    image

    Darstellung von Klassen

    Klassen werden im Klassendiagramm als Rechteck mit verschiedenen Bereichen (Klassenname, Attribute, Methoden und weitere Klassen-Bestandteile) dargestellt:

    • Der Klassenname wird zentriert, fett gedruckt und mit einem Großbuchstaben beginnend dargestellt
    • Attribute werden nach dem Muster [Sichtbarkeit] [Attributname]: [Datentyp] = [Anfangswert] dargestellt
    • Methoden nach dem Muster [Sichtbarkeit] [Methoden-Signatur]: [Datentyp des Rückgabewertes] dargestellt
    • Statische Attribute und Methoden werden durch Unterstriche kenntlich gemacht
    • Durch geschweifte Klammern können Attribute, Methoden und Klassen um zusätzliche Merkmale ergänzt werden
    • Die Sichtbarkeit von Attributen und Methoden wird durch (farbige) Symbole dargestellt:
      • Die Sichtbarkeit public wird durch das Symbol + bzw. die Farbe grün dargestellt
      • Die Sichtbarkeit protected wird durch das Symbol # bzw. die Farbe gelb dargestellt
      • Die Sichtbarkeit packaged wird durch das Symbol ~ bzw. die Farbe blau dargestellt
      • Die Sichtbarkeit private wird durch das Symbol - bzw. die Farbe rot dargestellt

    image

    Darstellung von generischen Klassen

    Die formalen Typparameter einer generischen Klassen werden in einem zusätzlichen Rechteck dargestellt.

    image

    Darstellung von Datenklassen

    Datenklassen werden im Klassendiagramm durch den Stereotypen record kenntlich gemacht. Dieser impliziert, dass die Datenklasse einen entsprechenden Konstruktor, Getter zu allen Attributen sowie entsprechende Implementierungen für die Object-Methoden besitzt.

    image

    Darstellung von Schnittstellen

    Schnittstellen werden im Klassendiagramm durch den Stereotypen interface kenntlich gemacht. Dieser impliziert, dass alle Methoden der Schnittstelle abstrakt sind.

    image

    Darstellung von Aufzählungen

    Aufzählungen werden im Klassendiagramm durch den Stereotypen enumeration kenntlich gemacht. Die Aufzählungskonstanten werden in einem zusätzlichen Bereich aufgeführt. Der Stereotyp impliziert, dass die Aufzählung einen privaten Konstruktor sowie ggbfs. passende Setter und Getter besitzt.

    image

    Darstellung von lokalen Klassen

    Lokale Klassen werden mit einem Kreuz hin zur Top-Level-Klasse kenntlich gemacht.

    image

    Darstellung von Ausnahmen

    Ausnahmen werden im Klassendiagramm durch die Stereotypen exception kenntlich gemacht. Die Beziehung zwischen einer Ausnahme und der auslösenden Klasse wird als gestrichelte Linie sowie einem offenen Pfeil hin zur Ausnhame dargestellt.

    image

    Darstellung von Assoziationen

    Assoziationen stellen allgemeine Relationen zwischen zwei Klassen dar, bei der eine Klasse eine andere Klasse verwendet. Assoziationen können in eine Richtung (unidirektional) und in beide Richtungen (bidirektional) vorliegen.

    Aggregationen und Kompositionen stellen spezielle Formen von Assoziationen dar, bei denen ein Objekt der einen Klasse Teil einer anderen Klasse ist. Im Gegensatz zu Aggregationen hängen bei Kompositionen die Teile von der Existenz des Ganzen ab. Aggregationen werden daher auch als ist-Teil-von-Relationen, Kompositionen als existenzabhängige ist-Teil-von-Relationen bezeichnet.

    image

    Assoziationen werden mit einem offenen Pfeil hin zur verwendeten Klasse dargestellt, Aggregationen mit einer nicht ausgefüllten Raute hin zur besitzenden Klasse und Kompositionen mit einer ausgefüllten Raute hin zur besitzenden Klasse.

    image

    Hinweis

    Assoziationen können gerichtet und ungerichtet dargestellt werden.

    Darstellung von Vererbungs-und Realisierungs-Beziehungen

    Vererbungs-Beziehungen werden mit einem geschlossenen Pfeil hin zur Oberklasse sowie einer durchgezogenen Linie dargestellt, Realisierungs-Beziehungen mit einem geschlossenen Pfeil hin zur Schnittstelle sowie einer gestrichelten Linie.

    image

    Darstellung von Multiplizitäten

    Die Multiplizität einer Beziehung legt fest, mit wie vielen Objekten der gegenüberliegenden Klasse ein Objekt in Beziehung stehen kann. Die Multiplizität wird als Intervall aus nicht-negativen ganzen Zahlen dargestellt und wird in der Form [untere Schranke]..[obere Schranke] angegeben. Besitzen beide Schranken den gleichen Wert, muss nur eine der beiden Schranken angegeben werden. Eine nach oben unbeschränkte Schranke wird mit * angegeben.

    - + \ No newline at end of file diff --git a/documentation/uml/index.html b/documentation/uml/index.html index f76fbce16d..f054c6f41a 100644 --- a/documentation/uml/index.html +++ b/documentation/uml/index.html @@ -4,14 +4,14 @@ Darstellung von Klassen und Programmabläufen | Programmieren mit Java - + - + \ No newline at end of file diff --git a/documentation/unit-tests/index.html b/documentation/unit-tests/index.html index 3da185312e..2bd60ecb76 100644 --- a/documentation/unit-tests/index.html +++ b/documentation/unit-tests/index.html @@ -4,13 +4,13 @@ Komponententests (Unit Tests) | Programmieren mit Java - +

    Komponententests (Unit Tests)

    Komponententests (Unit Tests) werden zum Testen einzelner, abgeschlossener Softwarebausteine verwendete. JUnit ist ein weit verbreitetes Framework zur Erstellung von Komponententests bzw. zum automatisierten Testen von Klassen und Methoden in Java. Die aktuelle Version JUnit 5 stellt eine Kombination verschiedener Module der Projekte JUnit Platform, JUnit Jupiter sowie JUnit Vintage dar.

    Unter einem Framework versteht man ein Programmiergerüst, welches die Architektur für die Anwendung vorgibt und den Kontrollfluss der Anwendung steuert. Die Arbeitsweise von Frameworks wird als Inversion of Control bezeichnet: Die Funktionen einer Anwendung werden beim Framework registriert, welches die Funktionen zu einem späteren Zeitpunkt aufruft, d.h. die Steuerung des Kontrollfluss obliegt nicht der Anwendung, sondern dem Framework.

    Hinweis

    Die Umkehr der Steuerung kann auch als Anwendung des Hollywood-Prinzips (Don´t call us, we´ll call you) verstanden werden.

    Implementieren einer Testklasse

    JUnit-Testklassen werden mit Hilfe entsprechender Annotationen implementiert:

    • Die Annotationen @Test und @ParameterizedTest definieren einfache bzw. parametrisierte Testmethoden
    • Die Annotationen @BeforeAll und @AfterAll definieren statische Methoden, die aufgerufen werden, wenn die Klasse für den Test initialisiert wird bzw. wenn alle Tests abgeschlossen sind
    • Die Annotationen @BeforeEach und @AfterEach definieren Methoden, die vor bzw. nach jeder Testmethode aufgerufen werden
    • Die Annotation @Disabled bewirkt, dass eine Testmethode beim Testen nicht ausgeführt wird
    • Mit Hilfe der Annotation @DisplayName kann einer Testklasse bzw. einer Testmethode ein Anzeigename zugewiesen werden

    Zusicherungen (Assertions)

    Die Klasse Assertions stellt verschiedene Methoden bereit, die immer dann eine Ausnahme vom Typ AssertionError auslösen, wenn das Ergebnis eines Methodenaufrufs nicht wie erwartet ausgefallen ist. Eine Ausnahme vom Typ AssertionError führt dazu, dass der Test als nicht erfolgreich gewertet wird.

    Assert-MethodeBedeutung
    void assertTrue(condition: boolean)Prüft, ob eine Bedingung erfüllt ist
    void assertFalse(condition: boolean)Prüft, ob eine Bedingung nicht erfüllt ist
    void assertNull(actual: Object)Prüft, ob etwas null ist
    void assertNotNull(actual: Object)Prüft, ob etwas nicht null ist
    void assertSame(expected: Object, actual: Object)Prüft, ob zwei Objekte identisch sind
    void assertNotSame(expected: Object, actual: Object)Prüft, ob zwei Objekte nicht identisch sind
    void assertEquals(expected: Object, actual: Object)Prüft, ob zwei Objekte gleich sind
    void assertNotEquals(expected: Object, actual: Object)Prüft, ob zwei Objekte nicht gleich sind
    T assertThrows(expectedType: Class<T>, executable: Executable)Prüft, ob eine Ausnahme ausgelöst wird

    Beispiel

    Die Klasse Calculator stellt mehrere Methoden bereit, die getestet werden sollen.

    Calculator.java
    public class Calculator {

    public Calculator() {}

    public int abs(int a) {
    return a >= 0 ? a : a * -1;
    }

    public int divide(int a, int b) {
    return a / b;
    }

    public int multiply(int a, int b) {
    return a * b;
    }

    }

    Die statische Methode setUp() der Testklasse CalculatorTest stellt sicher, dass vor der Ausführung der Testmethoden ein Taschenrechner-Objekt erzeugt wird. In den Testmethoden werden verschiedene Testfälle wie z.B. die Division durch Null getestet.

    MainClass.java
    public class CalculatorTest {

    private static Calculator calculator;

    @BeforeAll
    static void setUp() {
    calculator = new Calculator();
    }

    @Test
    @DisplayName("Multiplication with Zero")
    void multiply_withZero_Zero() {
    assertEquals(0, calculator.multiply(0, 5));
    assertEquals(0, calculator.multiply(5, 0));
    }

    @ParameterizedTest
    @DisplayName("Absolute Values of positive and negative Values")
    @ValueSource(ints = {-1, 0, 1})
    void abs_positiveAndNegativeValues_AbsoluteValues(int a) {
    assertTrue(calculator.abs(a) >= 0);
    }

    @Test
    @DisplayName("Division by Zero")
    void divide_byZero_ArithmeticException() {
    assertThrows(ArithmeticException.class, () -> calculator.divide(5, 0));
    }

    }
    - + \ No newline at end of file diff --git a/exercises/abstract-and-final/abstract-and-final01/index.html b/exercises/abstract-and-final/abstract-and-final01/index.html index 858b7ffd8f..e49d8afa02 100644 --- a/exercises/abstract-and-final/abstract-and-final01/index.html +++ b/exercises/abstract-and-final/abstract-and-final01/index.html @@ -4,7 +4,7 @@ AbstractAndFinal01 | Programmieren mit Java - + @@ -12,7 +12,7 @@
    - + \ No newline at end of file diff --git a/exercises/abstract-and-final/index.html b/exercises/abstract-and-final/index.html index 7ab10f6428..2f3a22adb8 100644 --- a/exercises/abstract-and-final/index.html +++ b/exercises/abstract-and-final/index.html @@ -4,13 +4,13 @@ Abstrakte und finale Klassen und Methoden | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/arrays/arrays01/index.html b/exercises/arrays/arrays01/index.html index 3763107fd4..f3e0999ecb 100644 --- a/exercises/arrays/arrays01/index.html +++ b/exercises/arrays/arrays01/index.html @@ -4,7 +4,7 @@ Arrays01 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Arrays01

    Erstelle eine ausführbare Klasse, welche alle Zweierpotenzen von 0 bis 15 berechnet, in einem Feld speichert und anschließend auf dem Bildschirm ausgibt.

    Konsolenausgabe

    Zweierpotenzen:
    1
    2
    4
    8
    16
    32
    64
    128
    ...

    Hinweis

    Die statische Methode double pow(a: double, b: double) der Klasse Math gibt den Potenzwert zur eingehenden Basis und dem eingehenden Exponenten zurück.

    git switch exercises/arrays/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/arrays/arrays02/index.html b/exercises/arrays/arrays02/index.html index 9949cc1be7..7ce041f39e 100644 --- a/exercises/arrays/arrays02/index.html +++ b/exercises/arrays/arrays02/index.html @@ -4,7 +4,7 @@ Arrays02 | Programmieren mit Java - + @@ -12,7 +12,7 @@
    - + \ No newline at end of file diff --git a/exercises/arrays/arrays03/index.html b/exercises/arrays/arrays03/index.html index 4884c435ba..5de87719d2 100644 --- a/exercises/arrays/arrays03/index.html +++ b/exercises/arrays/arrays03/index.html @@ -4,7 +4,7 @@ Arrays03 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Arrays03

    Erstelle eine ausführbare Klasse zum Berechnen von ISBN-Prüfziffern.

    Konsolenausgabe

    Gib bitte eine ISBN ohne Prüfziffer ein: 978376572781
    Ergebnis: Die Prüfziffer lautet 8

    Formel

    z13 = (10 - ((z1 + z3 + z5 + z7 + z9 + z11 + 3*(z2 + z4 + z6 + z8 + z10 + z12))mod10))mod10

    Hinweise

    • Die Methode char charAt(index: int) der Klasse String gibt das Zeichen mit dem Index der eingehenden Zahl zurück
    • Die statische Methode int getNumericValue(ch: char) der Klasse Character gibt den ganzzahligen Wert des eingehenden Zeichens zurück
    • Eine ISBN besteht aus 13 Ziffern (die 13. Ziffer stellt die Prüfziffer dar)
    git switch exercises/arrays/03
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/arrays/arrays04/index.html b/exercises/arrays/arrays04/index.html index f4725024dc..8b11cb8ad4 100644 --- a/exercises/arrays/arrays04/index.html +++ b/exercises/arrays/arrays04/index.html @@ -4,14 +4,14 @@ Arrays04 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/arrays/arrays05/index.html b/exercises/arrays/arrays05/index.html index 63e187812d..c4764de1b8 100644 --- a/exercises/arrays/arrays05/index.html +++ b/exercises/arrays/arrays05/index.html @@ -4,14 +4,14 @@ Arrays05 | Programmieren mit Java - +

    Arrays05

    Erstelle eine ausführbare Klasse, welche es ermöglicht, Aufgaben hinzuzufügen, zu löschen und auf der Konsole auszugeben.

    Konsolenausgabe

    Optionen
    1: Aufgabe hinzufügen
    2: Aufgabe löschen
    3: Aufgaben ausgeben
    4: Beenden

    Was möchtest Du tun?: 1
    Gib bitte die Aufgabenbeschreibung ein: Wäsche waschen
    Was möchtest Du tun?: 1
    Gib bitte die Aufgabenbeschreibung ein: Hausaufgaben machen
    Was möchtest Du tun?: 3

    Aufgaben
    0: Wäsche waschen
    1: Hausaufgaben machen

    Was möchtest Du tun?: 2
    Gib bitte ein, welche Aufgabe gelöscht werden soll: 0
    Was möchtest Du tun?: 3

    Aufgaben
    0: Hausaufgaben machen

    Was möchtest Du tun?: 4
    git switch exercises/arrays/05
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/arrays/arrays06/index.html b/exercises/arrays/arrays06/index.html index 9e3fe3a5e5..4da49daeca 100644 --- a/exercises/arrays/arrays06/index.html +++ b/exercises/arrays/arrays06/index.html @@ -4,14 +4,14 @@ Arrays06 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/arrays/index.html b/exercises/arrays/index.html index 072d3eb296..f482f70a17 100644 --- a/exercises/arrays/index.html +++ b/exercises/arrays/index.html @@ -4,13 +4,13 @@ Felder (Arrays) | Programmieren mit Java - +

    Felder (Arrays)

    Übungsaufgaben

    Übungsaufgaben von tutego.de

    Übungsaufgaben der Uni Koblenz-Landau

    • Übungsaufgabe E1
    • Übungsaufgabe E2
    • Übungsaufgabe E3
    • Übungsaufgabe E4
    • Übungsaufgabe E5
    • Übungsaufgabe E6
    • Übungsaufgabe E7
    • Übungsaufgabe E8
    • Übungsaufgabe E9

    Übungsaufgaben der Technischen Hochschule Ulm

    - + \ No newline at end of file diff --git a/exercises/class-structure/class-structure01/index.html b/exercises/class-structure/class-structure01/index.html index 35066d1156..dd346cceec 100644 --- a/exercises/class-structure/class-structure01/index.html +++ b/exercises/class-structure/class-structure01/index.html @@ -4,13 +4,13 @@ ClassStructure01 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/class-structure/index.html b/exercises/class-structure/index.html index a7e1d7ea9e..a99a1f3b36 100644 --- a/exercises/class-structure/index.html +++ b/exercises/class-structure/index.html @@ -4,13 +4,13 @@ Aufbau einer Java-Klasse | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/comparators/comparators01/index.html b/exercises/comparators/comparators01/index.html index 4b3aaaf680..8d19c4cfac 100644 --- a/exercises/comparators/comparators01/index.html +++ b/exercises/comparators/comparators01/index.html @@ -4,7 +4,7 @@ Comparators01 | Programmieren mit Java - + @@ -17,7 +17,7 @@ größer als bzw. gleich die der eingehenden Koordinate, soll der Wert 1 bzw. -1 bzw. 0 zurückgegeben werden

    Hinweis

    Die statische Methode double hypot(x: double, y: double) der Klasse Math berechnet die Hypotenuse zum eingehenden X- und Y-Wert.

    git switch exercises/comparators/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/comparators/comparators02/index.html b/exercises/comparators/comparators02/index.html index 08a11ee325..eb621c452a 100644 --- a/exercises/comparators/comparators02/index.html +++ b/exercises/comparators/comparators02/index.html @@ -4,7 +4,7 @@ Comparators02 | Programmieren mit Java - + @@ -17,7 +17,7 @@ Distanz der ersten Koordinate zum Nullpunkt kleiner als bzw. größer als bzw. gleich die der zweiten Koordinate, soll der Wert -1 bzw. 1 bzw. 0 zurückgegeben werden.

    git switch exercises/comparators/02
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/comparators/index.html b/exercises/comparators/index.html index d116e87fd9..eaaf537b88 100644 --- a/exercises/comparators/index.html +++ b/exercises/comparators/index.html @@ -4,13 +4,13 @@ Komparatoren | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/console-applications/console-applications01/index.html b/exercises/console-applications/console-applications01/index.html index 5afd659cd0..0bef7b3c24 100644 --- a/exercises/console-applications/console-applications01/index.html +++ b/exercises/console-applications/console-applications01/index.html @@ -4,14 +4,14 @@ ConsoleApplications01 | Programmieren mit Java - +

    ConsoleApplications01

    Erstelle eine ausführbare Klasse, welche zwei Ganzzahlen von der Konsole einliest, addiert und das Ergebnis auf der Konsole ausgibt.

    Konsolenausgabe

    Gib bitte eine ganze Zahl ein: 4
    Gib bitte eine weitere ganze Zahl ein: 5
    Ergebnis: 4 + 5 = 9
    git switch exercises/console-applications/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/console-applications/console-applications02/index.html b/exercises/console-applications/console-applications02/index.html index 4e3e90435b..ea5620fc29 100644 --- a/exercises/console-applications/console-applications02/index.html +++ b/exercises/console-applications/console-applications02/index.html @@ -4,7 +4,7 @@ ConsoleApplications02 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    ConsoleApplications02

    Erstelle eine ausführbare Klasse, welche zwei Ganzzahlen von der Konsole einliest, den prozentualen Anteil der ersten von der zweiten Ganzzahl berechnet und das Ergebnis auf der Konsole ausgibt.

    Konsolenausgabe

    Gib bitte eine ganze Zahl ein: 5
    Gib bitte eine weitere ganze Zahl ein: 50
    Eregbnis: 5 von 50 sind 10,00%
    git switch exercises/console-applications/02
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/console-applications/index.html b/exercises/console-applications/index.html index 992248b3c7..664560c79c 100644 --- a/exercises/console-applications/index.html +++ b/exercises/console-applications/index.html @@ -4,13 +4,13 @@ Konsolenanwendungen | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/control-structures/cases01/index.html b/exercises/control-structures/cases01/index.html index eabe7d950d..4a10fd2c3e 100644 --- a/exercises/control-structures/cases01/index.html +++ b/exercises/control-structures/cases01/index.html @@ -4,14 +4,14 @@ Cases01 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/control-structures/cases02/index.html b/exercises/control-structures/cases02/index.html index 350f156cc0..bd21e0b6fe 100644 --- a/exercises/control-structures/cases02/index.html +++ b/exercises/control-structures/cases02/index.html @@ -4,13 +4,13 @@ Cases02 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/control-structures/cases03/index.html b/exercises/control-structures/cases03/index.html index 33b285f7cb..d4b8e9bb20 100644 --- a/exercises/control-structures/cases03/index.html +++ b/exercises/control-structures/cases03/index.html @@ -4,7 +4,7 @@ Cases03 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Cases03

    Erstelle eine ausführbare Klasse, welche den Vornamen, den Nachnamen, das Alter sowie das Geschlecht einer Person einliest und je nach Fall eine andere Begrüßungsformel anzeigt.

    Regelwerk

    • "Hallo Herr Nachname" für Männer ab 18
    • "Hallo Frau Nachname" für Frauen ab 18
    • "Hallo Vorname" für Kinder, Jugendliche unter 18 und Diverse

    Konsolenausgabe

    Gib bitte den Vornamen ein: Peter
    Gib bitte den Nachnamen ein: Müller
    Gib bitte das Alter ein: 60
    Gib bitte das Geschlecht ein (m, w, d): m
    Hallo Herr Müller
    git switch exercises/cases/03
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/control-structures/cases04/index.html b/exercises/control-structures/cases04/index.html index 22acd561d7..5c13364b1d 100644 --- a/exercises/control-structures/cases04/index.html +++ b/exercises/control-structures/cases04/index.html @@ -4,7 +4,7 @@ Cases04 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Cases04

    Erstelle eine ausführbare Klasse, welche es zwei Spielern ermöglicht, eine Zufallszahl zwischen 1 und 100 zu erraten. Der Spieler, der mit seinem Tipp näher an der Zufallszahl liegt, gewinnt das Spiel.

    Konsolenausgabe

    Spieler 1, gib bitte Deinen Tipp ein: 34
    Spieler 2, gib bitte Deinen Tipp ein: 60
    Zufallszahl: 39, Spieler 1 gewinnt

    Hinweise

    • Die Methode int nextInt(bound: int) der Klasse Random gibt eine Zufallszahl zwischen 0 (inklusive) und der eingehenden Zahl (exklusive) zurück
    • Die statische Methode int abs(a: int) der Klasse Math gibt den Betrag der eingehenden Zahl zurück
    git switch exercises/cases/04
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/control-structures/cases05/index.html b/exercises/control-structures/cases05/index.html index b46459ace0..3cd48a9c3e 100644 --- a/exercises/control-structures/cases05/index.html +++ b/exercises/control-structures/cases05/index.html @@ -4,13 +4,13 @@ Cases05 | Programmieren mit Java - +

    Cases05

    Welche Ausgabe erwartest Du nach Ablauf des abgebildeten Codings?

    Coding

    int a = 5;
    int b = 5;
    boolean c = true;
    boolean d = true;
    boolean e;
    int f = 5;
    int g = 3;
    int h = 2;
    int i = 4;
    int j = 0;

    e = c && (a > 2 ? (b == (a = a * 2)) : d);
    j += ((h < ((f - g == 3) ? 3 : 2)) && (i < 5)) ? 1 : 2;

    System.out.println("a: " + a);
    System.out.println("b: " + b);
    System.out.println("c: " + c);
    System.out.println("d: " + d);
    System.out.println("e: " + e);
    System.out.println("f: " + f);
    System.out.println("g: " + g);
    System.out.println("h: " + h);
    System.out.println("i: " + i);
    System.out.println("j: " + j);

    Lösung

    a: 10
    - + \ No newline at end of file diff --git a/exercises/control-structures/cases06/index.html b/exercises/control-structures/cases06/index.html index 76d865be59..934116588a 100644 --- a/exercises/control-structures/cases06/index.html +++ b/exercises/control-structures/cases06/index.html @@ -4,14 +4,14 @@ Cases06 | Programmieren mit Java - +

    Cases06

    Erstelle eine ausführbare Klasse, welche je nach eingegebenem Nachnamen und Geschlecht eine andere Begrüßungsformel angezeigt.

    Regelwerk

    • "Hallo Herr Nachname" für Männer
    • "Hallo Frau Nachname" für Frauen
    • "Hallo Nachname" für Diverse

    Konsolenausgabe

    Gib bitte den Nachnamen ein: Schmidt
    Gib bitte das Geschlecht ein (m, w, d): m
    Hallo Herr Schmidt

    Hinweis

    Verwende für die Lösung eine switch-case-Verzweigung.

    git switch exercises/cases/06
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/control-structures/index.html b/exercises/control-structures/index.html index b50b2fcd48..d80471593c 100644 --- a/exercises/control-structures/index.html +++ b/exercises/control-structures/index.html @@ -4,13 +4,13 @@ Kontrollstrukturen | Programmieren mit Java - +

    Kontrollstrukturen

    Übungsaufgaben

    Übungsaufgaben von tutego.de

    Übungsaufgaben der Uni Koblenz-Landau

    • Übungsaufgabe B1
    • Übungsaufgabe B2
    • Übungsaufgabe B3
    • Übungsaufgabe B4
    • Übungsaufgabe B5
    • Übungsaufgabe C1
    • Übungsaufgabe C2
    • Übungsaufgabe C3
    • Übungsaufgabe C4
    • Übungsaufgabe C5

    Übungsaufgaben der Technischen Hochschule Ulm

    - + \ No newline at end of file diff --git a/exercises/control-structures/loops01/index.html b/exercises/control-structures/loops01/index.html index 60c45867eb..5b26d52ad5 100644 --- a/exercises/control-structures/loops01/index.html +++ b/exercises/control-structures/loops01/index.html @@ -4,13 +4,13 @@ Loops01 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/control-structures/loops02/index.html b/exercises/control-structures/loops02/index.html index 28ecd9bcad..3221a37cb4 100644 --- a/exercises/control-structures/loops02/index.html +++ b/exercises/control-structures/loops02/index.html @@ -4,14 +4,14 @@ Loops02 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/control-structures/loops03/index.html b/exercises/control-structures/loops03/index.html index d26287a822..fe59806b4c 100644 --- a/exercises/control-structures/loops03/index.html +++ b/exercises/control-structures/loops03/index.html @@ -4,7 +4,7 @@ Loops03 | Programmieren mit Java - + @@ -13,7 +13,7 @@ Häufigkeit eines bestimmten Zeichens analysiert. Das Programm soll die absolute und relative Häufigkeit in Bezug auf die Gesamtlänge der Zeichenkette ausgeben.

    Konsolenausgabe

    Gib bitte eine Zeichenkette ein: Hallo Welt
    Gib bitte das zu analysierende Zeichen ein: l
    Absoluter Anteil: 3
    Prozentualer Anteil: 30,00%

    Hinweis

    Die Methode char charAt(index: int) der Klasse String gibt das Zeichen mit dem Index der eingehenden Zahl zurück.

    git switch exercises/loops/03
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/control-structures/loops04/index.html b/exercises/control-structures/loops04/index.html index aff67b9c47..8c5a60898e 100644 --- a/exercises/control-structures/loops04/index.html +++ b/exercises/control-structures/loops04/index.html @@ -4,7 +4,7 @@ Loops04 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Loops04

    Erstelle eine ausführbare Klasse, welche zwei Zeichenketten unter Missachtung der Groß- und Kleinschreibung zeichenweise auf Gleichheit überprüft.

    Konsolenausgabe

    Gib bitte die erste Zeichenkette ein: Hallo Welt
    Gib bitte die zweite Zeichenkette ein: HALLO WELT
    Ergebnis: Die eingegebenen Zeichenketten sind identisch

    Hinweis

    Die statische Methode char toUpperCase(ch: char) der Klasse Character gibt den Großbuchstaben des eingehenden Zeichens zurück.

    git switch exercises/loops/04
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/control-structures/loops05/index.html b/exercises/control-structures/loops05/index.html index a9c21e403b..e401f484b9 100644 --- a/exercises/control-structures/loops05/index.html +++ b/exercises/control-structures/loops05/index.html @@ -4,7 +4,7 @@ Loops05 | Programmieren mit Java - + @@ -13,7 +13,7 @@ Zufallszahl zwischen 1 und 100 zu erraten. Dazu soll er solange Zahlen eingeben, bis er die gesuchte Zahl erraten hat oder das Spiel freiwillig beendet.

    Konsolenausgabe

    Gib bitte Deinen Tipp ein: 23
    Leider falsch, die gesuchte Zahl ist größer
    Möchtest Du nochmals raten (true, false)?: true
    Gib bitte Deinen Tipp ein: 55
    Leider falsch, die gesuchte Zahl ist kleiner
    Möchtest Du nochmals raten (true, false)?: true
    Gib bitte Deinen Tipp eingeben: 47
    Richtig. Du hast 3 Versuche benötigt
    git switch exercises/loops/05
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/control-structures/loops06/index.html b/exercises/control-structures/loops06/index.html index ed3e4e8fdc..0051eaacee 100644 --- a/exercises/control-structures/loops06/index.html +++ b/exercises/control-structures/loops06/index.html @@ -4,7 +4,7 @@ Loops06 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Loops06

    Erstelle eine ausführbare Klasse, welche anhand von Startkapital (K) und Prozentsatz (p) den Jahreszins (Z) berechnet. Die Berechnung des Jahreszinses soll dabei in eine statische Methode ausgelagert werden.

    Konsolenausgabe

    Gib bitte das Startkapital ein (in €): 10000
    Gib bitte den Prozentsatz ein: 3,3
    Ergebnis: Der Jahreszins beträgt 330€
    Willst Du einen weiteren Jahreszins berechnen (true, false)?: false
    git switch exercises/loops/06
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/control-structures/loops07/index.html b/exercises/control-structures/loops07/index.html index 235178114c..4d0def4a12 100644 --- a/exercises/control-structures/loops07/index.html +++ b/exercises/control-structures/loops07/index.html @@ -4,13 +4,13 @@ Loops07 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/control-structures/loops08/index.html b/exercises/control-structures/loops08/index.html index 16d6dc9fef..b5a39f83eb 100644 --- a/exercises/control-structures/loops08/index.html +++ b/exercises/control-structures/loops08/index.html @@ -4,13 +4,13 @@ Loops08 | Programmieren mit Java - +

    Loops08

    Erstelle eine ausführbare Klasse, welche anhand von Startkapital (K0), Prozentsatz (p) und Anzahl Jahre (n) das Endkapital (Kn) berechnet.

    Konsolenausgabe

    Gib bitte das Startkapital ein (in Euro): 10000
    Gib bitte den Prozentsatz ein: 3,3
    Gib bitte die Anzahl Jahre ein: 5
    Ergebnis: Das Endkapital beträgt 11762 Euro
    Willst Du eine weitere Zinsrechnung durchführen (true, false)?: false

    Hinweis

    Die Formel für die Zinseszins-Berechnung findest Du unter anderem hier.

    - + \ No newline at end of file diff --git a/exercises/data-objects/data-objects01/index.html b/exercises/data-objects/data-objects01/index.html index 73ef342a67..2701e514ce 100644 --- a/exercises/data-objects/data-objects01/index.html +++ b/exercises/data-objects/data-objects01/index.html @@ -4,13 +4,13 @@ DataObjects01 | Programmieren mit Java - +

    DataObjects01

    Erstelle eine ausführbare Klasse, welche die drei Variablen name (Datentyp String), age (Datentyp int) und gender (Datentyp char) deklariert, initialisiert und über die Konsole ausgibt.

    Konsolenausgabe

    Name: Hans
    Alter: 25
    Geschlecht: m
    git switch exercises/data-objects/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/data-objects/data-objects02/index.html b/exercises/data-objects/data-objects02/index.html index 04c0c4e6a5..537b8a2e19 100644 --- a/exercises/data-objects/data-objects02/index.html +++ b/exercises/data-objects/data-objects02/index.html @@ -4,13 +4,13 @@ DataObjects02 | Programmieren mit Java - +

    DataObjects02

    Welche Ausgabe erwartest Du nach Ablauf des abgebildeten Codings?

    Coding

    int a = 101;
    int b = 0b101;
    int c = 0x101;
    int d = 0xAFFE;
    int e = 128;
    byte f = (byte) e;
    double g = 9.87654321;
    int h = (int) g;

    System.out.println("a: " + a);
    System.out.println("b: " + b);
    System.out.println("c: " + c);
    System.out.println("d: " + d);
    System.out.println("f: " + f);
    System.out.println("h: " + h);
    a: 101
    - + \ No newline at end of file diff --git a/exercises/data-objects/index.html b/exercises/data-objects/index.html index a6230288f0..dda0cac41a 100644 --- a/exercises/data-objects/index.html +++ b/exercises/data-objects/index.html @@ -4,13 +4,13 @@ Datenobjekte | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/enumerations/enumerations01/index.html b/exercises/enumerations/enumerations01/index.html index d9a9d25290..91d81fd319 100644 --- a/exercises/enumerations/enumerations01/index.html +++ b/exercises/enumerations/enumerations01/index.html @@ -4,7 +4,7 @@ Enumerations01 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    Enumerations01

    • Erstelle die Aufzählung Engine mit Hilfe der abgebildeten Informationen
    • Passe die Klasse Vehicle aus Übungsaufgabe OO07 mit Hilfe der abgebildeten Informationen an
    • Passe die ausführbare Klasse aus Übungsaufgabe OO07 so an, dass sie fehlerfrei ausgeführt werden kann

    Aufzählungskonstanten der Klasse Engine

    KonstanteWerte
    DIESELDiesel
    PETROLBenzin
    GASAutogas
    ELECTROElektro

    Attribute der Klasse Engine

    AttributDatentypSichtbarkeitLevel
    descriptionStringprivatenicht-statisch

    Methoden der Klasse Engine

    MethodeRückgabewertSichtbarkeitLevelBeschreibung
    Engine(description: String)voidprivatenicht-statischFestlegen der Motorenbeschreibung
    getDescription()Stringpublicnicht-statischRückgabe der Motorenbeschreibung

    Attribute der Klasse Vehicle

    AttributDatentypSichtbarkeitLevel
    makeStringprivatenicht-statisch
    modelStringprivatenicht-statisch
    engineEngineprivatenicht-statisch
    speeddoubleprivatenicht-statisch
    numberOfVehiclesintprivatestatisch

    Methoden der Klasse Vehicle

    MethodeRückgabewertSichtbarkeitLevelBeschreibung
    Vehicle(make: String, model: String, engine: Engine)voidpublicnicht-statischFestlegen des Herstellers, des Modells und des Motors
    getMake()Stringpublicnicht-statischRückgabe des Herstellers
    getModel()Stringpublicnicht-statischRückgabe des Modells
    getEngine()Enginepublicnicht-statischRückgabe des Motors
    getSpeed()doublepublicnicht-statischRückgabe der Geschwindigkeit
    accelerate(value: int)voidpublicnicht-statischErhöhung der Geschwindigkeit um den eingehenden Wert
    brake(value: int)voidpublicnicht-statischReduzierung der Geschwindigkeit um den eingehenden Wert
    print()voidpublicnicht-statischAusgabe: Hersteller Modell (Motorenbeschreibung)
    getNumberOfVehicles()intpublicstatischRückgabe der Anzahl Fahrzeuge
    git switch exercises/enums/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/enumerations/index.html b/exercises/enumerations/index.html index 940dde2792..57fb050c13 100644 --- a/exercises/enumerations/index.html +++ b/exercises/enumerations/index.html @@ -4,13 +4,13 @@ Aufzählungen (Enumerations) | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/exceptions/exceptions01/index.html b/exercises/exceptions/exceptions01/index.html index baa6eef6a7..9fcd0121bb 100644 --- a/exercises/exceptions/exceptions01/index.html +++ b/exercises/exceptions/exceptions01/index.html @@ -4,7 +4,7 @@ Exceptions01 | Programmieren mit Java - + @@ -16,7 +16,7 @@ ausgeführt werden kann

    Klassendiagramm

    image

    Hinweise zur Klasse Vehicle

    • In der Methode void accelerate(value: int) soll bei einem eingehenden Wert kleiner gleich Null die Ausnahme InvalidValueException ausgelöst werden
    • In der Methode void brake(value: int) soll bei einem eingehenden Wert kleiner gleich Null die Ausnahme InvalidValueException ausgelöst werden
    git switch exercises/exceptions/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/exceptions/exceptions02/index.html b/exercises/exceptions/exceptions02/index.html index 4c14874bf0..95c2066750 100644 --- a/exercises/exceptions/exceptions02/index.html +++ b/exercises/exceptions/exceptions02/index.html @@ -4,7 +4,7 @@ Exceptions02 | Programmieren mit Java - + @@ -15,7 +15,7 @@ erhöhen. Bei Überschreiten der Kapazität soll die Ausnahme BarrelOverflowException ausgelöst werden
  • Die Methode void printFluidLevel() soll den Füllstand auf der Konsole ausgeben
  • Konsolenausgabe

    Gib bitte die Kapazität des Fasses ein: 100
    Gib bitte die Menge der hinzuzufügenden Flüssigkeit ein: 30
    Füllstand: 30
    Gib bitte die Menge der hinzuzufügenden Flüssigkeit ein: 50
    Füllstand: 80
    Gib bitte die Menge der hinzuzufügenden Flüssigkeit ein: 40
    Füllstand: 100
    Das war der Tropfen, der das Fass zum Überlaufen gebracht hat
    git switch exercises/exceptions/02
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/exceptions/exceptions03/index.html b/exercises/exceptions/exceptions03/index.html index 6973333874..ddae2f73e5 100644 --- a/exercises/exceptions/exceptions03/index.html +++ b/exercises/exceptions/exceptions03/index.html @@ -4,7 +4,7 @@ Exceptions03 | Programmieren mit Java - + @@ -17,7 +17,7 @@ Mitarbeiter eine Gehaltserhöhung bekommen

    Klassendiagramm

    image

    Hinweis zur Klasse Employee

    In der Methode void setSalary(salary: int) soll bei einer Gehaltserhöhung größer 10% die Ausnahme SalaryIncreaseTooHighException und bei einer Gehaltsverringerung die Ausnahme SalaryDecreaseException ausgelöst werden.

    git switch exercises/exceptions/03
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/exceptions/index.html b/exercises/exceptions/index.html index bc1093e526..cc536c27e3 100644 --- a/exercises/exceptions/index.html +++ b/exercises/exceptions/index.html @@ -4,13 +4,13 @@ Ausnahmen (Exceptions) | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/generics/generics01/index.html b/exercises/generics/generics01/index.html index e0f8ee0c67..04dbc8a7e8 100644 --- a/exercises/generics/generics01/index.html +++ b/exercises/generics/generics01/index.html @@ -4,7 +4,7 @@ Generics01 | Programmieren mit Java - + @@ -14,7 +14,7 @@ Flaschen erzeugt und die Flaschen in die Getränkekiste stellt

    Klassendiagramm

    image

    Hinweis zur Klasse BeerBottle

    Die Methode void chugALug() soll den Text "Ex und Hopp" auf der Konsole ausgeben.

    Hinweise zur Klasse Crate

    • Die Methode void insertBottle(bottle: Bottle, box: int) soll eine Flasche in eine der 6 Getränkefächer einfügen
    • Die Methode Bottle takeBottle(box: int) soll die Flasche des entsprechenden Getränkefachs zurückgeben
    git switch exercises/generics/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/generics/generics02/index.html b/exercises/generics/generics02/index.html index 452f6ff114..80e3ba40a8 100644 --- a/exercises/generics/generics02/index.html +++ b/exercises/generics/generics02/index.html @@ -4,7 +4,7 @@ Generics02 | Programmieren mit Java - + @@ -12,7 +12,7 @@
    - + \ No newline at end of file diff --git a/exercises/generics/generics03/index.html b/exercises/generics/generics03/index.html index f30db92011..e2b07cae5b 100644 --- a/exercises/generics/generics03/index.html +++ b/exercises/generics/generics03/index.html @@ -4,13 +4,13 @@ Generics03 | Programmieren mit Java - +

    Generics03

    • Erstelle die Klassen Pair, Pupil und SchoolClass anhand des abgebildeten Klassendiagramms
    • Erstelle eine ausführbare Klasse, welche eine Schulklasse mit mehreren Schülern erzeugt und die Schülerpaare ausgibt

    Klassendiagramm

    image

    Hinweise zur Klasse SchoolClass

    • Die Methode void addPupil(pupil: Pupil) soll der Schulklasse den eingehenden Schüler hinzufügen
    • Die Methode List<Pair<Pupil>> getPairs() soll aus den Schülern der Schulklasse zufällige Paare bilden und zurückgeben. Bei einer ungeraden Anzahl an Schülern soll der verbleibende Schüler mit dem Wert null gepaart werden

    Konsolenausgabe

    Pair[partA=Pupil[name=Jennifer, gender=w], partB=Pupil[name=Franziska, gender=w]]
    Pair[partA=Pupil[name=Fritz, gender=m], partB=Pupil[name=Lisa, gender=w]]
    Pair[partA=Pupil[name=Max, gender=m], partB=Pupil[name=Hans, gender=m]]
    Pair[partA=Pupil[name=Peter, gender=m], partB=null]
    git switch exercises/generics/03
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/generics/generics04/index.html b/exercises/generics/generics04/index.html index 49bb27b9ac..c820a4e204 100644 --- a/exercises/generics/generics04/index.html +++ b/exercises/generics/generics04/index.html @@ -4,13 +4,13 @@ Generics04 | Programmieren mit Java - +

    Generics04

    • Erstelle die Klassen Club und Tournament anhand des abgebildeten Klassendiagramms
    • Erstelle eine ausführbare Klasse, welche ein Turnier mit mehreren Vereinen erzeugt und die Paarungen ausgibt

    Klassendiagramm

    image

    Hinweise zur Klasse Tournament

    • Die Methode void addClub(club: Club) soll dem Turnier den eingehenden Verein hinzufügen
    • Die Methode List<Pair<Club>> pairs() soll aus den Vereinen des Turniers Paarungen für Hin- und Rückspiele bilden und zurückgeben

    Konsolenausgabe

    Pair[partA=Club[name=SC Freiburg, marketValueInMillions=165], partB=Club[name=Bayern Muenchen, marketValueInMillions=926]]
    Pair[partA=Club[name=SC Freiburg, marketValueInMillions=165], partB=Club[name=Borussia Dortmund, marketValueInMillions=462]]
    Pair[partA=Club[name=Bayern Muenchen, marketValueInMillions=926], partB=Club[name=SC Freiburg, marketValueInMillions=165]]
    Pair[partA=Club[name=Bayern Muenchen, marketValueInMillions=926], partB=Club[name=Borussia Dortmund, marketValueInMillions=462]]
    Pair[partA=Club[name=Borussia Dortmund, marketValueInMillions=462], partB=Club[name=SC Freiburg, marketValueInMillions=165]]
    Pair[partA=Club[name=Borussia Dortmund, marketValueInMillions=462], partB=Club[name=Bayern Muenchen, marketValueInMillions=926]]
    git switch exercises/generics/04
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/generics/index.html b/exercises/generics/index.html index 1aaf3f399c..23c38bd247 100644 --- a/exercises/generics/index.html +++ b/exercises/generics/index.html @@ -4,13 +4,13 @@ Generische Programmierung | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/inner-classes/index.html b/exercises/inner-classes/index.html index f75ad8683f..cb93bf9097 100644 --- a/exercises/inner-classes/index.html +++ b/exercises/inner-classes/index.html @@ -4,13 +4,13 @@ Innere Klassen (Inner Classes) | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/inner-classes/inner-classes01/index.html b/exercises/inner-classes/inner-classes01/index.html index 5e91691a96..fff6c48405 100644 --- a/exercises/inner-classes/inner-classes01/index.html +++ b/exercises/inner-classes/inner-classes01/index.html @@ -4,7 +4,7 @@ InnerClasses01 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    InnerClasses01

    • Erstelle die Klassen House und Room anhand des abgebildeten Klassendiagramms
    • Erstelle eine ausführbare Klasse, welche ein Haus mit mehreren Räumen erzeugt und auf der Konsole ausgibt
    • Die Klasse Room soll hierbei eine Element Klasse sein.

    Klassendiagramm

    image

    Konsolenausgabe

    Wohnzimmer
    Esszimmer
    Schlafzimmer
    Küche
    WC
    git switch exercises/inner-classes/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/inner-classes/inner-classes02/index.html b/exercises/inner-classes/inner-classes02/index.html index da86c2645a..2e0a6f8bde 100644 --- a/exercises/inner-classes/inner-classes02/index.html +++ b/exercises/inner-classes/inner-classes02/index.html @@ -4,7 +4,7 @@ InnerClasses02 | Programmieren mit Java - + @@ -14,7 +14,7 @@ Klassendiagramms an
  • Passe die ausführbare Klasse aus Übungsaufgabe Exceptions03 so an, dass sie fehlerfrei ausgeführt werden kann
  • Die Klasse Emplyee soll hierbei eine Element Klasse sein.
  • Klassendiagramm

    image

    git switch exercises/inner-classes/02
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/inner-classes/inner-classes03/index.html b/exercises/inner-classes/inner-classes03/index.html index 7b044f3663..81d81d2c63 100644 --- a/exercises/inner-classes/inner-classes03/index.html +++ b/exercises/inner-classes/inner-classes03/index.html @@ -4,7 +4,7 @@ InnerClasses03 | Programmieren mit Java - + @@ -12,7 +12,7 @@
    - + \ No newline at end of file diff --git a/exercises/inner-classes/inner-classes04/index.html b/exercises/inner-classes/inner-classes04/index.html index 160fed13ce..4b41488175 100644 --- a/exercises/inner-classes/inner-classes04/index.html +++ b/exercises/inner-classes/inner-classes04/index.html @@ -4,7 +4,7 @@ InnerClasses04 | Programmieren mit Java - + @@ -12,7 +12,7 @@
    - + \ No newline at end of file diff --git a/exercises/inner-classes/inner-classes05/index.html b/exercises/inner-classes/inner-classes05/index.html index f430f5cfa3..f87402a575 100644 --- a/exercises/inner-classes/inner-classes05/index.html +++ b/exercises/inner-classes/inner-classes05/index.html @@ -4,7 +4,7 @@ InnerClasses05 | Programmieren mit Java - + @@ -12,7 +12,7 @@
    - + \ No newline at end of file diff --git a/exercises/interfaces/index.html b/exercises/interfaces/index.html index cc1b96b85c..2468b19a13 100644 --- a/exercises/interfaces/index.html +++ b/exercises/interfaces/index.html @@ -4,13 +4,13 @@ Schnittstellen (Interfaces) | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/interfaces/interfaces01/index.html b/exercises/interfaces/interfaces01/index.html index eea2fd4a16..85c114d82f 100644 --- a/exercises/interfaces/interfaces01/index.html +++ b/exercises/interfaces/interfaces01/index.html @@ -4,7 +4,7 @@ Interfaces01 | Programmieren mit Java - + @@ -17,7 +17,7 @@ erzeugt wird, dass diesem die Autovermietung hinzugefügt wird und dass alle Attribute des Reisebüros ausgegeben werden

    Klassendiagramm

    image

    Hinweise zur Klasse TravelAgency

    • Der Konstruktor soll alle Attribute initialisieren
    • Die Methode void addPartner(partner: Partner) soll dem Reisebüro einen Partner hinzufügen
    • Die Methode void print() soll alle Attribute auf der Konsole ausgeben

    Konsolenausgabe

    Reisebüro Schmidt
    Unsere Partner:
    Fahrzeugvermietung Müller
    Unsere Fahrzeuge:
    Porsche 911 (Elektro, 2 Sitzplätze)
    MAN TGX (Diesel, 20t)
    Opel Zafira Life (Diesel, 7 Sitzplätze)
    git switch exercises/interfaces/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/io-streams/index.html b/exercises/io-streams/index.html index e83e3794c7..635e1362e3 100644 --- a/exercises/io-streams/index.html +++ b/exercises/io-streams/index.html @@ -4,13 +4,13 @@ Datenströme (IO-Streams) | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/io-streams/io-streams01/index.html b/exercises/io-streams/io-streams01/index.html index 86b7bd9c87..f515f2f952 100644 --- a/exercises/io-streams/io-streams01/index.html +++ b/exercises/io-streams/io-streams01/index.html @@ -4,13 +4,13 @@ IOStreams01 | Programmieren mit Java - +

    IOStreams01

    • Erstelle die Klasse Student anhand des abgebildeten Klassendiagramms
    • Erstelle eine ausführbare Klasse, welche entweder mehrere Objekte der Klasse Student erzeugt und diese zeichenbasiert in eine Datei schreibt oder diese aus der Datei ausliest und ausgibt

    Klassendiagramm

    image

    Konsolenausgabe

    Moechtest Du Lesen (1) oder Schreiben (2): 1
    Student[id=8172093, name=Hans Maier, gender=m]
    Student[id=2335409, name=Peter Mueller, gender=m]
    Student[id=5065411, name=Lisa Schmid, gender=w]
    - + \ No newline at end of file diff --git a/exercises/io-streams/io-streams02/index.html b/exercises/io-streams/io-streams02/index.html index cad29ccc96..701a62e406 100644 --- a/exercises/io-streams/io-streams02/index.html +++ b/exercises/io-streams/io-streams02/index.html @@ -4,13 +4,13 @@ IOStreams02 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/java-api/index.html b/exercises/java-api/index.html index cd3baf8249..99187ed26b 100644 --- a/exercises/java-api/index.html +++ b/exercises/java-api/index.html @@ -4,13 +4,13 @@ Die Java API | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/java-api/java-api01/index.html b/exercises/java-api/java-api01/index.html index dddf20027d..0269b32bbb 100644 --- a/exercises/java-api/java-api01/index.html +++ b/exercises/java-api/java-api01/index.html @@ -4,14 +4,14 @@ JavaAPI01 | Programmieren mit Java - +

    JavaAPI01

    Erstelle eine ausführbare Klasse, welche den Sinus von 0.0 bis 1.0 in Zehnerschritten tabellarisch auf der Konsole ausgibt.

    Konsolenausgabe

    x = 0.0, sin(x) = 0.0
    x = 0.1, sin(x) = 0.1
    x = 0.2, sin(x) = 0.2
    x = 0.3, sin(x) = 0.3
    x = 0.4, sin(x) = 0.4
    x = 0.5, sin(x) = 0.5
    x = 0.6, sin(x) = 0.6
    x = 0.7, sin(x) = 0.6
    x = 0.8, sin(x) = 0.7
    x = 0.9, sin(x) = 0.8
    x = 1.0, sin(x) = 0.8
    git switch exercises/java-api/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/java-api/java-api02/index.html b/exercises/java-api/java-api02/index.html index 6cca411b2d..0c39b32513 100644 --- a/exercises/java-api/java-api02/index.html +++ b/exercises/java-api/java-api02/index.html @@ -4,14 +4,14 @@ JavaAPI02 | Programmieren mit Java - +

    JavaAPI02

    Erstelle eine ausführbare Klasse zum Lösen einer quadratischen Gleichung mit Hilfe der Mitternachtsformel.

    Konsolenausgabe

    Gib bitte einen Wert für a ein: 6
    Gib bitte einen Wert für b ein: 8
    Gib bitte einen Wert für c ein: 2
    x1 = -0.3
    x2 = -1.0
    git switch exercises/java-api/02
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/java-api/java-api03/index.html b/exercises/java-api/java-api03/index.html index 015a6651df..b99f15b0c5 100644 --- a/exercises/java-api/java-api03/index.html +++ b/exercises/java-api/java-api03/index.html @@ -4,14 +4,14 @@ JavaAPI03 | Programmieren mit Java - +

    JavaAPI03

    Erstelle eine ausführbare Klasse, welche den Wochentag sowie die Anzahl Tage bis Weihnachten eines eingegebenen Datums ermittelt und ausgibt.

    Konsolenausgabe

    Gib bitte ein Datum ein (dd.mm.yyyy): 04.01.2016
    Wochentag: MONDAY
    Tage bis Weihnachten: 355
    git switch exercises/java-api/03
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/java-api/java-api04/index.html b/exercises/java-api/java-api04/index.html index ced63f72be..b6fd4d7771 100644 --- a/exercises/java-api/java-api04/index.html +++ b/exercises/java-api/java-api04/index.html @@ -4,14 +4,14 @@ JavaAPI04 | Programmieren mit Java - +

    JavaAPI04

    Erstelle eine ausführbare Klasse, welche den vorzeichenfreien Dezimalwert einer eingegebenen negativen short-Zahl (-1 bis -32.768) berechnet und ausgibt.

    Konsolenausgabe

    Gib bitte einen Wert zwischen -1 und -32.768 ein: -2854
    Ergebnis: Der vorzeichenfreie Dezimalwert beträgt 62682
    git switch exercises/java-api/04
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/java-stream-api/index.html b/exercises/java-stream-api/index.html index 4be77295f1..14f9dfecb4 100644 --- a/exercises/java-stream-api/index.html +++ b/exercises/java-stream-api/index.html @@ -4,13 +4,13 @@ Die Java Stream API | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/java-stream-api/java-stream-api01/index.html b/exercises/java-stream-api/java-stream-api01/index.html index 2409a5f78f..f799cbc542 100644 --- a/exercises/java-stream-api/java-stream-api01/index.html +++ b/exercises/java-stream-api/java-stream-api01/index.html @@ -4,13 +4,13 @@ JavaStreamAPI01 | Programmieren mit Java - +

    JavaStreamAPI01

    • Erstelle die Klasse Queries anhand des abgebildeten Klassendiagramms
    • Erstelle eine ausführbare Klasse, welche alle erstellten Abfragen ausführt und die Ergebnisse auf der Konsole ausgibt

    Klassendiagramm

    Hinweis zur Klasse Console

    Konsolen, die aktuell noch verkauft werden, besitzen bei der Lebensspanne den Wert -1 (Stand: 14.06.2023)

    Hinweise zur Klasse Queries

    • Die Methode List<String> getAllCurrentConsoleNames() soll die Namen aller Konsolen, die aktuell noch verkauft werden zurückgeben (Nintendo Switch, PlayStation 4, XBox One)
    • Die Methode List<VideoGameConsole> getAllConsolesSortedByLifespan() soll alle Konsolen absteigend sortiert nach der Lebensspanne zurückgeben (VideoGameConsole[title=Nintendo Wii, maker=NINTENDO, lifespan=13, soldUnits=101.63],...)
    • Die Methode boolean isAnyConsoleWithMoreThan150MillionSoldUnits() soll die Antwort auf die Frage, ob es eine Konsole mit mehr als 150 Millionen verkauften Einheiten gibt, zurückgeben (true)
    • Die Methode boolean isAllConsolesWithMoreThan50MillionSoldUnits() soll die Antwort auf die Frage, ob von allen Konsolen mehr als 50 Millionen Einheiten verkauft wurden, zurückgeben (false)
    • Die Methode long getNumberOfConsolesFromNintendo() soll die Anzahl der Konsolen von Nintendo zurückgeben (8)
    • Die Methode List<String> getSoldUnitsInMillionsPerYearFromAllOutdatedConsoles() soll die Namen aller Konsolen, die nicht mehr verkauft werden sowie die Anzahl verkaufter Einheiten pro Jahr in Millionen zurückgeben (PlayStation 2 (13.225),...)
    • Die Methode OptionalDouble getAverageSoldUnitsInMillionsPerYearFromAllOutdatedConsoles() soll den Durchschnitt verkaufter Einheiten pro Jahr in Millionen aller Konsolen, die nicht mehr verkauft werden zurückgeben (9.900365412365412)
    • Die Methode Map<Maker, List<VideogameConsole>> getAllConsolesByMaker() soll alle Konsolen gruppiert nach den Herstellern zurückgeben (MICROSOFT: [VideoGameConsole[title=XBox 360, maker=MICROSOFT, lifespan=12, soldUnitsInMillions=85.81],...],...)
    • Die Methode Map<Maker, Double> getTotalSoldUnitsInMillionsPerMaker() soll die Anzahl verkaufter Einheiten pro Hersteller in Millionen zurückgeben (MICROSOFT: 137.07,...)
    git switch exercises/stream-api/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/java-stream-api/java-stream-api02/index.html b/exercises/java-stream-api/java-stream-api02/index.html index cde4cd5d8c..5098f49fd4 100644 --- a/exercises/java-stream-api/java-stream-api02/index.html +++ b/exercises/java-stream-api/java-stream-api02/index.html @@ -4,13 +4,13 @@ JavaStreamAPI02 | Programmieren mit Java - +

    JavaStreamAPI02

    • Erstelle die Klassen FootballClub, Position, Footballer und Queries anhand des abgebildeten Klassendiagramms
    • Erstelle eine ausführbare Klasse, welche alle erstellten Abfragen ausführt und die Ergebnisse auf der Konsole ausgibt

    Klassendiagramm

    Hinweise zur Klasse FootballerQueries

    • Mannschaften, die nicht der ewigen Tabelle der Bundesliga vertreten sind, besitzen sowohl für die Position als auch die Punktzahl den Wert -1
    • Die Methode int getTotalOfAllGoalsByMidfielders() soll die Summe aller geschossener Tore von Mittelfeldspielerinnen zurückgeben
    • Die Methode Optional<Footballer> getNameOfVfLWolfsburgFootballerWithMostPlayedGames() soll den Namen der Spielerin vom VfL Wolfsburg mit den meisten Spielen zurückgeben
    • Die Methode List<FootballClub> getNameOfAllFootballClubs() soll die Namen aller Vereine zurückgeben
    • Die Methode boolean isFootballerWithSizeInCmLT170AndNumbreOfGoalsBT0() soll die Antwort auf die Frage, ob es eine Spielerin gibt, die kleiner als 170cm ist und mindestens ein Tor geschossen hat, zurückgeben
    • Die Methode Map<Integer, List<Footballer>> getAllFootballersByBirthyear() soll alle Spielerinnen gruppiert nach ihrem Geburtsjahr zurückgeben
    • Die Methode OptionalDouble getAverageNumberOfPointsFromAllBundesligaFootballClubs() soll die durchschnittliche Punktzahl aller Bundesligamannschaften in der Ewigen Tabelle zurückgeben
    git switch exercises/stream-api/02
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/lambdas/index.html b/exercises/lambdas/index.html index 4a56c12737..ffc86452c8 100644 --- a/exercises/lambdas/index.html +++ b/exercises/lambdas/index.html @@ -4,13 +4,13 @@ Lambdafunktionen | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/lambdas/lambdas01/index.html b/exercises/lambdas/lambdas01/index.html index 2cb2f699d4..823545f164 100644 --- a/exercises/lambdas/lambdas01/index.html +++ b/exercises/lambdas/lambdas01/index.html @@ -4,7 +4,7 @@ Lambdas01 | Programmieren mit Java - + @@ -14,7 +14,7 @@ der Konsole ausgeben (Name und Alter).
  • Verwende die forEach-Methode der ArrayList, um eine Lambdafunktion zu übergeben. Diese soll sich exakt gleich Verhalten wie die zuvor implementierte anonyme Klasse.
    git switch exercises/lambdas/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/lambdas/lambdas02/index.html b/exercises/lambdas/lambdas02/index.html index 8a8236b779..7b1ce88894 100644 --- a/exercises/lambdas/lambdas02/index.html +++ b/exercises/lambdas/lambdas02/index.html @@ -4,7 +4,7 @@ Lambdas02 | Programmieren mit Java - + @@ -30,7 +30,7 @@ der Klasse Exercise.java nur noch die FilteredStudents Klasse und übergebe dem Konstruktor jeweils die richtigen Lambdafunktionen, damit es gleich funktioniert wie davor.

    git switch exercises/lambdas/02
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/lambdas/lambdas03/index.html b/exercises/lambdas/lambdas03/index.html index ca6fce957f..e2952a734b 100644 --- a/exercises/lambdas/lambdas03/index.html +++ b/exercises/lambdas/lambdas03/index.html @@ -4,7 +4,7 @@ Lambdas03 | Programmieren mit Java - + @@ -17,7 +17,7 @@ Schleife um für jeden Studenten die consumer Methode auszuführen. Passe die Klasse Exercise.java so an, das die erwachsenen Studenten UpperCase und die jugendlichen Studenten LowerCase in der Konsole ausgegeben werden.

    git switch exercises/lambdas/03
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/lambdas/lambdas04/index.html b/exercises/lambdas/lambdas04/index.html index 8c869d93bd..a6397cd96d 100644 --- a/exercises/lambdas/lambdas04/index.html +++ b/exercises/lambdas/lambdas04/index.html @@ -4,7 +4,7 @@ Lambdas04 | Programmieren mit Java - + @@ -15,7 +15,7 @@ den Bug zu fixen:

    Prüfe in der Methode forEach vor dem Aufrufen des Consumers ab, ob der Student noch in der Liste sein darf. Verifiziere in Exercise.java, dass Steffen nicht mehr in der Liste mit erwachsenen Studenten ausgegeben wird.

    git switch exercises/lambdas/04
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/maps/index.html b/exercises/maps/index.html index 6019d7095e..544126ab34 100644 --- a/exercises/maps/index.html +++ b/exercises/maps/index.html @@ -4,13 +4,13 @@ Assoziativspeicher (Maps) | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/maps/maps01/index.html b/exercises/maps/maps01/index.html index 0360a87b89..099c3ad9c6 100644 --- a/exercises/maps/maps01/index.html +++ b/exercises/maps/maps01/index.html @@ -4,7 +4,7 @@ Maps01 | Programmieren mit Java - + @@ -15,7 +15,7 @@ auf der Konsole ausgibt

    Klassendiagramm

    image

    Hinweise zur Klasse TelephoneBook

    • Die Methode void addEntry(person: Person, telephoneNumber: TelephoneNumber) soll einen Eintrag im Telefonbuch anlegen
    • Die Methode TelephoneNumber getTelephoneNumberByName(name: String) soll die Telefonnummer zum eingehenden Namen zurückgeben
    git switch exercises/maps/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/maps/maps02/index.html b/exercises/maps/maps02/index.html index fd26beb3f4..15dcf91c22 100644 --- a/exercises/maps/maps02/index.html +++ b/exercises/maps/maps02/index.html @@ -4,14 +4,14 @@ Maps02 | Programmieren mit Java - +

    Maps02

    • Erstelle die Klassen Author, Book, BookCollection und DuplicateKeyException anhand des abgebildeten Klassendiagramms
    • Erstelle eine ausführbare Klasse, welche eine Büchersammlung mit mehreren Autoren und Büchern erzeugt und den fleißigsten Autoren auf der Konsole ausgibt

    Klassendiagramm

    image

    Hinweise zur Klasse BookCollection

    • Die Methode void addAuthor(author: Author) soll den eingehenden Autor der Büchersammlung hinzufügen. Für den Fall, dass der Autor bereits in der Büchersammlung vorhanden ist, soll die Ausnahme DuplicateKeyException ausgelöst werden
    • Die Methode void addBook(author: Author, book: Book) soll das eingehende Buch der Büchersammlung hinzufügen
    • Die Methode Author getMostDiligentAuthor() soll den Autoren mit den meisten Büchern in der Büchersammlung zurückgeben
    • Die Methode Book getBookByTitle(title: String) soll das Buch zum eingehenden Buchtitel zurückgeben
    git switch exercises/maps/02
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/oo/index.html b/exercises/oo/index.html index fa99949179..a7ab572322 100644 --- a/exercises/oo/index.html +++ b/exercises/oo/index.html @@ -4,13 +4,13 @@ Objektorientierte Programmierung | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/oo/oo01/index.html b/exercises/oo/oo01/index.html index 47c6fa2939..55f533d40e 100644 --- a/exercises/oo/oo01/index.html +++ b/exercises/oo/oo01/index.html @@ -4,7 +4,7 @@ OO01 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    OO01

    • Erstelle die Klasse Vehicle mit Hilfe der abgebildeten Informationen
    • Erstelle eine ausführbare Klasse, welches ein Fahrzeug erzeugt, lege Hersteller und Modell fest und lasse das Fahrzeug mehrmals beschleunigen und bremsen

    Attribute der Klasse Vehicle

    AttributDatentypSichtbarkeit
    makeStringprivate
    modelStringprivate
    speeddoubleprivate

    Methoden der Klasse Vehicle

    MethodeRückgabewertSichtbarkeitBeschreibung
    setMake(make: String)voidpublicFestlegen des Herstellers
    setModel(model: String)voidpublicFestlegen des Modells
    getMake()StringpublicRückgabe des Herstellers
    getModel()StringpublicRückgabe des Modells
    getSpeed()doublepublicRückgabe der Geschwindigkeit
    accelerate(value: int)voidpublicErhöhung der Geschwindigkeit um den eingehenden Wert
    brake(value: int)voidpublicReduzierung der Geschwindigkeit um den eingehenden Wert
    print()voidpublicAusgabe: Hersteller Modell

    Konsolenausgabe

    Porsche 911 beschleunigt auf 30km/h
    Porsche 911 beschleunigt auf 60km/h
    Porsche 911 bremst auf 40km/h ab
    Porsche 911 beschleunigt auf 80km/h
    git switch exercises/oo/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/oo/oo02/index.html b/exercises/oo/oo02/index.html index 45e9dcf245..5398f3bf72 100644 --- a/exercises/oo/oo02/index.html +++ b/exercises/oo/oo02/index.html @@ -4,7 +4,7 @@ OO02 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    OO02

    • Passe die Klasse Vehicle aus Übungsaufgabe OO01 mit Hilfe der abgebildeten Informationen an
    • Passe die ausführbare Klasse aus Übungsaufgabe OO01 so an, dass sie fehlerfrei ausgeführt werden kann

    Attribute der Klasse Vehicle

    AttributDatentypSichtbarkeit
    makeStringprivate
    modelStringprivate
    speeddoubleprivate

    Methoden der Klasse Vehicle

    MethodeRückgabewertSichtbarkeitBeschreibung
    Vehicle(make: String, model: String)voidpublicFestlegen des Herstellers und des Modells
    getMake()StringpublicRückgabe des Herstellers
    getModel()StringpublicRückgabe des Modells
    getSpeed()doublepublicRückgabe der Geschwindigkeit
    accelerate(value: int)voidpublicErhöhung der Geschwindigkeit um den eingehenden Wert
    brake(value: int)voidpublicReduzierung der Geschwindigkeit um den eingehenden Wert
    print()voidpublicAusgabe: Hersteller Modell
    git switch exercises/oo/02
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/oo/oo03/index.html b/exercises/oo/oo03/index.html index b4dfa1b82a..bff6bd168e 100644 --- a/exercises/oo/oo03/index.html +++ b/exercises/oo/oo03/index.html @@ -4,14 +4,14 @@ OO03 | Programmieren mit Java - +

    OO03

    • Erstelle die Klasse Dice mit Hilfe der abgebildeten Informationen
    • Erstelle eine ausführbare Klasse, welche einen Würfel erzeugt. Es soll 5-mal hintereinander gewürfelt und das Ergebnis des Wurfes ausgegeben werden

    Attribute der Klasse Dice

    AttributDatentypSichtbarkeit
    idintprivate
    valueintprivate

    Methoden der Klasse Dice

    MethodeRückgabewertSichtbarkeitBeschreibung
    Dice(id: int)voidpublicSetzen der ID
    getId()intpublicRückgabe der ID
    getValueintpublicRückgabe des Wertes
    rollTheDice()voidpublicSetzen des Wertes

    Konsolenausgabe

    ID - Würfelwert
    1 - 1
    1 - 2
    1 - 5
    1 - 3
    1 - 2
    git switch exercises/oo/03
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/oo/oo04/index.html b/exercises/oo/oo04/index.html index 68da738ad5..01697740b8 100644 --- a/exercises/oo/oo04/index.html +++ b/exercises/oo/oo04/index.html @@ -4,7 +4,7 @@ OO04 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    OO04

    Erstelle eine ausführbare Klasse, welche 5 Würfel erzeugt. Es soll einmal mit jedem Würfel gewürfelt und für jeden Würfel das Ergebnis des Wurfes ausgegeben werden.

    Konsolenausgabe

    ID - Würfelwert
    1 - 1
    2 - 1
    3 - 4
    4 - 5
    5 - 2

    Hinweis

    Verwende die Klasse Dice aus Übungsaufgabe OO03.

    git switch exercises/oo/04
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/oo/oo05/index.html b/exercises/oo/oo05/index.html index 86461205ad..274aff0906 100644 --- a/exercises/oo/oo05/index.html +++ b/exercises/oo/oo05/index.html @@ -4,7 +4,7 @@ OO05 | Programmieren mit Java - + @@ -12,7 +12,7 @@

    OO05

    • Erstelle die Klasse DiceCup mit Hilfe der abgebildeten Informationen
    • Erstelle eine ausführbare Klasse, welche einen Würfelbecher sowie 5 Würfel erzeugt. Es soll 5-mal mit dem Würfelbecher gewürfelt und für jeden Wurf das Ergebnis des Wurfes ausgegeben werden.

    Methoden der Klasse DiceCup

    MethodeRückgabewertSichtbarkeitBeschreibung
    rollTheDices(dices: Dice...)voidpublicWürfeln mit allen Würfeln

    Konsolenausgabe

    ID - Würfelwert
    Wurf 1
    1 - 5
    2 - 5
    3 - 2
    4 - 2
    5 - 4
    Wurf 2
    1 - 1
    2 - 3
    3 - 1
    4 - 1
    5 - 4

    Hinweis

    Verwende die Klasse Dice aus Übungsaufgabe OO03.

    git switch exercises/oo/05
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/oo/oo06/index.html b/exercises/oo/oo06/index.html index 64457932bd..18da0a8ed8 100644 --- a/exercises/oo/oo06/index.html +++ b/exercises/oo/oo06/index.html @@ -4,14 +4,14 @@ OO06 | Programmieren mit Java - +

    OO06

    • Erstelle die Klasse Creature mit Hilfe der abgebildeten Informationen
    • Erstelle eine ausführbare Klasse, welche zwei Kreaturen erzeugt, die sich mehrmals abwechselnd gegenseitig angreifen

    Attribute der Klasse Creature

    AttributDatentypSichtbarkeit
    nameStringprivate
    attackvalueintprivate
    hitPointsintprivate

    Methoden der Klasse Creature

    MethodeRückgabewertSichtbarkeitBeschreibung
    Creature(name: String, attackValue: int, hitPoints: int)voidpublicSetzen aller Attribute
    attackCreature(enemy: Creature)voidpublicReduktion der Lebenspunkte der angegriffenen Kreatur um den Angriffswert der angreifenden Kreatur
    getName()StringpublicRückgabe des Namens
    getAttackValue()intpublicRückgabe des Angriffswertes
    getHitPoints()intpublicRückgabe der Lebenspunkte

    Konsolenausgabe

    Zombie greift Vampir an und erzielt 2 Schaden
    Vampir hat noch 4 Lebenspunkte
    Vampir greift Zombie an und erzielt 4 Schaden
    Zombie hat noch 6 Lebenspunkte
    Zombie greift Vampir an und erzielt 2 Schaden
    Vampir hat noch 2 Lebenspunkte
    Vampir greift Zombie an und erzielt 4 Schaden
    Zombie hat noch 2 Lebenspunkte
    git switch exercises/oo/06
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/oo/oo07/index.html b/exercises/oo/oo07/index.html index 4caf04456e..34a4935d79 100644 --- a/exercises/oo/oo07/index.html +++ b/exercises/oo/oo07/index.html @@ -4,7 +4,7 @@ OO07 | Programmieren mit Java - + @@ -14,7 +14,7 @@ Attribut numberOfVehicles inkrementiert wird
  • Passe die ausführbare Klasse aus Übungsaufgabe OO02 so an, dass mehrere Fahrzeuge erstellt werden und dass die Anzahl Fahrzeuge einmal vor und einmal nach den Objekterzeugungen ausgegeben wird
  • Attribute der Klasse Vehicle

    AttributDatentypSichtbarkeitLevel
    makeStringprivatenicht-statisch
    modelStringprivatenicht-statisch
    speeddoubleprivatenicht-statisch
    numberOfVehiclesintprivatestatisch

    Methoden der Klasse Vehicle

    MethodeRückgabewertSichtbarkeitLevelBeschreibung
    Vehicle(make: String, model: String)voidpublicnicht-statischFestlegen des Herstellers und des Modells sowie Inkrementieren der Anzahl Fahrzeuge
    getMake()Stringpublicnicht-statischRückgabe des Herstellers
    getModel()Stringpublicnicht-statischRückgabe des Modells
    getSpeed()doublepublicnicht-statischRückgabe der Geschwindigkeit
    accelerate(value: int)voidpublicnicht-statischErhöhung der Geschwindigkeit um den eingehenden Wert
    brake(value: int)voidpublicnicht-statischReduzierung der Geschwindigkeit um den eingehenden Wert
    print()voidpublicnicht-statischAusgabe: Hersteller Modell
    getNumberOfVehicles()intpublicstatischRückgabe der Anzahl Fahrzeuge

    Konsolenausgabe

    Anzahl Fahrzeuge: 0
    Anzahl Fahrzeuge: 3
    Porsche 911
    MAN TGX
    Opel Zafira Life
    git switch exercises/oo/07
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/operators/index.html b/exercises/operators/index.html index 71d4a64b4a..bb4d6a7ff1 100644 --- a/exercises/operators/index.html +++ b/exercises/operators/index.html @@ -4,13 +4,13 @@ Operatoren | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/operators/operators01/index.html b/exercises/operators/operators01/index.html index a9cc7a256d..cc6835e555 100644 --- a/exercises/operators/operators01/index.html +++ b/exercises/operators/operators01/index.html @@ -4,13 +4,13 @@ Operators01 | Programmieren mit Java - +

    Operators01

    Erstelle eine ausführbare Klasse, welche den ganzzahligen Quotienten sowie den Divisionsrest einer Division auf der Konsole ausgibt.

    Konsolenausgabe

    a: 13
    b: 4
    Ganzzahliger Quotient von a/b: 3
    Divisionsrest von a/b: 1
    git switch exercises/operators/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/operators/operators02/index.html b/exercises/operators/operators02/index.html index f850e42c1f..b35f4f433c 100644 --- a/exercises/operators/operators02/index.html +++ b/exercises/operators/operators02/index.html @@ -4,13 +4,13 @@ Operators02 | Programmieren mit Java - +

    Operators02

    Welche Ausgabe erwartest Du nach Ablauf des abgebildeten Codings?

    Coding

    int a = 0;
    int b = 0;
    int c = 0;
    int d = 5;
    int e = 3;
    int f = 4;
    int g = 0;
    int h = 2;

    a = 3 * ++b;
    c = 3 * a++;

    d *= 6 + ++e;
    e = --f - 5 - f--;
    f = f + d % (e * 2);

    g = (h-- + 2) * (1 + --h);

    System.out.println("a: " + a);
    System.out.println("b: " + b);
    System.out.println("c: " + c);
    System.out.println("d: " + d);
    System.out.println("e: " + e);
    System.out.println("f: " + f);
    System.out.println("g: " + g);
    System.out.println("h: " + h);

    Lösung

    Erste Verwendung der Variable a.

    a = 3 * ++b; // b hat in dieser Zeile den Wert 0

    Berechnung

    a = 3 * ++(0);
    a = 3 * 1;
    a = 3;

    Zweite Verwendung der Variable a.

    c = 3 * a++; // a hat in dieser Zeile den Wert 3

    Berechnung

    a++
    (3)++
    4

    Konsolenausgabe

    a: 4
    - + \ No newline at end of file diff --git a/exercises/operators/operators03/index.html b/exercises/operators/operators03/index.html index 3270bcb40c..73bf065efb 100644 --- a/exercises/operators/operators03/index.html +++ b/exercises/operators/operators03/index.html @@ -4,13 +4,13 @@ Operators03 | Programmieren mit Java - +

    Operators03

    Welche Ausgabe erwartest Du nach Ablauf des abgebildeten Codings?

    Coding

    byte a = 116;
    byte b = 59;
    byte c, d, e, f;

    c = (byte) (a & b);
    d = (byte) (a | b);
    e = (byte) (a ^ b);
    f = (byte) (~a);

    System.out.println("c: " + c);
    System.out.println("d: " + d);
    System.out.println("e: " + e);
    System.out.println("f: " + f);

    Lösung

    Dezimal1286432168421
    11601110100
    5900111011

    Berechnung

    Dezimal1286432168421
    a & b00110000

    Konsolenausgabe

    c: 48
    - + \ No newline at end of file diff --git a/exercises/optionals/index.html b/exercises/optionals/index.html index 109235c182..ba0d7a3c69 100644 --- a/exercises/optionals/index.html +++ b/exercises/optionals/index.html @@ -4,13 +4,13 @@ Optionals | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/optionals/optionals01/index.html b/exercises/optionals/optionals01/index.html index 7cd7b643ba..41362cefb9 100644 --- a/exercises/optionals/optionals01/index.html +++ b/exercises/optionals/optionals01/index.html @@ -4,13 +4,13 @@ Optionals01 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/optionals/optionals02/index.html b/exercises/optionals/optionals02/index.html index 59f59e46de..7d57e490a9 100644 --- a/exercises/optionals/optionals02/index.html +++ b/exercises/optionals/optionals02/index.html @@ -4,13 +4,13 @@ Optionals02 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/optionals/optionals03/index.html b/exercises/optionals/optionals03/index.html index 20bf9dedcb..fb31664c80 100644 --- a/exercises/optionals/optionals03/index.html +++ b/exercises/optionals/optionals03/index.html @@ -4,13 +4,13 @@ Optionals03 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/polymorphy/index.html b/exercises/polymorphy/index.html index 0674e1c576..cf0fa136cb 100644 --- a/exercises/polymorphy/index.html +++ b/exercises/polymorphy/index.html @@ -4,13 +4,13 @@ Polymorphie | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/polymorphy/polymorphy01/index.html b/exercises/polymorphy/polymorphy01/index.html index 996d108c71..7636a9b562 100644 --- a/exercises/polymorphy/polymorphy01/index.html +++ b/exercises/polymorphy/polymorphy01/index.html @@ -4,7 +4,7 @@ Polymorphy01 | Programmieren mit Java - + @@ -14,7 +14,7 @@ Klassendiagramms an und erstelle die Klassen Car und Truck
  • Passe die ausführbare Klasse aus Übungsaufgabe Enumerations01 so an, dass keine Fahrzeuge, sondern Autos und Lastwagen erzeugt und ausgegeben werden
  • Klassendiagramm

    image

    Hinweise zur Klasse Car

    • Der Konstruktor soll alle Attribute initialisieren
    • Die Methode void doATurboBoost() soll die Geschwindigkeit verdoppeln
    • Die Methode void print() soll alle Attribute auf der Konsole ausgeben

    Hinweise zur Klasse Truck

    • Der Konstruktor soll alle Attribute initialisieren
    • Die Methode void transform() soll das Attribut isTransformed invertieren
    • Die Methode void print() soll alle Attribute auf der Konsole ausgeben

    Konsolenausgabe

    Anzahl Fahrzeuge: 0
    Anzahl Fahrzeuge: 3
    Porsche 911 (Elektro, 2 Sitzplätze)
    MAN TGX (Diesel, 20t)
    Opel Zafira Life (Diesel, 7 Sitzplätze)
    Porsche 911 beschleunigt auf 50 km/h
    MAN TGX verwandelt sich in einen Autobot
    Porsche 911 macht einen TurboBoost und beschleunigt auf 100 km/h
    MAN TGX verwandelt sich in einen Lastwagen zurück
    git switch exercises/polymorphy/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/polymorphy/polymorphy02/index.html b/exercises/polymorphy/polymorphy02/index.html index 1363e3b25f..28b3bb6841 100644 --- a/exercises/polymorphy/polymorphy02/index.html +++ b/exercises/polymorphy/polymorphy02/index.html @@ -4,7 +4,7 @@ Polymorphy02 | Programmieren mit Java - + @@ -15,7 +15,7 @@ Fahrzeugvermietung ausgegeben werden

    Klassendiagramm

    image

    Hinweise zur Klasse Rental

    • Der Konstruktor soll alle Attribute initialisieren
    • Die Methode void addVehicle(vehicle: Vehicle) soll der Fahrzeugvermietung ein Fahrzeug hinzufügen
    • Die Methode void addAllVehicles(vehicles: Vehicle...) soll der Fahrzeugvermietung mehrere Fahrzeug hinzufügen
    • Die Methode void print() soll alle Attribute auf der Konsole ausgeben

    Konsolenausgabe

    Fahrzeugvermietung Müller
    Unsere Fahrzeuge:
    Porsche 911 (Elektro, 2 Sitzplätze)
    MAN TGX (Diesel, 20t)
    Opel Zafira Life (Diesel, 7 Sitzplätze)
    git switch exercises/polymorphy/02
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/polymorphy/polymorphy03/index.html b/exercises/polymorphy/polymorphy03/index.html index 316abb40ec..acb5fd6cba 100644 --- a/exercises/polymorphy/polymorphy03/index.html +++ b/exercises/polymorphy/polymorphy03/index.html @@ -4,7 +4,7 @@ Polymorphy03 | Programmieren mit Java - + @@ -14,7 +14,7 @@ Polymorphy02 so an, dass sich alle Lastwagen der Fahrzeugvermietung in Autobots verwandeln

    Klassendiagramm

    image

    Hinweis zur Klasse Rental

    Die Methode void transformAllTrucks() soll alle Lastwagen in Autobots verwandeln.

    git switch exercises/polymorphy/03
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/polymorphy/polymorphy04/index.html b/exercises/polymorphy/polymorphy04/index.html index 454cf92fd6..a641a42cab 100644 --- a/exercises/polymorphy/polymorphy04/index.html +++ b/exercises/polymorphy/polymorphy04/index.html @@ -4,7 +4,7 @@ Polymorphy04 | Programmieren mit Java - + @@ -18,7 +18,7 @@ Übungsaufgabe ClassDiagrams02 so an, dass jeder Spieler während des Spiels einmal die Möglichkeit hat, entweder nur mit 4-5-6-Würfeln oder 1-2-3-Würfeln zu würfeln

    Klassendiagramm

    image

    Hinweis zur Klasse HighValueDice

    Die Methode void rollTheDice() soll nur 4er, 5er und 6er "würfeln".

    Hinweis zur Klasse LowValueDice

    Die Methode void rollTheDice() soll nur 1er, 2er und 3er "würfeln".

    Konsolenausgabe

    Hans hat aktuell 0 Punkte
    Hans, möchtest Du einmalig Spezialwürfel verwenden (true, false)?: true
    Hans, welche Spezialwürfel möchtest Du verwenden (1=4-5-6-Würfel, 2=1-2-3-Würfel)?: 1
    Hans, möchtest Du würfeln (true, false)?: true
    Hans hat 12 Punkte
    Hans hat insgesamt 12 Punkte

    Lisa hat aktuell 46 Punkte
    Lisa, möchtest Du würfeln (true, false)?: true
    Lisa hat 12 Punkte
    Lisa hat insgesamt 58 Punkte
    Lisa hat verloren
    Der Sieger heißt Hans und hat 49 Punkte
    git switch exercises/polymorphy/04
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/programming/index.html b/exercises/programming/index.html index f26c3c896c..e459dcca4c 100644 --- a/exercises/programming/index.html +++ b/exercises/programming/index.html @@ -4,13 +4,13 @@ Programmieren | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/uml/activity-diagrams01/index.html b/exercises/uml/activity-diagrams01/index.html index 461e77451d..41b1ddfc85 100644 --- a/exercises/uml/activity-diagrams01/index.html +++ b/exercises/uml/activity-diagrams01/index.html @@ -4,13 +4,13 @@ ActivityDiagrams01 | Programmieren mit Java - +
    - + \ No newline at end of file diff --git a/exercises/uml/class-diagrams01/index.html b/exercises/uml/class-diagrams01/index.html index 135f083493..259a1d3949 100644 --- a/exercises/uml/class-diagrams01/index.html +++ b/exercises/uml/class-diagrams01/index.html @@ -4,14 +4,14 @@ ClassDiagrams01 | Programmieren mit Java - +

    ClassDiagrams01

    • Erstelle die Klasse Player anhand des abgebildeten Klassendiagramms
    • Erstelle eine ausführbare Klasse, welche ein einfaches Würfelduell zwischen 2 Spielern simuliert:
      • Würfelwert von Spieler 1 > Würfelwert von Spieler 2: Spieler 1 gewinnt
      • Würfelwert von Spieler 1 < Würfelwert von Spieler 2: Spieler 2 gewinnt
      • Würfelwert von Spieler 1 = Würfelwert von Spieler 2: Unentschieden

    Klassendiagramm

    image

    Hinweis zur Klasse Player

    Der Konstruktor soll den Namen initialisieren.

    Konsolenausgabe

    Hans würfelt eine 2
    Lisa würfelt eine 3
    Lisa gewinnt

    Hinweis

    Verwende die Klasse Dice aus Übungsaufgabe OO03

    git switch exercises/class-diagrams/01
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/uml/class-diagrams02/index.html b/exercises/uml/class-diagrams02/index.html index 00ddc56b68..8e2aec1dd7 100644 --- a/exercises/uml/class-diagrams02/index.html +++ b/exercises/uml/class-diagrams02/index.html @@ -4,7 +4,7 @@ ClassDiagrams02 | Programmieren mit Java - + @@ -18,7 +18,7 @@ werden.

    Hinweise zur Klasse DiceGame

    • Der Konstruktor soll alle Attribute initialisieren
    • Die Methode void start() soll die Spieler abwechselnd einen Spielzug machen lassen und am Ende den Sieger des Spiels auf der Konsole ausgeben
    • Die Methode void move(player: Player) soll es dem Spieler ermöglichen zu würfeln, bzw. seinen Spielzug zu beenden

    Konsolenausgabe

    Hans hat aktuell 0 Punkte
    Hans, möchtest Du würfeln (true, false)?: true
    Hans hat 8 Punkte
    Hans hat insgesamt 8 Punkte

    Hans hat aktuell 43 Punkte
    Hans, möchtest Du würfeln (true, false)?: false
    Lisa hat aktuell 41 Punkte
    Lisa, möchtest Du würfeln (true, false)?: true
    Lisa hat 10 Punkte
    Lisa hat insgesamt 51 Punkte
    Lisa hat verloren
    Der Sieger heißt Hans und hat 43 Punkte
    git switch exercises/class-diagrams/02
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/uml/class-diagrams03/index.html b/exercises/uml/class-diagrams03/index.html index 1557254aa6..470493c513 100644 --- a/exercises/uml/class-diagrams03/index.html +++ b/exercises/uml/class-diagrams03/index.html @@ -4,7 +4,7 @@ ClassDiagrams03 | Programmieren mit Java - + @@ -17,7 +17,7 @@ gegenseitig angreifen lassen, bis eine der Kreaturen "stirbt"
  • Die Methode boolean move(creature1: Creature, creature2: Creature) soll eine Kreatur die andere angreifen lassen und den Rückgabewert true liefern, wenn die angegriffene Kreatur "stirbt", bzw. false, wenn nicht
  • Die Methode void print() soll alle Attribute auf der Konsole ausgeben
  • Konsolenausgabe

    Runde 1: Zombie (2 - 10), Vampir (4 - 6)
    Zombie greift Vampir an und erzielt 2 Schaden
    Vampir hat noch 4 Lebenspunkte
    Vampir greift Zombie an und erzielt 4 Schaden
    Zombie hat noch 6 Lebenspunkte

    Runde 3: Zombie (2 - 2), Vampir (4 - 2)
    Zombie greift Vampir an und erzielt 2 Schaden
    Vampir wurde vernichtet
    git switch exercises/class-diagrams/03
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/uml/class-diagrams04/index.html b/exercises/uml/class-diagrams04/index.html index e686871ceb..2b93ed2f3d 100644 --- a/exercises/uml/class-diagrams04/index.html +++ b/exercises/uml/class-diagrams04/index.html @@ -4,7 +4,7 @@ ClassDiagrams04 | Programmieren mit Java - + @@ -13,7 +13,7 @@ abgebildeten Klassendiagramms
  • Erstelle eine ausführbare Klasse, welche ein Unternehmen mit mehreren Mitarbeitern erzeugt und auf der Konsole ausgibt
  • Klassendiagramm

    image

    Hinweis zur Klasse Person

    Der Konstruktor soll den Namen initialisieren.

    Hinweise zur Klasse Employee

    • Der Konstruktor soll alle Attribute initialisieren
    • Die Methode String getName() soll den Namen des Mitarbeiters zurückgeben
    • Die Methode void print() soll alle Attribute auf der Konsole ausgeben

    Hinweise zur Klasse Company

    • Der Konstruktor soll den Namen sowie die Mitarbeiterliste initialisieren
    • Die Methode void addEmployee(employee: Employee) soll der Mitarbeiterliste einen Mitarbeiter hinzufügen
    • Die Methode void print() soll alle Attribute auf der Konsole ausgeben

    Konsolenausgabe

    Maier GmbH (5 Mitarbeiter)
    1 - Max Schmid - 50000€
    2 - Hans Müller - 75000€
    3 - Lisa Meier - 40000€
    4 - Peter Schneider - 55000€
    5 - Miriam Albers - 90000€
    git switch exercises/class-diagrams/04
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/uml/class-diagrams05/index.html b/exercises/uml/class-diagrams05/index.html index 6745ec7752..b1e2cdbd34 100644 --- a/exercises/uml/class-diagrams05/index.html +++ b/exercises/uml/class-diagrams05/index.html @@ -4,7 +4,7 @@ ClassDiagrams05 | Programmieren mit Java - + @@ -13,7 +13,7 @@ Klassen SkatCard und SkatCardDeck anhand des abgebildeten Klassendiagramms
  • Erstelle eine ausführbare Klasse, welche ein Skatblatt erzeugt, mischt und auf der Konsole ausgibt
  • Klassendiagramm

    image

    Hinweise zur Klasse SkatCardDeck

    • Der Konstruktor soll ein Skatblatt, bestehend aus 32 Karten, erzeugen
    • Die Methode void shuffleSkatCards() soll das Skatblatt mischen

    Konsolenausgabe

    Kreuz König
    Pik 10
    Kreuz 9
    Pik 9
    Kreuz Bube
    Pik Ass
    Herz Bube
    Karo Bube
    Pik 8
    Karo Dame

    Hinweis

    Die statische Methode T[] values() einer Aufzählung gibt alle Aufzählungskonstanten der Aufzählung als Feld zurück.

    git switch exercises/class-diagrams/05
    Open in Gitpod
    - + \ No newline at end of file diff --git a/exercises/uml/index.html b/exercises/uml/index.html index 438e549de8..736f38afa0 100644 --- a/exercises/uml/index.html +++ b/exercises/uml/index.html @@ -4,13 +4,13 @@ Darstellung von Klassen und Programmabläufen | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/unit-tests/index.html b/exercises/unit-tests/index.html index f256a82a5a..672db09a46 100644 --- a/exercises/unit-tests/index.html +++ b/exercises/unit-tests/index.html @@ -4,13 +4,13 @@ Komponententests (Unit-Tests) | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/unit-tests/unit-tests01/index.html b/exercises/unit-tests/unit-tests01/index.html index 63efa36fbc..2a15b166b0 100644 --- a/exercises/unit-tests/unit-tests01/index.html +++ b/exercises/unit-tests/unit-tests01/index.html @@ -4,13 +4,13 @@ UnitTests01 | Programmieren mit Java - + - + \ No newline at end of file diff --git a/exercises/unit-tests/unit-tests02/index.html b/exercises/unit-tests/unit-tests02/index.html index c7b5b8ec2c..4ff707d5ec 100644 --- a/exercises/unit-tests/unit-tests02/index.html +++ b/exercises/unit-tests/unit-tests02/index.html @@ -4,13 +4,13 @@ UnitTests02 | Programmieren mit Java - +

    UnitTests02

    Erstelle die Klasse RentalTest und erweitere die Klasse Rental aus Übungsaufgabe Exceptions01 anhand des abgebildeten Klassendiagramms.

    Klassendiagramm

    image

    Hinweis zur Klasse Rental

    Die Methode void accelerateAllVehicles(value: int) soll alle Fahrzeuge der Fahrzeugvermietung um den eingehenden Wert beschleunigen.

    Hinweise zur Klasse RentalTest

    • Die Lebenszyklus-Methode void setUp() soll eine Fahrzeugvermietung samt dazugehöriger Fahrzeuge erzeugen
    • Die Testmethode void testTransformAllTrucks() soll prüfen, ob nach Ausführen der Methode void transformAllTrucks() der Klasse Rental alle Lastwagen in Autobots umgewandelt werden und nach erneutem Ausführen wieder zurückverwandelt werden
    • Die Testmethode void testAccelerateAllVehicles(int) soll prüfen, ob beim Ausführen der Methode void accelerateAllVehicles(value: int) der Klasse Rental mit einem negativen Wert die Ausnahme InvalidValueException ausgelöst wird
    - + \ No newline at end of file diff --git a/exercises/unit-tests/unit-tests03/index.html b/exercises/unit-tests/unit-tests03/index.html index 4cfc2a193a..53f79ddd10 100644 --- a/exercises/unit-tests/unit-tests03/index.html +++ b/exercises/unit-tests/unit-tests03/index.html @@ -4,13 +4,13 @@ UnitTests03 | Programmieren mit Java - +

    UnitTests03

    Erstelle die Klasse TelephoneBookTest anhand des abgebildeten Klassendiagramms.

    Klassendiagramm

    image

    Hinweise zur Klasse TelephoneBookTest

    • Die Lebenszyklus-Methode void setUp() soll ein Telefonbuch samt dazugehöriger Einträge erzeugen
    • Die Testmethode void testAddEntry() soll prüfen, ob nach dem Ausführen der Methode void addEntry(person: Person, telephoneNumber: TelephoneNumber) mit einer Person, zu der es bereits einen Eintrag im Telefonbuch gibt, die Telefonnummer aktualisiert wurde
    • Die Testmethode void testGetTelephoneNumberByName1() soll prüfen, ob beim Ausführen der Methode Optional<TelephoneNumber> getTelephoneNumberByName(name: String) mit einem Namen, zu dem es eine entsprechende Person im Telefonbuch gibt, die dazugehörige Telefonnummer als Optional zurückgegeben wird
    • Die Testmethode void testGetTelephoneNumberByName2() soll prüfen, ob beim Ausführen der Methode Optional<TelephoneNumber> getTelephoneNumberByName(name: String) mit einem Namen, zu dem es keine entsprechende Person im Telefonbuch gibt, ein leeres Optional zurückgegeben wird

    Hinweis

    Verweden die Klasse TelephoneBook aus Übungsaufgabe Optionals02.

    - + \ No newline at end of file diff --git a/exercises/unit-tests/unit-tests04/index.html b/exercises/unit-tests/unit-tests04/index.html index 291f1480c1..e3f662f533 100644 --- a/exercises/unit-tests/unit-tests04/index.html +++ b/exercises/unit-tests/unit-tests04/index.html @@ -4,13 +4,13 @@ UnitTests04 | Programmieren mit Java - +

    UnitTests04

    Erstelle die Klasse BookCollectionTest anhand des abgebildeten Klassendiagramms.

    Klassendiagramm

    image

    Hinweise zur Klasse BookCollectionTest

    • Die Lebenszyklus-Methode void setUp() soll den Attributen der Testklasse passende Werte zuweisen
    • Die Testmethode void testAddAuthor() soll prüfen, ob beim Ausführen der Methode void addAuthor(author: Author) mit einem Autoren, der bereits in der Büchersammlung vorhanden ist, die Ausnahme DuplicateKeyException ausgelöst wird
    • Die Testmethode void testAddBook() soll prüfen, ob nach dem Ausführen der Methode void addBook(author: Author, book: Book) der entsprechende Eintrag aktualisiert wurde
    • Die Testmethode void testGetMostDiligentAuthor1() soll prüfen, ob beim Ausführen der Methode Optional<Author> getMostDiligentAuthor() auf eine befüllte Büchersammlung der Autor mit den meisten Büchern in der Büchersammlung als Optional zurückgegeben wird
    • Die Testmethode void testGetMostDiligentAuthor2() soll prüfen, ob beim Ausführen der Methode Optional<Author> getMostDiligentAuthor() auf eine leere Büchersammlung ein leeres Optional zurückgegeben wird
    • Die Testmethode void testGetBookByTitle() soll prüfen, ob beim Ausführen der Methode Optional<Book> getBookByTitle(title: String) mit einem Buchtitel zu einem vorhandenen Buch das entsprechende Buch als Optional zurückgegeben wird und ob beim Ausführen der Methode Optional<Book> getBookByTitle(title: String) mit einem Buchtitel zu einem nicht vorhandenen Buch ein leeres Optional zurückgegeben wird

    Hinweis

    Verweden die Klasse BookCollection aus Übungsaufgabe Optionals01.

    - + \ No newline at end of file diff --git a/index.html b/index.html index 1e31fb4087..b3f8eee72c 100644 --- a/index.html +++ b/index.html @@ -4,13 +4,13 @@ Einführung | Programmieren mit Java - +

    Einführung

    1995 veröffentliche die Firma Sun Microsystems die Programmiersprache Java. Diese hat sich im Laufe der Zeit als universelle, für vielfältige Zwecke einsetzbare Lösung und als Quasi-Standard für die plattformunabhängige Entwicklung etabliert. Zudem war Java einer der maßgeblichen Wegbereiter für die Verbreitung des objektorientierten Programmierparadigmas, welches gemeinhin in vielen Bereichen als State-of-the-Art gilt.

    Diese Webseite sowie die dazugehörigen Vorlesungen sollen eine systematische Einführung in das Programmieren mit Java ermöglichen. Hierzu werden wichtige, praxisrelevante Konzepte und Methoden der Programmierung vorgestellt, wobei die objektorientierte Programmierung einen großen Raum einnimmt.

    Wir versuchen, langfristig alle Inhalte der Vorlesung in Textform bereitzustellen (Everything as Code). Da professionelle Softwareentwicklung immer auch Zusammenarbeit bedeutet, möchten wir zudem auf moderne Art und Weise (z.B. per Issues, Pull Requests oder Discussions) die Studierenden zu eben dieser Zusammenarbeit animieren (Community by Design).

    Contributors

    - + \ No newline at end of file diff --git a/slides/steffen/abstract-and-final/index.html b/slides/steffen/abstract-and-final/index.html index 7f0e0a12fb..696dffe49d 100644 --- a/slides/steffen/abstract-and-final/index.html +++ b/slides/steffen/abstract-and-final/index.html @@ -4,13 +4,13 @@ Programmieren mit Java - +
    Fragen oder Probleme?

    Wiederholung

    • Polymorphie
    • Upcast
    • Downcast
    • instanceof

    Was ist der abstract Modifier?

    Kann angewendet werden auf

    • Klassen
    • Methoden

    Abstrakte Klassen

    • kann kein Objekt davon erzeugt werden
    • muss erweitert werden von einer anderen Klasse

    Zweck von abstrakten Klassen

    • Wiederverwendung von Code
    • Erzwingen von spezifischen Implementierungen

    Demo

    • Animal Klasse abstrakt machen

    Abstrakte Methode

    • kann nur in abstrakten Klassen definiert werden
    • definiert Signatur
    • muss von erbenden Klassen implementiert werden

    Zweck von abstrakten Methoden

    • Erzwingen von spezifischen Methoden

    Demo

    • abstrakte Methode makeSound

    Was ist der final Modifier?

    Kann angewendet werden auf

    • Klassen
    • Attribute
    • Variablen

    Finale Klassen

    • kann man nicht ableiten

    Zweck von finalen Klassen

    • weitere Ableitungen machen keinen Sinn
    • Klasse ist nicht zur Erweiterung gedacht

    Demo

    • Dog Klasse final machen

    Finale Methode

    • kann nicht überschrieben werden

    Zweck von finalen Methoden

    • internes Verhalten erzwingen

    Demo

    • finale Methode bark

    Zusammenfassung

    • abstrakte Klassen
    • abstrakte Methoden
    • finale Klassen
    • finale Methoden

    Rest of the day

    • Abstract and Final 01
    - + \ No newline at end of file diff --git a/slides/steffen/class-diagram-java-api-enum/index.html b/slides/steffen/class-diagram-java-api-enum/index.html index 3bff1d8d63..25c718806e 100644 --- a/slides/steffen/class-diagram-java-api-enum/index.html +++ b/slides/steffen/class-diagram-java-api-enum/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -30,7 +30,7 @@ } scanner.close(); }

    *NKR

    Was ist der final Modifier?

    Kann angewendet werden auf

    • (Referenz)variablen
    • Attribute
    • Klassen(wird später behandelt)

    Was bewirkt der final modifier?

    • initialisierung nur einmal möglich
    • bei Klassen auch im Konstruktor

    Demo

    • char gender
    • String firstName

    Enumerations

    Was sind Enumerations?

    Gruppe von Konstanten

    • Geschlecht (Male, Female, Divers)
    • Motorart (Benzin, Diesel, Elektro)
    • Genre (Action, Horror, Romanze)
    • USK (0, 6, 12, 16, 18)

    Wie kann man das realisieren? (Gender)

    • Anzahl an Gender?
    • Attribute?
    • Gender verfügbar machen?
    • keine weiteren Gender zulassen?
    • manipulation innerhalb der Klasse verhindern?

    Geht das nicht einfacher?

    • enum anstatt class
    • Konstanten kommagetrennt festlegen
    • Konstruktor access modifier optional

    Was macht man mit Enums?

    Demo

    • switch
    • isBinary
    • values & ordinal

    Klassendiagramme

    Was sind Klassendiagramme?

    • Diagrammtyp der UML
    • visualisiert Klassen
    • und deren Beziehungen

    Bereiche

    • Klassenname
    • Attribute
    • Methoden

    Access Modifier

    • + entspricht public
    • - entspricht private
    • # entspricht protected
    • ~ entspricht packaged *

    *NKR

    andere Modifier

    • unterstrichene Attribute und Methoden sind static
    • weitere Merkmale durch geschweifte Klammern

    Methoden

    • Modifier - Bezeichner - Parameter - Rückgabetyp

    Attribute

    • Modifier - Bezeichner - Rückgabetyp - Anfangswert

    Stereotypen

    • << enum >>
    • << interface >>
    • << exception >>

    Beziehungen zwischen Klassen

    • Assoziation
    • Aggregation
    • Kompositon*

    *NKR

    Aktivitätsdiagramme

    Was sind Aktivitätsdiagramme?

    • Diagrammtyp der UML
    • visualisiert Verhalten
    In der Klausur ist nur das Lesen von Aktivitätsdiagrammen relevant.

    Zusammenfassung

    • Java API
    • final modifier
    • Enumerations
    • Klassendiagramme
    • Aktivitätsdiagramme

    Rest of the day

    • Java API
    • Enumerations
    • Activity Diagrams
    • Class Diagrams
    - + \ No newline at end of file diff --git a/slides/steffen/classes-and-objects/index.html b/slides/steffen/classes-and-objects/index.html index dd08b8a586..ab5033f3d6 100644 --- a/slides/steffen/classes-and-objects/index.html +++ b/slides/steffen/classes-and-objects/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -25,7 +25,7 @@ marianna.firstName = "Marianna" marianna.lastName = "Maglio" //...

    Demo

    • Lesen und Schreiben von Attributen
    • Unterschied Referenzvariable und Variable
    • Was ist null?

    Was sind Modifier?

    Arten von Modifiern

    • Access Modifier heute relevant
    • Non-Access Modifier

    Was machen Access Modifier?

    Steuern den Zugriff auf:

    • Klassen
    • Attribute
    • Methoden
    • Konstruktoren (werden später behandelt)

    Was für Access Modifier gibt es?

    • public
    • private
    • protected
    • default*

    *NKR

    Wann verwendet man public?

    • um Funktionalität zur Verfügung zu stellen

    Wann verwendet man private?

    • um Modifikation von Attributen zu verhindern
    • um Implementierungsdetails zu verstecken
    • Organisation von Code

    Demo

    • public/private
    • Getter- und Settermethoden
    • Schlüsselwort this
    • Überladen von Methoden

    Zusammenfassung

    Klasse

    • Abstraktion von Objekten
    • definiert durch Methoden und Attribute

    Objekt

    • Instanz einer Klasse
    • Verhalten abhängig von der Instanz
    • ist eine Referenzvariable
    • hat den default Wert null

    Modifiers

    • public/private
    • Getter- und Settermethoden
    • this
    • Überladen von Methoden

    Rest of the day

    • Aufgabe Objects 01
    • Wiederholen
    - + \ No newline at end of file diff --git a/slides/steffen/constructor-and-static/index.html b/slides/steffen/constructor-and-static/index.html index 0a4fad202a..bfc7fb1c3c 100644 --- a/slides/steffen/constructor-and-static/index.html +++ b/slides/steffen/constructor-and-static/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -33,7 +33,7 @@ } }

    Demo

    • Human

    Was ist der static Modifier?

    Kann angewendet werden auf

    • Attribute
    • Methoden

    Statische Attribute

    beziehen sich auf die Klasse

    • keine Unterscheidung zwischen Objekten notwendig
    • z. B. die Zahl Pi
    • Zugriff über Klassenname
    • z. B. Math.PI

    Statische Methoden

    beziehen sich auf die Klasse

    • kein Zugriff auf Objektattribute möglich
    • z. B. berechnen eines absoluten Wertes
    • Zugriff über Klassenname
    • Math.abs()

    Demo privat/public static

    • Humans
    Finally public static void main verstanden 🥳

    Zusammenfassung

    Konstruktor

    • Initialisierung von Objekten
    • Mehrere Konstruktoren durch Methodenüberladung

    Der static Modifier

    • Methoden und Attribute
    • Zugriff auf Instanzattribute nicht möglich

    Rest of the day

    • Aufgabe Objects 02 - 07
    • Tutego
    • Wiederholen
    - + \ No newline at end of file diff --git a/slides/steffen/datatypes-and-dataobjects/index.html b/slides/steffen/datatypes-and-dataobjects/index.html index e8e10659d4..c3d0a41be9 100644 --- a/slides/steffen/datatypes-and-dataobjects/index.html +++ b/slides/steffen/datatypes-and-dataobjects/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -21,7 +21,7 @@
    myName = "Steffen"; // --> Initialisierung
     
    String myName = "Steffen"; // --> Zusammenfassung
     

    Demo

    Zusammenfassung

    - + \ No newline at end of file diff --git a/slides/steffen/exceptions/index.html b/slides/steffen/exceptions/index.html index 29b10e10b0..b5f0e85d26 100644 --- a/slides/steffen/exceptions/index.html +++ b/slides/steffen/exceptions/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -24,7 +24,7 @@ System.out.println("Always"); } }

    Demo

    • PasswordTooShortException
    • throw PasswordTooShortException
    • catch PasswordTooShortException
    • mehr Informationen mitgeben
    • super call
    • PasswordTooLongException
    • instance of und multiple catch

    Schlüsselwörter

    • throw -> Methode
    • throws -> Methodensignatur
    • try -> ohne Error
    • catch -> falls Error
    • finally -> immer

    Rest of the day

    • Exceptions 01 - 03
    - + \ No newline at end of file diff --git a/slides/steffen/generics-maps/index.html b/slides/steffen/generics-maps/index.html index a06191da77..c0a9c8d147 100644 --- a/slides/steffen/generics-maps/index.html +++ b/slides/steffen/generics-maps/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -91,7 +91,7 @@ } }

    Demo

    • Studentendaten
    • Daten liegen unsortiert vor
    • Objekte als Schlüssel

    Maps

    Daten liegen unsortiert vor.

    Maps mit Objekten als Schlüssel müssen je nach Anwendungsfall richtig implementiert werden.

    equals - Methode muss zusätzlich zu hashCode implementiert werden

    performance outlook

    Frag jetzt!

    Rest of the Day

    • Generics
    • Maps
    - + \ No newline at end of file diff --git a/slides/steffen/if-and-switch/index.html b/slides/steffen/if-and-switch/index.html index 6884141bf3..2b450052da 100644 --- a/slides/steffen/if-and-switch/index.html +++ b/slides/steffen/if-and-switch/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -47,7 +47,7 @@ numbers[3] = 9;

    Wie kann ich ein Array ohne Werte initialisieren?

    int[] numbers = new int[4]; 
     Integer[] numbers = new Integer[4]; 
     numbers[3] = 9;

    Schlüsselwort new ignorieren

    Primitiver DatentypKomplexer Datentyp
    booleanBoolean
    charCharacter
    byteByte
    shortShort
    intInteger
    longLong
    floatFloat
    doubleDouble

    Wie macht man Arrays größer?

    • Größe des neuen Arrays ermittlen
    • neues Array mit neuer Größe erstellen
    • mit einer Schleife die Elemente aus dem alten Array kopieren

    Wie fügt man ein Element an einer bestimmten Stelle ein?

    • Größe des neuen Arrays ermittlen
    • neues Array mit neuer Größe erstellen
    • mit einer Schleife die Elemente vor der neuen Stelle aus dem alten Array kopieren
    • neues Element hinzufügen
    • mit einer Schleife die Elemente nach der neuen Stelle aus dem alten Array kopieren

    ArrayList

    • neue Elemente hinzufügen
    • neue Elemente an bestimmter Stelle hinzufügen
    • komplette Liste leeren
    • prüfen ob Liste ein bestimmtes Element enthält
    • ...

    ArrayList

    ArrayList<Integer> numbers = new ArrayList<>();

    <Integer> sind Generics --> Java 2

    new kann erst mit Objekten verstanden werden

    Demo

    for-Schleife mit Array und ArrayList

    Was sind jetzt die args in der main Methode?

    Demo

    - + \ No newline at end of file diff --git a/slides/steffen/inheritance/index.html b/slides/steffen/inheritance/index.html index 6aa8789685..950be12a69 100644 --- a/slides/steffen/inheritance/index.html +++ b/slides/steffen/inheritance/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -24,7 +24,7 @@ super(name); } }

    Demo

    • super call mit Animal

    der protected modifier

    • weiterer Access modifier wie public und private
    • kann angewendet werden auf Attribute, Methoden und Konstruktoren

    Auswirkung von protected

    Methoden, Attribute und Konstructoren die mit protected markiert sind können ausgeführt werden von:

    • erbenden Klassen
    • Klassen im gleichen Package🤯*

    *NKR

    Demo

    • protected name

    Zusammenfassung

    • Gemeinsamkeiten mehrerer Klassen
    • Generalisierung
    • Vererbung
    • protected
    • super

    Rest of the day

    • Polymorphy 01 & 02
    - + \ No newline at end of file diff --git a/slides/steffen/interfaces/index.html b/slides/steffen/interfaces/index.html index b0f70c563e..59312b3b01 100644 --- a/slides/steffen/interfaces/index.html +++ b/slides/steffen/interfaces/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -23,7 +23,7 @@ Collections.sort(humans); Collections.sort(humans, new AgeComparator()); // ...

    Demo

    • Human Comparable
    • AgeComparator

    Rest of the day

    • Interfaces 01
    • Comparators 01 - 02
    - + \ No newline at end of file diff --git a/slides/steffen/intro/index.html b/slides/steffen/intro/index.html index 6371eb848d..9cd757a96b 100644 --- a/slides/steffen/intro/index.html +++ b/slides/steffen/intro/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -14,7 +14,7 @@ ls -la # wie Z2, aber auch versteckte Dateien und Ordner ls docs -la # wie Z3, aber im Unterordner docs

    Wie macht man ein Java Programm?

    Quellcode verfassen

    Quellcode zu einem Java Programm kompilieren

    Java Programm mit der Java Runtime ausführen

    Zusammenfassung

    Programme

    GUI, TUI & Hintergrund

    Quellcode wird in Programm kompiliert

    Aufgaben

    Development Environment einrichten (GitPod oder lokal)

    Hello-World-Aufgabe machen

    - + \ No newline at end of file diff --git a/slides/steffen/lambda/index.html b/slides/steffen/lambda/index.html index c82041bbdd..18bc199911 100644 --- a/slides/steffen/lambda/index.html +++ b/slides/steffen/lambda/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -82,7 +82,7 @@ );

    Syntax Lambdafunktion - return-Anweisung

    Besteht die Lambdafunktion aus einer einzelnen return Anweisung, sind keine geschweifte Klammern notwendig und das return Statement kann weggelassen werden.

    shoppingList.calculate((int a, int b) -> a + b);
     

    Frag jetzt!

    Demo

    • Intro Shopping List Example
    • After List Printed (kein Parameter)
    • After Item Added (ein Parameter)
    • Items Changed (mehrere Parameter)

    Frag jetzt!

    Rest of the Day

    • Java I Wiederholung
    • Aufgaben: Innere Klassen
    - + \ No newline at end of file diff --git a/slides/steffen/math-random-scanner/index.html b/slides/steffen/math-random-scanner/index.html index a8e229c651..d4653e0a01 100644 --- a/slides/steffen/math-random-scanner/index.html +++ b/slides/steffen/math-random-scanner/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -19,7 +19,7 @@ String textInput = sc.next(); String textInput = sc.nextLine(); boolean boolInput = sc.nextBoolean();

    Aufgaben

    • Konsolenanwendungen
    • Kontrollstrukturen - Cases 05 optional
    • Felder - Arrays 04 optional
    - + \ No newline at end of file diff --git a/slides/steffen/methods-and-operators/index.html b/slides/steffen/methods-and-operators/index.html index 2f24762435..1468e2a116 100644 --- a/slides/steffen/methods-and-operators/index.html +++ b/slides/steffen/methods-and-operators/index.html @@ -4,13 +4,13 @@ Programmieren mit Java - +
    Fragen oder Probleme?
    Gitpod: Parameter Hints deaktivieren

    Wiederholung

    Datentypen

    • Wahrheitswerte (boolean)
    • Zeichen (char, String)
    • Ganzzahlen (byte, short, int, long)
    • Gleitkommazahlen (float, double)

    Datenobjekte

    • Platzhalter, um Werte zwischenzuspeichern
    • Datentyp Bezeichner = Wert;
    • Standard für Ganzzahlen: int
    • Standard für Gleitkommazahlen: double

    Warum 'f' und 'd' bei float / double?

    *NKR

    Escapen von speziellen Zeichen

    *NKR

    Casten von Datentypen

    Was sind Methoden?

    Beispiele für Methoden

    • Addieren von zwei Zahlen
    • Berechnen von Titel, Vorname und Nachname
    • Brief zu Briefkasten bringen
    • aktuelle Uhrzeit nennen

    Aufbau einer Methode

    • Rückgabewert
    • Bezeichner
    • Parameter
    • Methodenrumpf

    Demo zu den 4 Beispielen

    Was sind Operatoren?

    Beispiele

    • Addieren von zwei Zahlen
    • Berechnen von Titel, Vorname und Nachname

    Arithmetische Operatoren

    BeispielBedeutung
    x + yAddiere y zu x
    x - ySubtrahiere y von x
    x * yMultipliziere x mit y
    x / yDividiere x durch y
    x % yDivisionsrest von x / y

    Arithmetische Operatoren

    BeispielBedeutung
    x++Inkrementiere x und gib den alten Wert an den Ausdruck zurück
    ++xInkrementiere x und gib den neuen Wert an den Ausdruck zurück
    x--Dekrementiere x und gib den alten Wert an den Ausdruck zurück
    --xDekrementiere x und gib den neuen Wert an den Ausdruck zurück

    *NKR

    Vergleichsoperatoren

    BeispielBedeutung
    x == yx ist gleich y
    x != yx ist ungleich y
    x > yx ist größer y
    x < yx ist kleiner y
    x >= yx ist größer gleich y
    x <= yx ist kleiner gleich y

    Logische Operatoren

    BeispielBedeutung
    x && yLogische AND-Verknüpfung
    x || yLogische OR-Verknüpfung
    !xLogisches NOT

    Bitweise Operatoren

    BeispielBedeutung
    x & yBitweise AND-Verknüpfung
    x | yBitweise OR-Verknüpfung
    x ^ yBitweise XOR-Verknüpfung
    ~xBitweises NOT

    *NKR

    Zusammenfassung

    • Was sind Methoden?
    • Was sind Operatoren?

    Aufgaben

    • DataObjects 01
    • DataObjects 02 (optional)
    • Operators 01
    • Operators 02 (optional)
    • Operators 03 (optional)
    - + \ No newline at end of file diff --git a/slides/steffen/plan/index.html b/slides/steffen/plan/index.html index 43a4abc09e..994be9fcf9 100644 --- a/slides/steffen/plan/index.html +++ b/slides/steffen/plan/index.html @@ -4,7 +4,7 @@ Einstieg Objektorientierung | Programmieren mit Java - + @@ -31,7 +31,7 @@ LadesteckerNokia

    Reales Beispiel Warenkorb

    • Will den Preis per Unit
    • Anzahl

    Warum abstract class nicht geeignet?

    Komparatoren

    Exceptions

    Scope of variables

    Loops03 bug?

    Contributior

    Goldfisch666 Nqin1 Goldfisch Java API03

    - + \ No newline at end of file diff --git a/slides/steffen/polymorphy/index.html b/slides/steffen/polymorphy/index.html index b5ed0574ec..2bb8ecfa7f 100644 --- a/slides/steffen/polymorphy/index.html +++ b/slides/steffen/polymorphy/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -17,7 +17,7 @@ if (bello instanceof Dog) { // dog specific coding }

    Demo

    • Dog und Cat spezifische Methoden
    • instanceof mit Downcast in Array

    Zusammenfassung

    • Polymorphie
    • Upcast
    • Downcast
    • instanceof

    Rest of the day

    • Polymorphy 03 & 04
    - + \ No newline at end of file diff --git a/slides/steffen/recap/index.html b/slides/steffen/recap/index.html index 2e968bb0aa..5272418341 100644 --- a/slides/steffen/recap/index.html +++ b/slides/steffen/recap/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -536,7 +536,7 @@ } }

    Frag jetzt!

    Klassendiagramme (Doku)

    Frag jetzt!

    Klausurbesprechung

    Rest of the day

    • Wiederholung Java I
    • Entwicklungsumgebung einrichten
    - + \ No newline at end of file diff --git a/slides/steffen/records-optionals/index.html b/slides/steffen/records-optionals/index.html index f988b1d1f1..2e7b113cd0 100644 --- a/slides/steffen/records-optionals/index.html +++ b/slides/steffen/records-optionals/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -69,7 +69,7 @@ } }

    Frag jetzt!

    Demo

    • Human Middlename
    • University Search Student

    Frag jetzt!

    Rest of the Day

    • Wiederholung Java I
    • Innere Klassen
    - + \ No newline at end of file diff --git a/slides/steffen/stream-api/index.html b/slides/steffen/stream-api/index.html index 8d3139837f..ece2f08490 100644 --- a/slides/steffen/stream-api/index.html +++ b/slides/steffen/stream-api/index.html @@ -4,7 +4,7 @@ Programmieren mit Java - + @@ -256,7 +256,7 @@ } }

    Rest of the Day

    • Lambda Aufgaben
    • Stream API Aufgaben
    - + \ No newline at end of file diff --git a/slides/steffen/tbd/index.html b/slides/steffen/tbd/index.html index 4216436d2f..f17e781399 100644 --- a/slides/steffen/tbd/index.html +++ b/slides/steffen/tbd/index.html @@ -4,13 +4,13 @@ Programmieren mit Java - +

    Wird noch erstellt.

    - + \ No newline at end of file diff --git a/slides/template/index.html b/slides/template/index.html index 28da0dfed4..e0035f1bb3 100644 --- a/slides/template/index.html +++ b/slides/template/index.html @@ -4,13 +4,13 @@ Programmieren mit Java - +
    Slide 1
    Vertical Slide 1
    Vertical Slide 2
    Slide 3
    - + \ No newline at end of file diff --git a/tags/abstract-and-final/index.html b/tags/abstract-and-final/index.html index 5cff3a81f3..fd890f9cfa 100644 --- a/tags/abstract-and-final/index.html +++ b/tags/abstract-and-final/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "abstract-and-final" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/activity-diagrams/index.html b/tags/activity-diagrams/index.html index 448cb172e3..5de1fc120d 100644 --- a/tags/activity-diagrams/index.html +++ b/tags/activity-diagrams/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "activity-diagrams" | Programmieren mit Java - +
    - + \ No newline at end of file diff --git a/tags/arrays/index.html b/tags/arrays/index.html index 0f3a2ce095..de97c7461c 100644 --- a/tags/arrays/index.html +++ b/tags/arrays/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "arrays" | Programmieren mit Java - +
    - + \ No newline at end of file diff --git a/tags/cases/index.html b/tags/cases/index.html index 6b74d2fb69..89110bf6d6 100644 --- a/tags/cases/index.html +++ b/tags/cases/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "cases" | Programmieren mit Java - +
    - + \ No newline at end of file diff --git a/tags/class-diagrams/index.html b/tags/class-diagrams/index.html index fb7a31df2b..46c5d11717 100644 --- a/tags/class-diagrams/index.html +++ b/tags/class-diagrams/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "class-diagrams" | Programmieren mit Java - +
    - + \ No newline at end of file diff --git a/tags/class-structure/index.html b/tags/class-structure/index.html index de2d9128c6..773ca28849 100644 --- a/tags/class-structure/index.html +++ b/tags/class-structure/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "class-structure" | Programmieren mit Java - +
    - + \ No newline at end of file diff --git a/tags/comparators/index.html b/tags/comparators/index.html index 013e1c989c..6141305369 100644 --- a/tags/comparators/index.html +++ b/tags/comparators/index.html @@ -4,13 +4,13 @@ 5 docs getaggt mit "comparators" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/console-applications/index.html b/tags/console-applications/index.html index ad55f056f7..38146ec378 100644 --- a/tags/console-applications/index.html +++ b/tags/console-applications/index.html @@ -4,13 +4,13 @@ 3 docs getaggt mit "console-applications" | Programmieren mit Java - +
    - + \ No newline at end of file diff --git a/tags/control-structures/index.html b/tags/control-structures/index.html index 78388e03c2..e35c8cce2a 100644 --- a/tags/control-structures/index.html +++ b/tags/control-structures/index.html @@ -4,13 +4,13 @@ 4 docs getaggt mit "control-structures" | Programmieren mit Java - +
    - + \ No newline at end of file diff --git a/tags/data-objects/index.html b/tags/data-objects/index.html index 175b9e7847..0af7908840 100644 --- a/tags/data-objects/index.html +++ b/tags/data-objects/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "data-objects" | Programmieren mit Java - +

    2 docs getaggt mit "data-objects"

    Alle Tags anzeigen
    - + \ No newline at end of file diff --git a/tags/dates-and-times/index.html b/tags/dates-and-times/index.html index 109d9532e3..e22aaef889 100644 --- a/tags/dates-and-times/index.html +++ b/tags/dates-and-times/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "dates-and-times" | Programmieren mit Java - +

    2 docs getaggt mit "dates-and-times"

    Alle Tags anzeigen
    - + \ No newline at end of file diff --git a/tags/enumerations/index.html b/tags/enumerations/index.html index 083e4da6e1..942c32eb0b 100644 --- a/tags/enumerations/index.html +++ b/tags/enumerations/index.html @@ -4,13 +4,13 @@ 10 docs getaggt mit "enumerations" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/exceptions/index.html b/tags/exceptions/index.html index 64b4002bd3..f2ef462820 100644 --- a/tags/exceptions/index.html +++ b/tags/exceptions/index.html @@ -4,13 +4,13 @@ 9 docs getaggt mit "exceptions" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/files/index.html b/tags/files/index.html index 19f9eb682f..48d1342361 100644 --- a/tags/files/index.html +++ b/tags/files/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "files" | Programmieren mit Java - +
    - + \ No newline at end of file diff --git a/tags/generics/index.html b/tags/generics/index.html index 29a2b8873f..681fc84402 100644 --- a/tags/generics/index.html +++ b/tags/generics/index.html @@ -4,13 +4,13 @@ 3 docs getaggt mit "generics" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index d7fc9874ae..b26e143772 100644 --- a/tags/index.html +++ b/tags/index.html @@ -4,13 +4,13 @@ Tags | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/inheritance/index.html b/tags/inheritance/index.html index 82b909320a..4832fc75a2 100644 --- a/tags/inheritance/index.html +++ b/tags/inheritance/index.html @@ -4,13 +4,13 @@ 13 docs getaggt mit "inheritance" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/inner-classes/index.html b/tags/inner-classes/index.html index abc39c2240..a8380a0b0d 100644 --- a/tags/inner-classes/index.html +++ b/tags/inner-classes/index.html @@ -4,13 +4,13 @@ 3 docs getaggt mit "inner-classes" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/interfaces/index.html b/tags/interfaces/index.html index c0c45b04d3..bcd7d018fa 100644 --- a/tags/interfaces/index.html +++ b/tags/interfaces/index.html @@ -4,13 +4,13 @@ 6 docs getaggt mit "interfaces" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/io-streams/index.html b/tags/io-streams/index.html index 2125261aca..b9e7590867 100644 --- a/tags/io-streams/index.html +++ b/tags/io-streams/index.html @@ -4,13 +4,13 @@ 8 docs getaggt mit "io-streams" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/java-api/index.html b/tags/java-api/index.html index ee135b3e80..ded617252c 100644 --- a/tags/java-api/index.html +++ b/tags/java-api/index.html @@ -4,13 +4,13 @@ 5 docs getaggt mit "java-api" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/java-stream-api/index.html b/tags/java-stream-api/index.html index cff293e42d..3d243882fb 100644 --- a/tags/java-stream-api/index.html +++ b/tags/java-stream-api/index.html @@ -4,13 +4,13 @@ 4 docs getaggt mit "java-stream-api" | Programmieren mit Java - +
    - + \ No newline at end of file diff --git a/tags/lambdas/index.html b/tags/lambdas/index.html index fc775b3571..1b6a8eaff2 100644 --- a/tags/lambdas/index.html +++ b/tags/lambdas/index.html @@ -4,13 +4,13 @@ Ein doc getaggt mit "lambdas" | Programmieren mit Java - +

    Ein doc getaggt mit "lambdas"

    Alle Tags anzeigen
    - + \ No newline at end of file diff --git a/tags/loops/index.html b/tags/loops/index.html index f3f450c5e0..651ad0086d 100644 --- a/tags/loops/index.html +++ b/tags/loops/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "loops" | Programmieren mit Java - +
    - + \ No newline at end of file diff --git a/tags/maps/index.html b/tags/maps/index.html index b596200771..73936d454b 100644 --- a/tags/maps/index.html +++ b/tags/maps/index.html @@ -4,13 +4,13 @@ 7 docs getaggt mit "maps" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/oo/index.html b/tags/oo/index.html index d8de8d93a0..40ec96ca00 100644 --- a/tags/oo/index.html +++ b/tags/oo/index.html @@ -4,13 +4,13 @@ 14 docs getaggt mit "oo" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/operators/index.html b/tags/operators/index.html index 9ac6cc94ac..9e04b9e7dc 100644 --- a/tags/operators/index.html +++ b/tags/operators/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "operators" | Programmieren mit Java - +

    2 docs getaggt mit "operators"

    Alle Tags anzeigen
    - + \ No newline at end of file diff --git a/tags/optionals/index.html b/tags/optionals/index.html index c26054bd5f..40fb22c67e 100644 --- a/tags/optionals/index.html +++ b/tags/optionals/index.html @@ -4,13 +4,13 @@ Ein doc getaggt mit "optionals" | Programmieren mit Java - +

    Ein doc getaggt mit "optionals"

    Alle Tags anzeigen
    - + \ No newline at end of file diff --git a/tags/polymorphy/index.html b/tags/polymorphy/index.html index 56f683312a..ddc3e0b2ca 100644 --- a/tags/polymorphy/index.html +++ b/tags/polymorphy/index.html @@ -4,13 +4,13 @@ 15 docs getaggt mit "polymorphy" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/programming/index.html b/tags/programming/index.html index 21523f8210..e5c267d81d 100644 --- a/tags/programming/index.html +++ b/tags/programming/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "programming" | Programmieren mit Java - +

    2 docs getaggt mit "programming"

    Alle Tags anzeigen
    - + \ No newline at end of file diff --git a/tags/records/index.html b/tags/records/index.html index de43a4ac19..e7b41fe044 100644 --- a/tags/records/index.html +++ b/tags/records/index.html @@ -4,13 +4,13 @@ 7 docs getaggt mit "records" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/uml/index.html b/tags/uml/index.html index d74fe1841c..d27109017a 100644 --- a/tags/uml/index.html +++ b/tags/uml/index.html @@ -4,13 +4,13 @@ 4 docs getaggt mit "uml" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/unit-tests/index.html b/tags/unit-tests/index.html index c929980c2a..f835dc8df2 100644 --- a/tags/unit-tests/index.html +++ b/tags/unit-tests/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "unit-tests" | Programmieren mit Java - + - + \ No newline at end of file diff --git a/tags/wrappers/index.html b/tags/wrappers/index.html index fb6325439f..53444e654f 100644 --- a/tags/wrappers/index.html +++ b/tags/wrappers/index.html @@ -4,13 +4,13 @@ 2 docs getaggt mit "wrappers" | Programmieren mit Java - +
    - + \ No newline at end of file