Ideen Java

Crimson_Sabbath

Lt. Junior Grade
Dabei seit
Nov. 2011
Beiträge
492
Hallo zusammen,

vom Studium aus steht im übernächsten Semester Java an.
Bzw: In diesem steht Grundlagen in Java an (an sich: Schleifen, Konstruktoren, Grundlagen... Ausgabe im Dos-Fenster), im übernächsten steht die Programmierung mit Visualisierung an.
Da das ganze Semester echt hart wird und das nächste etwas lockerer wird kam ich (und noch ein paar andere) auf die IDee evtl. schon vorzuarbeiten (echt krank... ich weiß^^).

Ziel des Semesters ist es ein Eigenständiges Programm zu schreiben.
Mir fehlen nu gerade die Ideen.
Man kann natürlich eine Datenbankverwaltung machen.
ODer eine Brettspiel programmieren (wobei das natürlich schon sehr Zeitaufwendig ist und verdammt viel Skill verlangt).
Ich wollte gerade etwas machen was auch einen gewissen Sinn hat.

Da ich League of legends spiele dachte ich evtl. an einen Timer für den Jungle (falls es hier jmd. was sagt^^).

Da n paar Kollegen und ich mit DSA anfangen wollten käme auch n Würfelprogramm in Frage (natürlich mit der Auswahl der richtigen Würfel. Evtl. auch irgendwas in die Richtung "bei einer Stärke von 19 würfelst du mit 2W6 und einem "8" oder so was.

Gibt es hier jmd. der noch weitere Ideen hat?
Mir widerstrebt es einfach irgendwas zu programmieren was ich später überhaupt nicht nutzen kann. Gerade bei einer CD-Verwaltung... da fehlt eindeutig der Praxisbezug.
Auch wenn ich weiß das es schwierig ist für Leute die man nicht kennt geeignete Projekte zu finden. Aber hier gibt es sicher den einen oder anderen der so was schon mal gemacht hat und evtl. noch n kleines Projekt im Hinterkopf hat.

Schon mal vielen Dank im voraus
 

novle

Banned
Dabei seit
Dez. 2012
Beiträge
620
sie froh wenn du ein programm schreibst darfst, dass nicht zu schwer für dich wird als anfänger :evillol:
 

DasBoeseLebt

Lieutenant
Dabei seit
Jan. 2010
Beiträge
686
Wenn du viel lernen willst, dann schreib nen Programm was dynamisch aus Größe des Teilnehmerfeldes ein Turnierplan entwickelt.
(Mit verschiedenen Modi für jede Turnierart). Und Teilnehmer können auch Gruppen sein mit x-Spielern.

Für Anfänger aber wohl zu hart(komplex) und alleine ist das auch nicht gerade wenig.


Fang halt klein an, man schreibt immer am Anfang Sachen die man nicht brauch (man lernt die Sprache halt und das geht nur an sinnvollen Beispielen)
 
Zuletzt bearbeitet: ((komplex))

Crimson_Sabbath

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2011
Beiträge
492
@ novle: Ich bin auch froh drüber. Dennoch wollte ich gerne was machen was man später auch mal verwenden kann. Da wollte ich eifnach mal bei denen nachfragen die schon mehr Ahnung / Ideen haben was man machen könnte.

@ Boese: Und viel lernen will ich nicht unbedingt, es geht mir darum das es interessant ist. Klar, Programmieren ist total interessant und macht Spaß, aber: es ist nur n Fach fürs Studium, evtl. wenn ich mal Zeit habe werde ich die Kenntnisse vertiefen und ein wenig fürs Handy programmieren^^
 

novle

Banned
Dabei seit
Dez. 2012
Beiträge
620
fang erstmal klein an, danach kannst du größere programme versuchen
 

xSeppelx

Lt. Junior Grade
Dabei seit
Sep. 2009
Beiträge
383
Mach dir einen sauberen Plan und zieh das richtig auf von Anfang an.
Mach doch eine CD-Verwaltung am Anfang... mit ner DB, dann hast du beides mal gemacht.
Statt CDs nimmst du was gängigeres (Serien, Spiele, Filme...)
 

Zeroflow

Lt. Commander
Dabei seit
Juli 2006
Beiträge
1.861
Ich kann dir http://projecteuler.net/ empfehlen.
Da haben die Programme zwar keinen "richtigen" Sinn, aber sind extrem gute Aufgaben um sich sowohl auf eine neue Sprache einzuarbeiten, als auch um generell Programmieren zu lernen.

Und was mir daran gefällt - je nach Übung ist man im Schnitt nach spätestens 15min fertig - was für die Motivation schon besser ist als wenn man selbst nach 10h noch nicht wirklich was davon sieht.

Programme für CD Datenbanken und so brauchen auch immer gleich DB Design und vieles mehr - und zum Programmieren lernen sind kleine Übungs-Programme am Sinnvollsten.
 

LinuxMcBook

Banned
Dabei seit
Juli 2008
Beiträge
4.595
Und denk bloß daran, wirklich Objekt orientiert zu programmieren, falls es bei Java überhaupt möglich ist, das nicht zu tun...
Wenn du erstmal eine Sprache ohne OOP lernst, dann bist du für immer verdorben.
Naja fast :D
 

Crimson_Sabbath

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2011
Beiträge
492
Projekteuler schaue ich mir mal an.

Aber: Gibt es hier keine direkten Vorschläge was man machen könnte? :D
Wie z.B.: Programmier mal ein Mensch ärger dich nicht Spiel, das ist relativ simple und interessant :D.
 

DasBoeseLebt

Lieutenant
Dabei seit
Jan. 2010
Beiträge
686
Egal was du machst, du programmierst kacke und wirst es nicht wieder brauchen/benutzen.

Davon kannst du ausgehen, deshalb fang doch einfach mal an.

edit:
ps: Es ist einfach so, dass du, wenn du etwas neues lernst nicht gleich gut darin bist noch alles weißt.
Wenn ich mir Code von früher anschaue, dann denk ich auch 'omg' ;)
 
