Praxisnahe Java Übungsaufgaben?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Es gibt durchaus einige Bücher, die zumindest Übungsaufgaben stellen. Doch wie praxisnah diese Aufgaben sind und ob diese Bücher tatsächlich empfehlenswert sind, kann ich nicht sagen. Schau da am besten selbst.

Hinsichtlich Webseiten schau einmal hier.

Eine andere Möglichkeit wäre es, sich Aufgaben indirekt herauszusuchen. Da gibt es bspw. sehr viele Bücher über Algorithmen, Datenstrukturen oder Design Patterns, die Anregungen liefern oder man sucht sich spezielle Themen heraus (Webprogrammierung, Spiele-Entwicklung, ...) und bekommt so eine Idee (und mit einem Buch/Tutorial vielleicht auch Guidelines) für eigene kleine Projekte.

Ansonsten kann ich dir im Folgenden noch ein paar Aufgaben schreiben, die sich sehr gut als Übung eignen sollten. Ich werde dazu schreiben, welche Grundlagen du dazu auf jeden Fall benötigst. Ohne diese wirst du in den jeweiligen Aufgaben nicht weiterkommen. Explizit nach Schwierigkeit habe ich nicht geordnet.

Des Weiteren wäre es gut, wenn du in dieser Hinsicht auch immer noch das Planen von Projekten übst, indem du dir im Vorfeld entsprechende UML-Diagramme anlegst (Aktivitätsdiagramm(e) und - sofern OOP benötigt wird, zusätzlich Objekt-/Klassendiagramm(e)). Ein einfaches drauflos hacken (dt. ausgesprochen - etwas anderes wäre es dann ja auch nicht) würde ich als vorzeitiges Scheitern an einer Übungsaufgabe definieren.

In den meisten Fällen wirst du zudem noch einiges recherchieren müssen.

1) Pacman

Beginnen wir einfach, die Spielregeln müssten, denke ich, nicht groß erklärt werden. Natürlich kann man das ganze Spiel nun in einer Klasse gebündelt einmal heruntercoden, doch Ziel wäre eher eine objektorientierte Lösung. Am Ende wäre es wünschenswert, wenn man einen Level recht flexibel zusammenbauen könnte. Die gewünschte Konfiguration legt ein Nutzer dazu in einer Konfigurationsdatei fest. Schau dir die Abstract Factory dazu an. Die grafische Umsetzung bleibt dir überlassen. Du kannst Processing einbinden, Swing nutzen, o.ä..

Techniken, mit denen du dich in diesem Zuge auseinandersetzen kannst/musst:

  • OOP
  • Abstract Factory (Design Pattern)
  • Swing / eine externe Grafikbibliothek
  • Java Properties

2) Ein Chat als Desktop-Anwendung

  • Beide Seiten können sowohl Server, als auch Client sein. Insgesamt ist es möglich, dass n Nutzer miteinander kommunizieren.
  • Der Chat-Verlauf lässt sich serialisieren und wieder laden. Als Datenquelle kannst du dem Nutzer entweder verschiedene Möglichkeiten anbieten (XML, Datenbank, ...) oder es wird ein intelligentes System entwickelt, welches Daten temporär in einer Datei und langfristig in einer Datenbank speichert.
  • Der Nutzer hat die Möglichkeit, seinen Text zu formatieren. Primitive Styles reichen hierbei völlig aus (z.B. fett / kursiv gedruckter Text). Aber vielleicht bringst du auch Textfarben mit ein - z.B. um die verschiedenen Nutzer besser untereinander unterscheiden zu können.
  • Die Anwendung verfügt über eine grafische Oberfläche.

Techniken, mit denen du dich in diesem Zuge auseinandersetzen kannst/musst:

  • Serialisierung (Datenbanken; für XML kannst du dich einmal über SAX und StAX kundig machen, schau generell einmal hier)
  • Datenformate (wie XML - lege dir hier ein eigenes Schema an und validiere eine XML daraufhin, bevor du einen Import erlaubst), Datenbanken
  • Swing / JavaFX
  • Server-Client-Architekturen (beginne mit Sockets und wenn das klappt, dann schreibe die Anwendung so um, sodass die Verbindung RMI nutzt)
  • Design Patterns (MVC, Observer, ...)

Unbedingt erforderlich sind bereits Kenntnisse über OOP.

