Java Ideensuche für Anfänger-Programmierprojekt

Ich finde es ja gut das ihr soviel vertrauen in den TE habt, aber Grafischer Taschenrechner ? Spiele ? Als totaler Anfänger?

Ein Taschenrechner mit (hoffentlich JavaFX und nicht oldswing) OHNE Grafisches Display, dürfte für einen 1 Semester Anfänger schon genug Stoff für stundenlanges arbeiten bereiten.

Spiele als Anfänger? Naja....

Gegen eclipse ist nichts einzuwenden, hat nicht ohne Grund einen Marktanteil von über 50%

Android entwickelt man mit ANDROID Studio. Und Android als totaler Anfänger ist genauso unratsam. Wenn du dir das zutraust, gern, aber da kommt einiges auf dich zu, und ich spreche da aus Erfahrung.
 
@L3xXuS: Danke für deine Tipps, wahrscheinlich werde ich mich erstmal daran machen Space-Invaders (zumindest ähnlich) für Android zusammenzubauen. Hat einfach auch was schönes, wenn man das Ergebnis der ersten eigenen Arbeit immer dabei haben kann :)

@blackbirdone: Hi, vielen Dank für deine Beteiligung und vor allem deine kritische Meinung, das hat mir hier bisher etwas gefehlt. Allerdings traue ich mir in der Tat einiges zu und denke, dass ich nicht gerade "unbegabt" bin, wenn man das so sagen darf. Ich suche explizit nach einem Projekt, dass mich 80 - 100 Stunden beschäftigt, da es mir genau darum geht. Bisher hatten wir wöchentliche Übungsaufgaben, welche 1 - 10 Stunden in Anspruch genommen haben (i.d.R. waren sie denke ich auf 4-6 ausgelegt). Deshalb möchte ich mal ein wirklich langes Projekt haben, bei dem man auch mal vor Problemen steht, bei denen einem weder Kommilitonen, noch Tutoren zur Seite stehen, sondern wo man sich einfach durchbeißen muss. Ich bin natürlich auch gerne für andere Projektvorschläge deinerseits offen, solltest du bessere Vorschläge haben :)


Beste Grüße
 
@blackbirdone:
Der TE hat nach sinnvollen Aufgaben zum Üben gefragt und schon Grundlagen als bekannt genannt.
Wie weit das ging, gut hätte man etwas detailreicher umfassen können.
Aber er schien mir persönlich recht motiviert sich selbst Wissen anzueignen und zu üben.
Dass das nicht einfach ist sollte klar sein und das mit Android spreche ich ebenfalls aus eigener Erfahrung an.
Ich hab noch vor dem Studium damit angefangen und sicher meine Probleme, aber mit einem Buch und genug
Literatur kommt man da schon weiter.

@TE:
Genau das ist das coole, dass man direkt ne kleine App hat, die man vorzeigen kann.
Muss nix aufregendes sein, aber es ist einfach n gutes Gefühl, wenn mans selbst
gemacht hat, egal ob jetz super sauber programmiert oder nicht. Das kommt einfach mit der Zeit.
Ich würde mir trotzdem das ein oder andere mal von etwas erfahreneren Leuten drüberschaun lassen,
das bringt einen oft auf neue Heransgehensweisen oder Ideen, wie man bestimmte Probleme lösen kann.
Aber auf jeden Fall viel Erfolg. Motivation und Eigeninitiative bringen imho fast mehr als die blanken Noten
aus dem Studium (welche natürlich trotzdem nich katastrophal sein sollten), also lass krachen. :)

EDIT: Du könntest z.B. deine Übungsapp in einem public repo auf github aufsetzen, dann kannst du das leicht jemandem geben, wenn du Hilfe brauchst. Just sayin...
 
@L3xXuS: Vielen Dank für deine Unterstützung und vor allem für die vielen Tipps. Ich habe heute während den Lernpausen begonnen erste Tutorials für Android Studio und die Entwicklung für Android im generellen zu suchen. Ich denke die erste der 8 Wochen werde ich damit zubringen mir möglichst viel Wissen im Voraus anzueignen um dann zu beginnen und fehlendes während der Arbeit zu erlernen :) Nächste Woche wird es losgehen, ich denke ich werde dann hier einen kleinen Log über das geschehen führen.