Zuletzt bearbeitet:

benneq

Admiral
Dabei seit
Juli 2010
Beiträge
9.000
Vorne weg: http://openbook.galileocomputing.de/javainsel/
Online lesen, runterladen und lesen oder als Buch kaufen und lesen. Auf jeden Fall, solltest du ein Buch über Java gelesen haben. Und achte darauf, dass es nicht zu alt ist: Java 6 oder 7 (oder beides) sollte es bieten. Die Unterschiede sind nicht so gravierend. Das oben genannte ist ziemlich beliebt (wahrscheinlich auch weil es kostenlos ist ;) ) und für Einsteiger definitiv empfehlenswert. Ich nutze die online-Version selbst dann und wann als Nachschlagewerk für einfache Dinge, die man nicht jeden Tag macht.


Vokabular: Das lernt man größtenteils in den Büchern, wobei da manchmal auch große Sprachnazis am Werk sind, die versuchen jeden (Fach-)Begriff einzudeutschen. Das ist natürlich nicht hilfreich, wenn man im Internet nach Lösungsansätzen sucht.


Ausprobieren und lernen von anderen führt zu einfachem - d.h. in 90% Falle gutem - Code: Ich selbst nutze meist einfach die Google-Suche. Die führt einen in 90% der Fälle zu StackOverflow: http://stackoverflow.com/
Wenn du als Einsteiger Fragen hast, die dort nicht beantwortet wurden, dann stimmt höchstwahrscheinlich dein Vokabular nicht ;) Aber auch dann kann man dort eine Frage stellen und oft hat man innerhalb von 30-60 Minuten eine oder gleich mehrere gute Vorschläge.


Für später: Wenn du ein eher allgemeines Problem lösen willst, dann gibt es garantiert eine Bibliothek dafür. Z.B. um XML Dateien zu parsen. Wenn du dich nun selbst hinsetzt und den Code schreiben willst, stehst du vor mehreren Problemen: Es kostet viel Zeit, dein Code kann am Ende wahrscheinlich nur das, was du brauchst und setzt nicht die komplette Spezifikation um UND(!) er wird garantiert den ein oder anderen Bug beinhalten. Der Vorteil einer fertigen Bibliothek ist im Normalfall: Sie wurde schon von hunderten oder tausenden Leuten getestet und da diese Leute alle andere Anforderungen haben, ist er sehr wahrscheinlich auch vollständig und weitestgehend fehlerfrei. Und das einlesen dauert meist nur ein paar Minuten.
Als Einsteiger empfehle ich dir aber trotzdem so manche Sachen selbst zu schreiben. Dann siehst du was an Arbeit dahinter steckt und viel wichtiger: Übung!! Wenn man dann vor einem riesigen Berg steht, schaut man in die bereits fertigen Bibliotheken (also in den source-code) und findet auf einmal extrem nützliche Java-Klassen, die man vorher noch nicht kannte oder ganz andere Herangehensweisen.