Diesen Chat kannst du nun natürlich noch an allen Ecken und Enden erweitern - sei es in den Möglichkeiten der Nutzerverwaltung (Freundesliste, Ignorierliste), der Textformatierung (Senden von Bildern, Emoticons, u.ä.) oder mit solchen Funktionalitäten wie einer Suche (die intern XPath verwendet?). Dies ist alles aber dir überlassen.

3) Ein Text-Analyzer

Der Nutzer kann eine Webseite seiner Wahl eingeben. Die Anwendung crawlt daraufhin den Inhalt der Webseite und wertet die Worte aus, die sich im Contentbereich der Webseite befinden (d.h. HTML-Tags bspw. werden nicht gezählt). Der Nutzer kann sich hierbei z.B. anzeigen lassen, welche Worte am häufigsten oder wenigsten verwendet werden (sinnvoll wäre hier ein Filter wie - die Top 5). Hübsch wäre dazu noch eine grafische Darstellung und wenn der Nutzer es möchte, kann er die Daten speichern und später wieder laden, um sie mit Daten einer anderen Webseite zu vergleichen. Außerdem könnte eine Suchfunktion integriert werden (existiert Wort x auf Webseite y?)

Techniken, mit denen du dich in diesem Zuge auseinandersetzen kannst/musst:

  • Webcrawling (HTTP Request abschicken und Response auswerten)
  • Einmal wieder Parsen einer auf SGML-basierenden Sprache, diesmal HTML (s. hier auch die Informationen, die ich bereits für 2) diesbezüglich erwähnt habe)
  • Serialisierung
  • Mapping / Datenstrukturen
  • Ein Tool zum Zeichnen von Diagrammen (z.B. JFreeChart)
  • Swing / JavaFX

Einmal wieder sind Kenntnisse über die OOP erforderlich.

4) Ein Übersetzungsprogramm

Vorweg - dieses dient nur der Übung. Diesmal kann der Nutzer einen deutschen oder englischen Text in ein Textfeld eintragen und diesen dann in Deutsch/Englisch übersetzen lassen. Das Programm schickt dazu einen Request zu einer von dir beliebig gewählten, (natürlich kostenlosen) Webseite, die Übersetzungen anbietet (so wie es dict.cc oder Google Translate tun). Bestenfalls findest du eine API, die diesen Service anbietet. Das Ergebnis wird schließlich in einem Label der Anwendung angezeigt.

Diese Aufgabe ist damit ähnlich wie 3), nur dass du dich diesmal etwas mehr mit HTTP Requests auseinandersetzen musst.

5) Ein Webkalender

Der Nutzer kann über eine Weboberfläche Termine eintragen, bearbeiten und entfernen. Des Weiteren kann er sie natürlich einsehen, ihm steht eine Übersicht zur Verfügung (ob in Tagen/Wochen/Monaten/... überlasse ich dir).

echniken, mit denen du dich in diesem Zuge auseinandersetzen kannst/musst:

  • HTML
  • Java Servlets / JSF / JSP
  • Datenbanken
  • Du kannst für zeitliche Operationen die Klasse GregorianCalendar verwenden oder eine der neueren Klassen von Java
  • MVC (Design Pattern)

Ein Tipp von meiner Seite noch dazu: Deine Entwicklungsumgebung hat evt. bereits Tools integriert, die dir einige Konfigurationen ersparen. NetBeans IDE bspw. hat einen Glassfish Server und eine Apache Derby-Datenbank mit in sich. Eclipse evt. ebenso (z.B. Wildfly). Andernfalls könntest du dir das Softwarepaket XAMPP installieren und dann mit MySQL/MariaDB und der Apache Tomcat-Erweiterung als Server arbeiten.

Wie in allen vorherigen Aufgaben sind Kenntnisse über die OOP notwendig.

6) Eine Anwendung, die das Festlegen von MP3-Tags erlaubt.

Der Nutzer hat hierbei die Wahl zwischen zwei verschiedenen grafischen Oberflächen: Desktop oder Webseite. Die eingegebenen Daten (Songtitel, Jahr, Albumcover, Albumname, u.ä. sowie natürlich die Musikdatei) werden zu einem Server geschickt, der die Daten schließlich einsetzt.

Techniken, mit denen du dich in diesem Zuge auseinandersetzen kannst/musst:

  • HTML
  • Java Servlets / JSF / JSP
  • Swing / JavaFX
  • Du solltest dir einmal wieder eine externe Bibliothek suchen, die das Setzen von MP3-Tags einer Datei erlaubt
  • Java Beans, JavaEE
  • MVP (Design Pattern)