Beste Grüße
 
ich haette mit etwas "kleinerem" begonnen. maximal haette ich mich an "vier gewinnt" bzw irgendeiner adressverwaltung (ohne datenbankanbindung) versucht. am besten man hat zur auswahl des projektes auch irgendeinen bezug, das macht es deutlich einfacher. die einarbeitung in "grafik java" (also fenster. schaltflaechen) ist auch nicht ganz ohne.

und android setzt da noch einen drauf, bis da ein knopf auf einen mausklick reagiert, muss man schon was tun im vergleich zu anderen programmiersprachen. ausserdem hast du ja bis jetzt noch gar kein richtiges projekt, sondern nur die idee etwas mit android zu machen.

ich kann das auch verstehen, da man dann zeigen kann , was man gemacht hat. der groesste fehler den man machen kann, ist sich ein android-buch zu kaufen und ein beispiel daraus mehr oder weniger abzutippen.

ich will dir das aber nicht madig machen. also viel spass bei android
 
Android ist nicht so empfehlenswert solange man nicht verstanden hat wie die API aufgebaut ist.
Würde empfehlen mal die API Doku von Java zu studieren, wie Methoden und Klassen voneinander abhängen, was da vererbt wird und wieso man Methoden überschreiben kann.

Android ist praktisch gesehen nur ein neuer Satz an Java API der auf Handy Funktionalität gerichtet ist, wo einem vieles bekannt vorkommt.
 
Zuletzt bearbeitet:
@protossgamer: Zu erstmal, schöner Nickname, war auch Protossspieler in SC2 :). Zur allgemeinen Klärung liste ich hier mal auf, was wir bereits im Rahmen der vorlesungsbegleitenden Übungen programmiert haben und was benotet wurde (zumindest teilweise, soweit ich mich noch daran erinnern kann, allerdings nicht in Chronologischer Reihenfolge):

1. Abstraktes Dateisystem (hierbei werden Dateien durch Objekte einer Klasse mit Dateigröße, Dateipfad und Namen repräsentiert, sofern ich mich richtig erinnere und Ordner durch eine andere Klasse, die nur einen Namen und einen Dateipfad als Attribute besitzen.) Durch die Ableitung von einer gemeinsamen Oberklasse (Aufgrund der Methodenunterschiede war eine gemeinsame Oberklasse notwendig, zumindest bei meiner Implementierung) konnte man durch die Verwendung von Listen aus der API (ArrayList habe ich hier verwendet) und generische Programmierung einen Baum erzeugen, der zum Schluss das System repräsentiert.
2. Adressbuch. Das war etwas einfacher. Hier war schlicht die Aufgabe mit Vererbung umzugehen (Person -> Mann/Frau) und die erzeugten Objekte (mit Adress- und Kontaktdaten- Objekten als Attribute) innerhalb einer Liste (Selbst geschriebene Datenstruktur an dieser Stelle) zu verwalten.
3. Snake, der klassiker der alten Spiele. Hier ging es um die erste Programmierung mittels Listen. Uns wurde ein Framework zur Verfügung gestellt, welches die grafische Oberfläche realisiert und wir mussten Sozusagen die eigentliche Spiellogik implementieren (Fortbewegung, Erweiterung, Kollision usw...).
4. 4 Gewinnt, eines unserer ersten Projekte. Hierbei wurde noch auf Basis eines zweidimensionalen Array's (nennt man das so? :D) gearbeitet.
5. Erste kleine GUIs. Hauptsächlich ging es darum eine Ampel zu simulieren, die auf Knopfdruck die Zustände der einzelnen Lichter ändert.

