Java Projekte zum lernen?

3 Antworten

Bisher kann ich ein wenig mit arrays, Java Swing, schleifen, und Mathe Operatoren arbeiten. (Grundkenntnisse sind glaube ich weitestgehend vorhanden)

Also nach weitestgehend vorhandenen Grundkenntnissen hört sich das noch nicht an. Was ist mit Funktionen, mit Verzweigungsstrukturen, mit Enums, den Grundlagen der objektorientierten Programmierung (Kapselung, Polymorphie, Vererbung, Interfaces, etc.)? Das Inhaltsverzeichnis von Java ist auch eine Insel gibt eigentlich einen guten, groben Überblick darüber, was unter Grundlagenkenntnissen fällt. Da würde ich (grob und großzügig überschaut) für die Sprache mindestens Kapitel 2 und 3 benennen.

Habt ihr paar Anfänger Projekte, die hilfreich wären? 

Ich schreibe einmal auf, was mir einfällt und versuche, es nach einzelnen Sektionen zu sortieren.

Einfache Grundlagen und Algorithmen:

  • Ermittlung des längsten Namens (Nutzer kann n Namen eingeben - die Anzahl ist also nicht vordefiniert; die Namen sollen in einem Array gespeichert werden, welches nie länger ist als die konkret definierten Elemente; bei Eingabe einer Zahl stoppt die Aufnahme und der längste Name wird ermittelt; bei gleichen Längen zählt das erste Vorkommen)
  • Quersummenberechnung
  • Ein Rechner (kann auch zwischen verschiedenen Zahlensystemen konvertieren)
  • Eigenimplementationen zu String-Funktionen (reverse, replace, removeChar, addChar, insertChar, substring, indexOf, ...)
  • Ein Programm zur Berechnung eines Notenspiegels
  • Ein Programm, welches doppelte Wörter aus einem eingefügten Text entfernt
  • Ein Programm, welches Wörter in einem eingefügten Text sucht
  • Caesar-Verschlüsselung
  • Vigenère-Chiffre
  • Zahlen raten (Zahl rät eine Zahl zwischen 0 und 1000 in möglichst wenigen Schritten, er darf dabei nur Ja-Nein-Fragen an den Nutzer stellen)
  • Ein Programm, welches Wörter eines eingefügten Textes alphabetisch (o.a.) sortiert (schreibe dafür eine eigene Sortierfunktion oder biete verschiedene an (Bubble-Sort, Quicksort, Mergesort, Selection Sort, Slowsort, ... - hier findest du eine Übersicht, welche es so gibt, auf den konkreten Seiten finden sich die Algorithmen - allerdings solltest du dir erst selbst Gedanken darüber machen, wie ein Algorithmus dazu aussehen kann, lies dazu die jeweiligen Beschreibungen zum Ablauf)
  • Ein Programm, welches Wörter in einem Text mittels binärer Suche sucht
  • Ein Wecker / Mini-Kalender
  • Minispiele wie: Pong, Conways Game Of Life, Vier gewinnt, Hangman, Peg Solitaire, TicTacToe, Space Invaders, Tetris Pacman - grafisch mit Processing gut umsetzbar, der Kern lässt sich auch als Bibliothek in Java-Projekte einbinden
  • Blur-Effekt (mit Processing)
  • Suchprogramm von Dateien in einem gegebenen Dateipfad

Funktionen der Standardbibliothek solltest du bei diesen Aufgaben nicht gebrauchen, sondern möglichst eigene Lösungen finden. Ausnahmen wären lediglich Funktionen wie length, charAt, toCharArray oder Casting-Funktionen.

Grundlagen der OOP sowie Datenstrukturen:

  • Ein einfaches Kartenspiel (Uno / Mau-Mau, Black Jack)
  • Eine Wegberechnung (kürzester Weg von A nach Z) via Dijkstra-Algorithmus (dies baut auf einem Netzsystem auf, jede Kante hat eine Länge und jeder Knoten einen Namen - nutze für diese Grundstruktur OOP)
  • Entwicklung einer eigenen dynamischen Liste
  • Entwicklung einer eigenen dynamischen, zirkulären Liste
  • Anwendung des Iterator Pattern auf eine dynamisch zirkuläre Liste
  • Entwicklung eines Stacks
  • Strategy Pattern: Erstelle ein Objekt, welches Daten (Personen) aufnimmt und nach Belieben sortiert werden kann. Dafür ist es möglich, verschiedene Objekte zu übergeben, die definieren, wie sortiert werden soll (bspw. ein Objekt, welches bestimmt, dass die Sortierung nach Alter absteigend verläuft - ein anderes Objekt wiederum könnte die aufsteigende Sortierung nach Name fordern)
  • Entwicklung einer ausbalancierten Baumstruktur (d.h., der Baum balanciert sich selbst aus, sobald ein Element hinzukommt oder entfernt wird)
  • Binäre Suche für oben genannte Baumstruktur
  • Schach (mit Alpha-Beta-Pruning)
  • Aufgaben für Polymorphie und Vererbung

Aufgaben für Swing sowie Design Patterns:

  • Erstellen eines Formulars mit dem GridBagLayout; das Formular beinhaltet verschiedene Elemente (Radiobuttons, Checkboxen, Button, Label, Textfelder) und ist scrollbar.
  • Erweiterung des einseitigen Formulars zu einem mehrseitigen Formular. Für diesen Wechsel zwischen den Seiten werden die Elemente nicht einzelweise ausgeblendet.
  • Memory
  • Implementation eines Booking-Tools (Autoverkauf / Hotel- oder Urlaubsbuchung / ...).
  • Abstract Factory: Über eine grafische Oberfläche mit mehreren Comboboxen kann sich ein Nutzer eine Welt nach Wunsch erschaffen (oder einen Film / Buch / Produkt / Tier / Kleidungsstil / was auch immer). Verwende hierzu das Abstract Factory Pattern.
  • Eigenimplementation von Singleton
  • Eigenimplementation des Dekorator-Pattern (ein Fahrzeug soll um verschiedene Funktionalitäten erweitert werden; welche, ist dir überlassen)
  • Implementation einer Combobox mit Autosuggest-Funktion (das heißt, der Nutzer kann in ein Textfeld etwas eingeben und ungefähr nach 3 Buchstaben werden ihm Vorschläge zu bestehenden Werten angeboten)
  • Schiffe versenken (+ Spielen über Netzwerk: Sockets / RMI)

GUI Builder und Null-Layout sind selbstredend nicht erlaubt.

Weitere praxisnahe Übungsaufgaben, die ich schon einmal aufgestellt habe, findest du hier.

Auf Nachfrage (falls die Aufgaben zu einfach/langweilig/unpassend erscheinen) fällt mir sicherlich noch mehr ein. Solltest du Fragen zu den Aufgaben selbst haben, schreibe gern einen Kommentar.

Zuletzt noch externe Webseiten mit Übungsaufgaben:

gamestar4124 
Fragesteller
 24.10.2018, 08:32

danke, das wird mich ne ganze Weile beschäftigen 😅

regex9  17.01.2021, 15:58

Beim Zahlen-raten soll natürlich der Computer die Zahl raten, und nicht die Zahl eine Zahl.^^

Eine Hotelverwaltungssoftware zum Beispiel

gamestar4124 
Fragesteller
 23.10.2018, 21:05

ich kann mir da Grade nichts wirklich drunter vorstellen, meinst du, dass man eine Übersicht über verbuchte Zimmer und nicht verbuchte Zimmer hat?

Eine Buchungssoftware

Zunächst könntest Du grundlegende Funktionen implementieren:

  • Erstellung von Konten
  • Buchungen durchführen (korrekte Buchungssätze beachten)

Im Anschluss könnte das Programm natürlich noch erweitert werden: Schlussbilanzkonto etc.

Woher ich das weiß:Berufserfahrung
gamestar4124 
Fragesteller
 23.10.2018, 21:05

was kann ich unter korrekte Buchungssätze verstehen?

milos2  23.10.2018, 21:09
@gamestar4124

Immer von Soll an Haben buchen. Falls Du dich mit Buchführung nicht auskennst, dann wäre das Projekt eher ungeeignet. Oder Du lernst Buchführung.