Ich muss dazu sagen: Diese Aufgabe ist nicht leicht. Aufgabe 5 diente da noch als Vorbereitung, die Themenfelder von JavaEE und Java Beans erfordern sehr viel Recherche deinerseits. Torsten Horn (bereits oben verlinkt) sollte dazu noch einige Tutorials/Artikel geschrieben haben.

7) Tic Tac Toe mit Negamax-Algorithmus

Erneut keine so einfache Aufgabe, diesmal jedoch schlägt sie in eine andere Richtung. Für den Anfang kannst du ja einen menschlichen Spieler gegen den PC antreten lassen, später vielleicht auch PC vs PC. Der Computer soll mittels Negamax-Algorithmus eine Strategie zur Hand haben, wie er am besten spielen kann. Zuvor kannst du dich mit dem Minimax-Algorithmus beschäftigen, dieser ist etwas einfacher.

Hier musst du dich mit Alpha-Beta-Pruning auseinandersetzen. Wissen über die Datenstruktur Baum wäre von Vorteil.

8) Berechnung des kürzesten Weges anhand eines Graphen

Stelle einen Graphen dar, indem du dessen Bestandteile beschreibst und dann einen konkreten Graphen anlegst. Es gibt Vertices (Knotenpunkte mit einem Wert), welche über Kanten (Verbindungslinien mit einem Wert) miteinander verbunden sind. Nun soll der Computer berechnen, wie lang die Strecke von einem bestimmten Vertex zu einem anderen Vertex ist. Die Berechnung der Weglänge addiert sich aus Vertexwert und Kantenwert.

Den Graph solltest du mittels eines objektorientierten Modells beschreiben. Im Folgenden wäre der Dijkstra-Algorithmus anzuwenden (schau auf die zugehörige Wikipedia-Seite). Diese Übung erfordert einmal wieder mehr den Einsatz von Logik und eine gute Herangehensweise an Probleme.

9) Geometrie-Berechnungen

Etwas einfaches: Der Nutzer soll zwischen verschiedenen geometrischen Objekten im zwei- oder dreidimensionalem Raum wählen und zu diesen Berechnungen anstellen können. Beispielsweise die Berechnung einer dritten fehlenden Seite, fehlender Winkelwerte, u.ä..

Um dieser Aufgabe etwas mehr Anforderung zu verleihen, wäre eine grafische Oberfläche nicht zu verachten.

10) Notenspiegel

Hierzu muss ich wohl kaum etwas sagen - wie bei der vorherigen Aufgabe wäre eine GUI ganz nett. Ansonsten eignet sich diese Übung, um nochmals Grundlagen zu stabilisieren. Damit die Schwierigkeit steigt, könntest du die Datenstruktur wechseln und diese selbst implementieren (z.B. einen Stack oder eine Liste).

11) Adressbuch

  • Ein Nutzer kann Adressen speichern / bearbeiten / entfernen.
  • Es gibt verschiedene Adresstypen: Freunde (zu denen man zusätzliche private Informationen eintragen kann), Ärzte (haben bestimmte Gesprächszeiten sowie eine eigene Webseite) und Geschäftspartner (haben bestimmte Gesprächszeiten)
  • Sortierung nach bestimmten Aspekten (Name, Vorname, Straßenname, etc.) möglich - einmal über eigene Methoden (z.B. Quicksort für Namen, Slowsort für Postleitzahlen, usw. ....) und einmal via Arrays.sort (genau diese Überladung!).
  • Die Serialisierung in eine CSV-Datei ist möglich.
  • Die Adressen werden in einer selbst implementierten Datenstruktur gelistet (Liste / Stack / Queue / Baum / ...).

Womit du dich beschäftigen musst:

  • OOP (dazu ist die Aufgabe perfekt)
  • Strategy (Design Pattern)
  • CSV-Format und Serialisierung
  • Sortierverfahren

Die Grundlagen sollten in dem Zuge ebenso weiter verfestigt werden.

12) Ein sich selbst ausbalancierender AVL-Baum

Diese Baumstruktur balanciert ihre Knoten selbst aus, sobald ein neues Element hinzugefügt, verändert oder entfernt wird. Jeder Knoten speichert ein Objekt Person (mit entsprechenden Eigenschaften). Zudem kann jeder beliebige Knoten, den man angibt, rekursiv ausgegeben werden.

Relevante Themenfelder:

  • Datenstruktur AVL-Baum
  • OOP
  • Rekursion / rekursive Traversion
  • toString

--------------