Bis auf das letzte waren alle Aufgaben nur per Konsole bedienbar. GUIs wurden nur sehr stiefmütterlich und anhand von AWT (was nicht sehr optimal sein soll, wie ich gelesen habe, SWT/Swinx soll wesentlich tauglicher sein?) behandelt wurde. Dazu kamen noch einige Übungsaufgaben, die dem reinen Verständnis dienten, die dann ungefähr so aussahen: "Implementieren Sie eine Baum Datenstruktur und geben Sie deren Inhalte mittels Tiefen-/Breitendruchlauf aus."

Insgesamt wurden in der Vorlesung grob folgende Themen behandelt (Auch wenn ich mich bei weitem nicht mehr an alles erinnern kann):
- Primitive vs. dynamische Datentypen
- Klassenhierarchien hinsichtlich Vererbung. Hierbei auch abstrakte Klassen, Interfaces und erste Einblicke in die API (hauptsächlich für Listen)
- Exceptionhandling, zumindest Ansatzweise.
- Geheimnisprinzip (Darauf wurde heftigst herumgeritten ;) )
- Listen, Bäume, Stacks, Queues usw.
- Generische Programmierung (wieder mit Bezug auf die oben genannten Datenstrukturen)
- Sehr oberflächlich das Thema GUI.

Ich hoffe mal, das ich so wenig wie möglich vergessen habe.

Daran möchte ich Ansetzen und das Wissen weiter vertiefen. Ich denke, dass ich das hier vielleicht schon im Startpost hätte schreiben sollen, ich bitte dies zu entschuldigen.

// EDIT: Andere Sprache, aber evtl. dennoch interessant: Aktuell bin ich dabei ein Script (Powershell, Exchange) zu schreiben, welches Abwesenheitsnotizen hinterlegt. Diese sind in der aktuellen Version entweder durch einen Assistenten erstellbar, oder durch ein HTML-Formatiertes TXT-File hinterlegbar.


Beste Grüße
 
Zuletzt bearbeitet:
Würdest du von dir behaupten OOP so richtig verstanden zu haben? Also warum nutzt man es überhaupt und wie wird es richtig eingesetzt? Kennst du einfache und speziellere Patterns und weißt wofür sie eingesetzt werden?

Meiner Meinung nach entwickelt sich alles immer mehr in Richtung Softwarearchitektur und vielleicht ist das ja auch ein spannendes Projekt für dich. Ich kenne mich mit JAVA nicht aus, aber was immer interessant ist, ist eine Pluginarchitektur zu schreiben.

Ein Chatprogramm ist hier ein guter Weg. Und zwar in dem Sinne die Grundfunktionionalität zu schreiben und dann per Pluginsystem alles nachzureichen.

Das klingt etwas langweilig, weil man nicht viel zeigen kann. Aber das Wissen und die Erfahrung, die du aus so einem Projekt mitnimmst ist meiner Meinung nach viel wichtiger, als ein "Großprojekt" zu schreiben. Denn so lernst du das Modularisieren.

Und wenn du ein Großprojekt machst, dann mach es gleich richtig. Und zwar Testdriven (Google Testdriven Development).

Da ist viel Theoriepauken vorher angesagt. Wenn du dich da aber durchbeißt, kannst du dich danach relativ frei in der Programmierung bewegen und dir schon sehr viel mehr zutrauen.
 
@Trialgod: Sinn und verwendung von OOP sind mir durch die Vorlesung bekannt (zumindest bin ich der Meinung).
Den Begriff Patterns hingegen habe ich noch nicht gehört, nach schneller Google Recherche scheint mir jedoch, dass es sich dabei um Interfaces handelt, liege ich da richtig?
Generell möchte ich mich erstmal an einem kleinen Spiel versuchen, da mir das gerade am ehesten zusagt. Zwar ist auch ein Chatprogramm interessant, doch irgendwie spricht es mich nicht richtig an. Das erste kleine Projekt möchte ich doch vorzeigen können.
Allerdings würde ich gerne deinem Tipp bezüglich Google Testdriven Development nachgehen, finde aber auf die schnelle keine Informationen dazu. Hast du eventuell ein paar Links, dass ich mich da einlesen kann?