Design-Pattern: Sobald du dich an etwas größeres wagen willst, ist es sehr wichtig diverse Design-Pattern zu kennen und einsetzen zu können. Ich selbst nutze die meisten intuitiv und tu mich mit den Namen schwer. Wichtig ist aber, dass man weiß, wie man bestimmte Probleme angehen kann. Hier stehen sehr viele (wie gesagt: wichtig sind die englischen Namen): http://de.wikipedia.org/wiki/Entwurfsmuster#Liste_von_Mustern
Mir sagen vom Namen her nur wenige etwas, aber darauf möchte ich mich bei mir nicht verlassen, wahrscheinlich kenne und benutze ich die meisten anderen einfach.


Wenn du mit Datenbanken arbeiten willst: Informier dich vorher gut über die guten alten relationalen Datenbanken (MySQL, Postgres, etc.) und am besten auch gleich über die neumodischen NoSQL Datenbanken (MongoDB, etc.). Die relationalen haben den Vorteil, dass sie extrem gut dokumentiert sind und einen mit Funktionen und Möglichkeiten erschlagen können. Außerdem(!) haben sie eine einheitliche Sprache: SQL.
Die NoSQL Datenbanken glänzen durch Performance, wenig Dokumentation, eingeschränkten Möglichkeiten. Und jede NoSQL Datenbank arbeitet anders, hat eine andere Sprache und andere Funktionen.
Aber natürlich lassen sich beide in Java problemlos benutzen, denn: Irgendjemand hat schon mal 'ne Bibliothek dafür geschrieben ;)


Wenn du wirklich was grafisches programmieren willst: Design Pattern(!). Allen voran MVC (oder MVP). Auf den ersten Blick wirkt das wahrscheinlich nach unnötig vielen Klassen und unnötig viel Code. Aber wenn du nach 'nem Monat noch mal auf den Code schaust (den du wahrscheinlich nicht oder schlecht dokumentiert haben wirst ;) ich kenn das), dann weißt du sofort wie wo und warum die Daten fließen.


Dokumentation: Wie schon angesprochen: Dokumentation ist was für ... Ach eigentlich ist sie verdammt nützlich und in großen Projekten Pflicht.
Das Problem: Wenn man privat und/oder alleine programmiert, dann entwickelt man eher nach einem agilen Schema. D.h. man schriebt einfach drauf los und passt hier und da was an. Also müsste man ständig die Doku anpassen. Das will man nicht, also lässt man sie weg. Und wenn das Projekt fertig ist und funktioniert, dann macht man es erst recht nicht mehr ;)

Ich schreibe gerade meine Bachelor Arbeit in (unter anderem) Java und weiß wovon ich rede, nur dass ich da weiß, dass ich sie dokumentieren muss und das gleichzeitig mit dem halb-agilen Vorgehen vereinen muss. Also hab ich es für mich so gelöst: Mein Programm besteht aus mehreren unabhängigen Modulen und sobald eins fertig ist, schreib ich die Doku. Und natürlich ist es schon vorgekommen, dass es nachträglich geändert musste, aber dann muss man in den sauren Apfel beißen und die Doku anpassen...

Doku in Java: Lern am besten sofort den Java-Doc Style, das ist quasi eine eigene Sprache. Ziel: Man klickt am Ende einfach auf "Doku generieren" und erhält ein paar seiten HTML, oder eine PDF oder was auch immer mit gut lesbarer Doku. Und: Alle anderen Java Programmierer wissen sofort was gemeint ist.


Entwicklungsumgebung (IDE): Ich würde hier den üblichen Weg vorschlagen: Den ersten Monat ohne IDE und danach mit. Wenn man das erste mal mit einer IDE arbeitet wird man förmlich erschlagen und da ist es gut, wenn man schon ein wenig Erfahrung mit dem Vokabular hat, wenn man weiß wie Fehlermeldungen aussehen, etc. Und nach einem Monat mit der IDE wirst du dann Probleme haben im normalen Texteditor auch nur eine Zeile Java zu schreiben ;)
Allgemein wird für Einsteiger NetBeans empfohlen. Ich möchte das an dieser Stelle ausdrücklich nicht machen, sondern eher zu Eclipse raten.
Gründe für NetBeans: Man kann mit einem Klick alles mögliche machen (inkl. grafischen Anwendungen)
Gegen NetBeans: Du wirst nie lernen, wie man solch eine Applikation ohne NetBeans schreibt, weil NetBeans zum Teil komplett eigene Klassen und Frameworks verwendet, die man sonst nirgends in der Java Welt findet. Oder Beispiel Webserver: Ist in NetBeans einen Klick entfernt, aber auch hier: Wie man das Ding außerhalb von NetBeans startet weiß man dann trotzdem nicht.


So viel zu meinen Empfehlungen für Java Einsteiger ;)


Grüße
 
Zuletzt bearbeitet:

