Mein erstes eigenes Projekt - Aufbau und Strukturierung

Sebel00

Mitglied
Hallo zusammen,

ich möchte mich jetzt an meinem ersten eigenen Projekt versuchen, da ich das Gefühl habe, ich kann mir noch so viele Tutorials anschauen, aber dieses nachmachen, was im Tutorial gezeigt wurde bringt mir am Ende nichts.

Als Projekt habe ich mir ein Haushaltsbuch (als Kastensystem) ausgesucht, weil ich so etwas in Excel schon mal gemacht habe und ich daraus einige Dinge ableiten wollte.

Die Struktur in Excel ist wie folgt.

Tabelle 1 = Einnahmen
Tabelle 2 = Fixkosten für Lebensnotwendiges (z.B. Miete, Lebensmittel...)
Tabelle 3 = Kosten für nicht lebensnotwendige Dinge (z.B. Sportverein, Freizeitaktivitäten...)
Tabelle 4....

Nun zu meiner Frage.

Leider kann ich keinen Einstiegspunkt finden. Ich habe die einzelnen Kategorien (Fixkosten) als Klasse definiert, in dieser Klasse muss ich nun die einzelnen Punkte definieren, wie z.B. Miete oder Lebensmittel, aber leider habe ich keine Ahnung, ob ich das als Liste implementiere oder diese Punkte Attribute sind. Gibt es dazu eine Hilfe, wie ich etwas strukturiert aufbauen kann ?
 
Du kannst das hart in den Code schreiben, oder du machst es als Daten. Also zum Beispiel dass du aus einer CSV-Datei einliest welche Fixkosten es gibt. So zum Beispiel:

Code:
Miete;350

Das liest du dann aus (Vorzugsweise mit einer Lib, CSV parsen ist nicht lustig) und erstellst dir daraus mehrere Instanzen deiner Fixkosten-Klasse. Eine Zeile, eine Instanz. Das gleiche machst du auch fuer andere Kosten und Einnahmen.

In deinem Programm liest du dann die CSV Dateien nacheinander ein, wandelst diese in diese Klassen um und kannst dann dort damit arbeiten zur Laufzeit.
 
Ich würde mir erst mal ein Stück Papier (oder ein Whiteboard oder ein Tool wie draw.io) hernehmen und etwas "malen", um mir selbst über die benötigten Daten und deren Zusammenhänge ein Bild zu machen. Erst danach, solltest du mit dem Code beginnen.

Exemplarisch könntest du sagen, dass ein Eintrag im Haushaltsbuch einer "Buchung" entspricht. Eine Buchung hat ein Buchungsdatum, einen (positiven oder negativen) Wert, eine Art Tag (oder Kategorie), einen Kommentar. Das entspricht dann schon fast der abzubildenden Klasse mit ihren Eigenschaften.

Manche Eigenschaften sind dann einfache Datentypen oder vielleicht auch eigene Klassen (falls noch weitere Informationen oder Voraussetzungen daran geknüpft sind). So könnte die Kategorie eine eigene Klasse sein. Ein String würde zwar funktionieren, aber der Benutzer kann mehr oder weniger frei Text eingeben, so dass es zu Fehlern kommen kann: "Lebensmittel" <=> "Lebensittel". Das könntest du vermeiden, indem Kategorie eine eigene Klasse ist, mit einer Eigenschaft Name, und du eine (erweiterbare) Liste von mehreren Kategorien hast, aus welche der Benutzer auswählen und sie einer Buchung zuordnen kann.

An dieser Stelle könntest du bereits folgende Klassen (Namen bitte besser wählen) haben: Buchung, Buchungsliste, Kategorie, Kategorieliste.

EDIT: Nachdem du "gemalt" hast, kannst du den Entwurf ja gerne hier zeigen.

EDIT: Ich habe gerade an einen etwas älteren Beitrag von mir denken müssen, in dem über mehrere Seiten über den Entwurf einer Lagersoftware diskutiert wird. Falls du mutig genug bist, kannst du da mal einen Blick drauf werfen. Die Software wurde dann leider nie benötigt, weil inzwischen eine SAP-basierte Lösung geschaffen wurde. 🙁
 
Zuletzt bearbeitet:
Nur ein wenig. Allerdings war das oben mehr Ausdruck der Verwunderung, dass da plötzlich weder von mrBrown, mir oder AndieE (oder sonst einem der Beteiligten, den ich gerade übersehen habe) noch etwas kam. Das war ja noch nicht abschließend behandelt 🙂 Irgendwie übersehen (oder der Rest ist Opfer der DB geworden).
 
Um das von @temi noch zu ergänzen: Als aller-erster Schritt ist meistens erstmal ein einfaches "mit Worten beschreiben" sinnvoll, so wie @temi das ja im zweiten Absatz auch gemacht hat. Darin kann man einfach mal alle Nomen unterstreichen:

Exemplarisch könntest du sagen, dass ein Eintrag im Haushaltsbuch einer "Buchung" entspricht. Eine Buchung hat ein Buchungsdatum, einen (positiven oder negativen) Wert, eine Art Tag (oder Kategorie), einen Kommentar. Das entspricht dann schon fast der abzubildenden Klasse mit ihren Eigenschaften.

Damit erwischt man meistens schon alle wichtigen Dinge (je "besser" die Beschreibung, desto einfacher ist das und desto besser das Ergebnis), und kann daraus dann wunderbar Diagramme ableiten (die das ganze einfacher darstellen und mit denen man besser weiter arbeiten kann) und das ganze schon in grobe Klassen unterteilen.

Alles, was "etwas anderes" enthält, kann man auf jeden Fall schon mal als Klasse modellieren:

Es ging eine Klasse "Haushaltsbuch", die hat mehrere Buchungen (= Liste von "Buchung").
Dann eine Klasse "Buchung", die Buchungsdatum, Wert, Kategorie & Kommentar hat – da jeweils nur eins und keine Liste einfach als normale Attribute

Alles andere, z.B. Buchungsdatum und Wert, kann man entweder als Klasse modellieren (@temi hat ja ein Beispiel genannt), oftmals reicht es aber auch, den passenden "primitiven" Typ dafür zu finden: Für ein Buchungsdatum reicht z.B. ein Datum, zB LocalDate, und für Wert ein int, um Cent darzustellen.
 

Neue Themen


Zurück
Oben