@Topic: Wie man weiter oben schon rauslesen konnte, habe ich mich für das SpaceInvaders spiel entschieden und werde das für Android programmieren. Dabei werde ich hier einen kleinen Log darüber führen, der zum einen zum Fragen, zum anderen für mich selbst als Gedankenstütze dient. Allerdings werde ich vermutlich erst am Mittwoch dazu kommen, konzentriert an der Sache zu arbeiten. Natürlich schweben mir schon ein paar Ideen im Kopf, aber das ist alles noch sehr sehr ungenau ;)

// Edit: Android Studio wurde heruntergeladen und gerade darf sich der SDK Manager beim Runterladen austoben und mein kleines Datengrab etwas füllen.


Beste Grüße
 
Zuletzt bearbeitet:
Was das OOP angeht gibt es da zwei paar Schuhe. Einmal verstehen wie es geht und was es gibt, also Klassen, Vererbung, Interfaces, Sichtbarkeiten etc. Das ist der leichte Teil. Der etwas kompliziertere Teil ist der zu verstehen, wie man es richtig einsetzt.

Ich empfehle dir mal kurz nach den "SOLID Principles" zu schauen und kurze Erklärungen zu suchen. Die zeigen dir quasi auf, wie man OOP richtig designt. Du musst hier keine Facharbeit dazu lesen, der Wiki Artikel sollte reichen. Diesen allerdings gründlich lesen und auf jeden Fall versuchen zu verstehen was gemeint ist. Es gibt sicher auch Codebeispiele dazu irgendwo im Netz.

Und Patterns sind dafür da um Vorgaben zu kennen, wie man bestimmte Teilprobleme in der OOP Welt abbildet. Sie sind quasi die "Standards", wie man ein Programm designt. Sie bieten vorallem eine große Hilfe bei der Kommunikation mit anderen Entwicklern (z.B. "Ich würde das Problem über einen Adapter lösen" - jeder weiß, was hier gemeint ist).

Testdriven Development bedeutet deinen Programmcode mit automatisierten Tests deiner Einheiten (Module) zu entwickeln. Das hat mehrere Vorteile.

Kurz gesagt definierst du in deinem Test dein Erwartetes Verhalten. Und zwar bevor du deine eigentliche Implementation erstellst. Oder währenddessen, aber keinesfalls hinterher. Hast du also z.B. einen Algorithmus der addieren soll, so definierst du Testdaten und dein erwartetes Ergebnis und prüfst dann, ob dein Algorithmus mit den Testdaten korrekt das Ergebnis berechnet. In der Regel nimmt man hier eine ganze Testreihe. Wichtig ist, dass man hier nicht das Verhalten mit korrekten Daten testet, sondern auch das Verhalten mit "falschen" Eingangsdaten. Bei einer Division also das Verhalten bei Division durch 0. So kannst du leicht Fehler provozieren und deinen Code entsprechend anpassen und fehlerresistent zu gestalten.

Viele Anfänger und auch Projektmanager, die noch nicht so viel Erfahrung haben neigen dazu das Testen als "Nice to have" abzustempeln. Es gibt aber mittlerweile genügend Erfahrungswerte die zeigen, dass die TDD viele Fehler schon anfangs beseitigt und die Zeit für die spätere Fehlersuche und -beseitigung viel länger dauern würde. Ebenso kannst du bei der Abänderung/Refactoring deiner Algorithmen jederzeit sofort nachvollziehen, ob dein Verhalten noch korrekt ist. Das spart im Gegensatz zum manuellen Testen eine Menge Zeit. Man schreibt Tests um Zeit zu sparen, auch wenn das Anfangs nicht danach aussieht.
 
Hi,

da ich morgen damit starten will mich einzulesen, bin ich erstmal sehr dankbar für die ganzen Anregungen.

