Grüß euch zusammen, ich bin Java Neuling und möchte gerne ein Programm schreiben. Mit diesem Programm sollen Daten aus Dateien ausgelesen werden, Daten vom Benutzer abgefragt werden, diese wiederum in Dateien geschrieben und auch am Bildschirm angezeigt werden. Es sollen auch externe Programme gestartet werden können und eine zusätzliche Applikation soll ständig im Hintergrund laufen. Bisher habe ich nur kleinen Code geschrieben (Funktionen und selten auch mal Klassen) und stehe gerade wie der Ochs am Berg! Wie fange ich ein solches Projekt an? An der Hochschule wurde mir empfohlen das Projekt in drei Teile zu trennen (MVC). Also die Datenhaltung, die GUI und die Logik zu trennen. Die Trennung leuchtet mir ein, doch bereitet mir die Umsetzung große Probleme. Sind dann alle 3 Teile eigene Java Applikationen oder sind alle in einer Applikation vereint und sind verschiedene Java Klassen? Wie gehe ich an diese 3 Teile heran? (Klassen auf Papier zeichnen, Schnittstellen beschreiben, etc...???) Ich schreibe absichtlich keine Programmdetails, denn ich möchte bezüglich der prinzipiellen Herangehensweise an ein Programmierprojekt dazu lernen. Wenn es aber dringend notwendig ist schreibe ich gerne worum es geht. Vielleicht habt ihr ja auch gute Links/Tutorials zum Thema, dann her damit ... Vielen Dank schon mal, Markus H.
Alle drei Teile sind in einer Applikation vereint, das dient nur dazu eine bessere Übersicht zu haben, das macht es dir leichter dein Projekt zu überblicken. Die OOP dient auch dazu, alles soll so weit vereinfacht werden dass man sich nur immer auf einen kleinen Teil des Programms konzentrieren muss. http://de.wikipedia.org/wiki/Model_View_Controller http://www.java-forum.org/allgemeines/5557-entwurfsmuster-design-patterns.html http://abraham.fh-lausitz.de/profs/robel/faq/mvc.html http://blog.bigbasti.com/tutorial-model-view-controller-mvc-struktur-in-java-projekten-nutzen/ Es scheint so als ob dir eigentlich schon alles klar ist, du musst nur einen Stift in die Hand nehmen und anfangen.
> Mit diesem Programm sollen Daten aus Dateien ausgelesen werden, > Daten vom Benutzer abgefragt werden, diese wiederum in Dateien > geschrieben und auch am Bildschirm angezeigt werden. D.h. aber auch, diese Daten müssen irgendwie geordnet im Speicher liegen. Was sind das für Daten? Gibt es Zusammenhäng? Welches ist eine vernünftige Organisation für diese Daten? Welche Operationen müssen mit den Daten gemacht werden? Das wären die Fragen, um die sich bei mir am Anfang die Dinge drehen würden. Nachdem ich mir klar gemacht habe, worum es im Rest des Programmes geht, vielleicht auch ein paar Zeichnungen gemacht habe, welche Eingaben ein Benutzer in einer aufgezeichneten Eingabemaske machen wird, ist der Bereich "interne Datenrepräsentierung" der Teil mit dem es bei mir traditionell losgeht. Ich fang also mal an die Datenstruktur in Klassen abzubilden. Ist die soweit fertig, dann wird eine erste Version einer GUI gemacht, mit der man die Daten in die Datenstruktur eingeben kann. Dabei achte ich auf logische Vorgehensweise, dass Fehleingaben abgefangen werden, dass es nicht nur ein 'Neuanlegen' gibt, sondern auch Ändern und Löschen bestehender Datensätze möglich ist, dass man gewisse Daten suchen kann etc. Irgendwann ist die kritische Masse erreicht und das Programm ist soweit gediehen, dass da nicht nur Spiel-daten im Spiel sind, sondern es vernüftig wäre erste reale Testdaten anzulegen. Es wird Zeit, dass man auf Datei speichern und von Datei lesen kann. Meine Arbeitsweise sieht nicht so aus, dass ich erst mal die Datenhaltung komplett fertig mache, dann die GUI .... Es ist mehr ein Hin und Her zwischen den Bereichen (die aber nach wie vor sauber getrennt bleiben!), die sich gegenseitig hochschaukeln. Ich hab gern möglichst früh etwas, was ich auf Funktion hin testen kann. Für mich funktioniert das gut. Es kommt auch schon mal vor, dass eine GUI im Nachhinein in Details noch geändert wird, weil sich herausstellt, dass die ursprüngliche Idee dann doch nicht so prickelnd war. Durch einen sauber getrennten OOP Ansatz, ist das auch kein großes Problem. Das heißt jetzt aber nicht, dass ich planlos an die Sache rangehe. Der allererste Schritt ist immer derselbe: Erst mal einen Überblick verschaffen, was es zu tun gibt. Die Aufgabenstellung verstehen und daraus eine Implementationsidee entwickeln - wie stelle ich mir das Gesamtsystem vor. Danach vergesse ich erst mal das Gesamtsystem (das war nur dazu da, damit ich denn ungefähren Weg abstecken kann) und stelle mir mein erstes Teilziel.
>Java Neuling
ganz ehrlich: vergiss es
sch.. auf MVC
dann schreibst in 1/10 der zeit ein programm dass zumindest
"funktioniert"
und lerne aus deinen Fehlern ;-)
dann könntest du nach
hibernate und spring (im google) suchen (das soll gerade sehr "in" sein)
Robert L. schrieb: > sch.. auf MVC Sagt der Spagetti-Code Programmierer. Robert L. schrieb: > dann schreibst in 1/10 der zeit ein programm dass zumindest > "funktioniert" du hast 'manchmal' zwischen 'zumindest' und 'funktioniert' vergessen. @Karl-Heinz: Mir ist der 'intuitive' Ansatz auch lieber als sich ne Woche hinzusetzen und riesige UML Diagramme zu zeichnen :-) Der Nachteil ist halt daß man bei dem Vorangehen auch das eine oder andere umfachreichere 'Refactoring' macht. @Markus: Für einen Beginner ist das natürlich gleich ein sehr anspuchvoller Einstieg. Wichtig wäre hier wie fit du in objektorintierter Programmierung bist. Auf jeden Fall solltest du wie Karl Heinz sagt mit den Datenstrukturen anfangen und die so sauber wie möglich in Klassen packen. Wichtig hier: Was hängt von was ab. Wo gibt es 1:n Beziehungen. In dem Zusammenhang setz dich mit dem Java Collections Framwork auseinander. Da hast du alles was das Hetz begehrt. Listen, dynamische Arrays, Maps, Sets, etc. Und versuche dein Projekt stückweise auszubauen. Damit das nicht in Spagetticode ausartet ist die Trennung von Datenhaltung und Visualisierung durchaus essentiell 'MVC' sagt eigentlich nicht viel anderes. Viel Erfolg
Ich würde mir Netbeans nehmen oder dieses: http://cms.xdev-software.de/content.php?72-gui-builder und mir die Oberfläche zusammenbasteln, da gibt es schöne Editoren. Dann nach und nach Funktionalität hinzufügen. Entscheidend ist nicht von Anfang an die perfekte Struktur zu haben, sondern sich vor Änderungen nicht zu scheuen. Netbeans hat z.B. umfangreiche Refactoring-Tools (z.B. Superklasse extrahieren).
> Entscheidend ist nicht von Anfang an die perfekte Struktur zu haben, > sondern sich vor Änderungen nicht zu scheuen. Das kann ich nur unterstreichen. Mit wachsender Erfahrung werden zwar Fehlentscheidungen seltener, kommen aber nach wie vor vor. Wer dann am bereits bestehenden Code klebt wie eine Klette, hat bereits verloren. Das Argument: Ja, aber ich hab doch schon sooooo viele Datensätze angelegt, zählt dabei nicht. Das war dann ganz einfach nur voreilig gehandelt. Daher beschäftige ich mich mit Laden+Speichern meistens auch relativ spät im Entwicklungsprozess, wenn abzusehen ist, dass sich an der Datenstruktur nichts oder nicht mehr viel ändern wird.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.