Crimson_Sabbath

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2011
Beiträge
492
@ das Boese lebt: diplomatisch bis zum geht nicht mehr :D. Ne, du hast Recht, so wird es vermutlich enden. Also mache ich evtl. doch was sinnfreies. Dabei fand ich die Idee so gut :D

@ benneque: Danke für den Ausführlichen Tipp.

Dank euch allen weiß ich nun das ich nichts weiß und nichts kann und auch erst mal nichts sinnvolles Programmieren soll :p.
Ach verdammt :D. das auch alle meine Träume zerstört werden müssen^^.
Schade eigentlich. Es wäre n Motationsanreiz geworden was brauchbares zu programmieren. Aber ihr habt nun mal Recht^^.
Evtl. schwenke ich doch noch um auf Datenbanken mit PHP und SQL. Ich muss da mal mit dem Professor sprechen ob ich das evtl. auch in der Firma weiter nutzen kann was ich da lerne (weil wir einige Sachen haben die wudnerschön in Access abgebildet werden können aber sich keiner ran wagt weil wir einfach zu wenig Erfahrung in SQL haben (die Sachen die wir machen wollen brauchen SQL, mit QBE oder wie es heißt funzt es einfach net)
 

e-Laurin

Fleet Admiral
Dabei seit
Juni 2005
Beiträge
10.497
Datenbanken würde ich als Anfänger noch gar nicht anfassen. Für die sollte man die Grundlagen von Java bereits drauf haben, da man im Allgemeinen Libs wie zB Hibernate dafür verwendet. Da proggt kaum einer mehr manuell den Zugriff, auch weil das viel Arbeit kosten kann.

Schreib doch ein Schachprogramm (ohne KI) oder so was wie Vier gewinnt oder Risiko (mein Favorit). Die Grafik kannst du am Anfang beiseite schieben und alles in der Konsole machen. Wenn du dann da alles gerafft hast, kannst du dann als nächsten Schritt auch eine GUI dafür basteln.
GUIs unter Java sind sowieso ein Ding für sich. Das ist eins der Dinge, die unter Java einfach doof sind, weil sie eine Menge Schreibarbeit bedeuten.
 

Crimson_Sabbath

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2011
Beiträge
492
yeah, Risiko. Es dürfte zwar hart sein, aber wer weiß, ich überlege mir das mal.

Und Datenbanken müssen wir eh machen und uns dann für Programmieren oder Datenbanken entscheiden. Aber Risiko halte ich mir mal im Hinterkopf. Auch wenn ich daran evtl. scheitern werde, mal schauen^^
 

e-Laurin

Fleet Admiral
Dabei seit
Juni 2005
Beiträge
10.497
Risiko ist eigentlich gar nicht mal so schwer. Wenn man sich das Spiel und den Ablauf in kleine Teile zerlegt, ist es recht übersichtlich. Ich mein, woraus besteht denn das Spiel eigentlich?

Es gibt Länder, die mehrere Armeen eines Spielers fassen (= Name des Landes, Anzahl der Armeen, Name des besitzenden Spielers).
Dann gibt's noch eine Karte, die alle Länder enthält (= Liste oder Array von Ländern).
Und dann gibt es noch natürlich Spieler (= Name des Spielers).
Schließlich braucht man noch so was wie einen Spielleiter, also irgendwas was sagt, wer dran ist, wie gerade gewürfelt wurde und welche Züge erlaubt sind (= Controllerklasse).

Natürlich ist das nur eine vereinfachte Version von Risiko, aber für den Anfang reicht das allemal. Später kann man das Programm als Basis nehmen und zu einem richtigen Risiko-Spiel weiterentwickeln.


Datenbanken solltest du wirklich hinten an schieben. In der Vorlesung später wird man auch wahrscheinlich sowieso nur eine Lib zeigen, mit der man auf deine DB zugreifen kann. Das ist dann 0815, da brauchst du dir jetzt keinen Kopf drum machen.
 

maxwell-cs

Lt. Junior Grade
Dabei seit
Juli 2007
Beiträge
465
der vorteil von 4 gewinnt wäre, dass du erst einmal die datenstrukturen und logik für das spiel selbst schreiben würdest, sodass man es zu 2. spielen kann, du danach aber auch mit einer einfach zu implementierenden "KI" (minimax-algo) weitermachen kannst.

das spiel selbst wäre natürlich deutlich simpler als risiko.
 

Crimson_Sabbath

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Nov. 2011
Beiträge
492
Danke euch allen^^. Damit ist mir genug geholfen. Risiko oder 4 GEwinnt ist nicht schlecht. Ich werde mich die nächsten Wochen mal ran begeben :)
 
Top