Aufgabenblatt 9: JDK / Objektorientierung

Aufgabe 9.1: Palindrome erkennen

Palindrome 1 sind Wörter oder ganze Sätze, die sich von vorwärts wie rückwärts gleich lesen, z.B. "Ebbe", "Lagerregal" oder "Nie leg Raps neben Spargel ein!".

Schreiben Sie eine Klasse PalindromChecker, welche untersucht, ob eine Zeichenkette ein Palindrom ist.

Gehen Sie wie folgt vor:

  • Implementieren Sie zunächst eine Methode boolean isPalindromWort(String s), die prüft ob ein übergebener Text ein exaktes Palindrom ist, unter Beachtung von Groß-/Kleinschreibung.

    Die Methode liefert z.B. für "nennen" true und für "Ebbe" false zurück.

  • Implementieren Sie eine Methode boolean boolean isPalindromWortCaseInsensitive(String s), die Groß-/Kleinschreibung ignoriert.

    Die Methode liefert z.B. für "Ebbe" true, aber für "Alle Bananen, Anabella!" false zurück.

    Tipp: Nutzen Sie die Methode toLowerCase() der Klasse String, um in einer Zeichenkette alle Großbuchstaben in Kleinbuchstaben umzuwandeln.

  • Schreiben Sie eine Methode boolean isPalindrom(String s), die auch die Sonderzeichen (Leerzeichen), ., ,, !, ? und : ignoriert und auch für die genannten Sätze true zurückgibt.

Erstellen Sie begleitend eine Testklasse, um Ihr Programm zu testen! Beispiele für Palindrome finden Sie unter https://de.wikipedia.org/wiki/Liste_deutscher_Palindrome.

Vermeiden Sie doppelten Quelltext. Jede der Methoden kann die vorher geschriebene Methode aufrufen und nutzen!

Aufgabe 9.2: Roulette Objektorientiert

Überarbeiten und erweitern Sie Ihr Roulette-Spiel von Aufgabenblatt 6!

Das Spiel soll um folgende Möglichkeiten ergänzt werden:

  • Spiel mit einer beliebigen Anzahl von Spielern (eingeben zu Beginn des Spiels), die in jeder Runde setzen können. Spieler, die pleite sind dürfen nicht mehr mitspielen. Das Spiel endet, wenn der letzte Spieler kein Kapital mehr besitzt.

  • Alternativ zum Setzen auf Zahlen, soll auch ein Setzen auf gerade/ungerade Zahlen und niedrig (1-5)/hoch (6-10) möglich sein. Bei Gewinn erhält der Spieler den doppelten Einsatz zurück. Fällt die 0 gewinnt der Spieler in keinem Fall.

Bevor Sie diese zusätzlichen Funktionalitäten hinzufügen, strukturieren Sie Ihr Programm so um, dass es aus mehreren Klassen besteht. Überlegen Sie sich dazu zunächst, welche Klassen nötig sein sollten, welche Daten jeweils gespeichert werden und welche Abläufe/Methoden in welche Klasse gehören.

Sinnvoll sind mindestens die Klassen RouletteSpiel (steuert den Spielablauf), Spieler (verwaltet Daten und Abläufe einzelner Spieler) und Croupier (rollt die Roulettekugel und wertet Gewinne der Spieler aus).

Sie können das Spiel auch gerne um zusätzliche Features erweitern!

Nutzen Sie keine static-Methoden (abgesehen von main)!