Forum: PC-Programmierung Herangehensweise an ein Programmierprojekt in Java


von Markus H. (gammeltante)


Lesenswert?

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.

von Mike J. (emjey)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

> 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.

von Robert L. (lrlr)


Lesenswert?

>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)

von Udo S. (urschmitt)


Lesenswert?

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

von Hans M. (hansilein)


Lesenswert?

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).

von Karl H. (kbuchegg)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.