Ich denke, für den Anfang reicht das erst einmal. Bei Bedarf nach weiteren Übungsaufgaben oder Fragen, kannst du mir ja einen Kommentar unter die Antwort schreiben.

Wenn du die Basics kannst solltest du einige eigene Projekte - auch kleinere - umsetzen.

Übungsaufgaben sind entweder nicht realistisch oder so groß, dass du auch gleich n richtiges kleines Projekt umsetzen kannst.

22

Kann ich so unterschreiben

0
2

Hast du ein Beispiel für ein Projekt? Am besten eins, in dem man keine Grafiken braucht.

Habe bisher leider nur mathematische Probleme und Sortierprobleme, o.ä. gelöst.

0
43
@PittDerSchoene

Kannst die die ganzen Grundlagen? Kontrollstrukturen, OOP? Interfaces etc?

0
2
@triopasi

Die ganzen basics habe ich gelernt. Bei einigen Themen gibt es Nachholbedarf, aber das möchte ich bei praxisnahen Projekten üben.

0
19
@PittDerSchoene

Dann suche dir ein Open source Projekt. Dadurch lernst du frameworks kennen und kriegst Rückmeldung zu deinem Code.

0

Java Einsteiger Buchempfehlung?

Hallo Community, 

Ich suche ein Buch, womit man als kaltblütiger Anfänger ohne Vorkenntnisse Java lernen kann. Es sollte nicht gerade 50 Euro kosten, aber schon lernbares enthalten sein, somit man schon gut anfangen kann, ein bisschen zu programmieren. Wäre ganz gut, wenn mit Link und/oder ISBN.

Danke schon mal im voraus!

MfG

Baumiork 

...zur Frage

Kennt jemand ein gutes Buch in dem einem die GUI Programmierung mit Java erklärt wird?

Kennt jemand ein Buch in dem es erklärt wird wie die GUI Programmierung in Java funktioniert ?

Danke LG blazedereskann

...zur Frage

Hallo wie lang denkt ihr brauch ich um Java zu lernen?

Ich hab mir das Buch Schrödinger programmiert Java gekauft. Und da wollt ich fragen wie lang ich brau bis ich mal einen Taschenrechner Programmieren kann . Oder so dass erste etwas größere Programm oder ein Spiel. Danke schon mal im Voraus. Wenn ich Tipps habt wie man das beschleunigen kann oder auch noch gut lernen dann wäre es net mir diese zu geben. Sorry für meine Rechtschreibung.

...zur Frage

Kennt ihr C++/Java Übungsaufgaben für Anfänger oder weniger komplexe Fortgeschrittenen-Aufgaben?

Guten Tag,

ich bin Azubi als Fachinformatiker Fachrichtung Anwendungsentwickler. Derzeit haben wir in der Firma einen Praktikanten, dem ich einiges an C++ und Java "beibringen" soll. Dieser soll so die Grundkenntnisse beider Programmiersprachen kennenlernen. Wie man sich denken kann, gehen einem da nach einiger Zeit die Ideen aus. Ich habe ihm bestimmt schon zwischen 20 und 30 kleinere Aufgaben gegeben, die er auch mehr oder weniger effizient löste.. Nun gehen mir die Ideen aus.. hat jemand evtl. Anfänger-Aufgaben oder ähnliches? Oder benötigt jemand ein kleines Programm? Würde mich sehr über Antworten freuen.. Unter Java Können es auch kleine GUI/Swing Aufgaben sein.. dort hab ich Ihm auch schon weniger komplexe Aufgaben gegeben und ihm unter die Arme gegriffen.

Vielen Lieben Dank und angenehmen Tag :) LG AngehenderITler

...zur Frage

Fachkraft für Lagerlogistik- Prüfungsvorbereitung?

Hallo, wer kennt sich aus? Suche Internetportale bzw. Literatur mit Übungsaufgaben im Bereich Fachrechnen, insbesondere Übungsaufgaben zum Thema Ladungssicherung, Berechnung der Zurrmittel und Berechnung der Lastverteilung, Übungsaufgaben mit Lösung!! ..gibt`s im Buch so gut wie gar nicht...nur theoretisches bla bla.. Danke für die Info,

...zur Frage

.java datei in .class Datei umwandeln

Hallo, ich möchte eine .java Datei in eine.class Datei umwandeln, kann das aber nicht mit javac.exe, weil die Datei Fehler enthält, diese Fehler sind aber erwünscht

Kennt jemand eine Methode um die Datei einfach nur umzuwandeln?

Danke Schonmal im voraus.

...zur Frage

Was möchtest Du wissen?