Generell stehen folgende Punkte auf meiner Agenda:
1. SOLID - Principles (hab den Artikel grob überflogen, morgen wird er gründlich gelesen)
2. Grundlagen der Android Entwicklung (Gibt schon gewisse unterschiede zwischen Android und normalem Java, da will ich mir bisschen was aneignen diese Woche :) )
3. Grundlagen von OpenGL ES.
4. Testdriven Development (Hier fehlen mir bisher noch Quellen, die finde ich aber auch noch ;) ).
5. Spielkonzeption (Ich will etwas vom Klassiker abweichen, da ich mir sonst wirklich einfach Code aus dem Internet holen könnte). Ich hab da schon ein paar Ideen, hoffe aber einen Einblick zu bekommen, wie schwer/einfach diese umzusetzen sind, bevor ich mit Punkt 5 anfange.
6. Beginn der Arbeit

Jeder der einzelnen Schritte wird natürlich etwas weiter in meiner ToDo Liste unterteilt. Wollte nur mal Erfragen, ob die Reihenfolge eurer Meinung nach Sinn macht!?

Was die IDE angeht, bin ich mir noch nicht ganz sicher, ob ich Android Studio oder Android Development Tools for Eclipse verwende. Hab mal beides auf dem Rechner und ich finde bisher hat beides seine Vorzüge. Entsprechend werde ich mich da wahrscheinlich erst zu einem späteren Zeitpunkt entscheiden, da ich denke, dass ich die Vorteile der jeweiligen Entwicklungsumgebungen im Moment teilweise falsch einschätze, bzw. viele auch noch garnicht erkenne ;)

Generell sollten die oben genannten Schritte nicht mehr als 7 - 10 Tage in Anspruch nehmen, zumindest hoffe ich das =)

Beste Grüße
 
Meiner Meinung nach versuchst du zu perfektionieren wo dir doch Basics fehlen. Als Anfänger wirst du dir aber oft falsches einbilden was du für richtig hälst. Das meinste dieser Dinge lernst du irgendwann in einem Modul das "Softwaretechnik" oder ähnlich heißt.

Da gehts dann um SOLID, Testverfahren, Vorgehnsweisen, UML etc.
Mein Rat wäre alles mal zusammenhanglos zu tun, dir Überblick zu verschaffen und am Ende das Wissen zu verketten. Nimm dir doch einfach mal ein Anfängerbuch für Android un leg los.
 
Zuletzt bearbeitet:
@black90: Das war auch genau das, was ich unter den Punkten 2 und 3 verstehe. Die SOLID Principles habe ich mir durchgelesen, einige Notizen dazu angefertigt und auch schon einige Beispiele dazu angeschaut. Das Modul Softwareentwicklung (so heißt das bei uns glaube ich) kommt soweit ich weiß im 3. oder 4. Semester. Ich denke geringfügige Vorkenntnisse schaden hier nicht =)

@Zweiter kleiner Logeintrag :D : Vor ca. 2 Stunden habe ich mir im lokalen Buchhandel das Buch von Galileo Computing angeschafft. Die Amazonbewertungen zum Buch habe ich mir durchgelesen und denke, dass ich mit den Kritikpunkten wohl sehr gut klar kommen werde. Der erste Blick ins Buch hat mich angesprochen, weswegen es bei mir dieses Buch wurde. Ich hoffe damit die richtige Entscheidung getroffen zu haben. Sollte das nicht der Fall sein, ist es auch kein Weltuntergang. Ich denke bis Sonntag werde ich es weitgehend durchgearbeitet haben.
 
protossgamer schrieb:
was ist eigentlich aus dem projekt geworden?

Wurde leider aktuell auf Eis gelegt, wie ein zweites Projekt, dass ich diese Semesterferien angehen wollte. Das ganze hat private Gründe, die ich hier aktuell nicht weiter vertiefen möchte. Ich habe zwar mit dem Programmieren begonnen und bin zumindest mal soweit, dass ich mein eigenes Schiff steuern kann, weiter bin ich aber eben noch nicht gekommen.

Ich werde das Projekt aber definitiv weiter verfolgen und hoffe, dass ich die Arbeit daran schnell wieder aufnehmen kann.

Aber es freut mich, dass es wirklich jemanden gibt, der sich dafür interessiert :D Motiviert zum weitermachen.


Beste Grüße
 
Zurück
Oben