Guten Tag,
ist es sinnvoller bei dieser Methode den Rückgabetyp void zu nehmen und die Variable über einen getter auszulesen oder würdet ihr als Rückgabetyp String nehmen?
Code:
public void geschlechtErmitteln() {
geschlecht = JOptionPane.showInputDialog("Geben Sie ihr Geschlecht ein (männlich/weiblich)");
if (geschlecht.equals("männlich")) {
geschlecht = "Herr";
} else {
geschlecht = "Frau";
}
}
oder
Code:
public String geschlechtErmitteln() {
geschlecht = JOptionPane.showInputDialog("Geben Sie ihr Geschlecht ein (männlich/weiblich)");
if (geschlecht.equals("männlich")) {
return geschlecht = "Herr";
} else {
return geschlecht = "Frau";
}
}
Besser ist, diese Methode in einer anderen Klasse zu haben, sie was zurückgeben lassen und dann das Geschlecht über einen Setter (oder noch besser Konstruktor) zu setzten
IMHO sind beide Varianten in etwa gleichwertig.
Allerdings impliziert für mich der Methodenname "geschlechtErmitteln", dass etwas zurückgegeben wird (hier halt das bestimmte Geschlecht)!
IMHO sind beide Varianten in etwa gleichwertig.
Allerdings impliziert für mich der Methodenname "geschlechtErmitteln", dass etwas zurückgegeben wird (hier halt das bestimmte Geschlecht)!
Naja dann würde es heissen holeGeschlecht(). Sorry Leute aber ich kriege immer senkrecht stehende Nackenhaare wenn ich deutschen SourceCode lesen muss. Das ist echt so schlimm da läuft einem das Blut aus den Augen....
Ich geh mal davon aus, dass das Geschlecht zu so etwas wie "Person" gehört und sicherlich nicht das einzige ist, was du einlesen bzw speichern möchtest
Stimmt. Da kommen noch ein paar Sachen wie z.B. Alter und Name dazu, aber meine anfangs gestellte Frage lässt sich auch auf die anderen Methoden übertragen.
Ich probier einfach mal den ersten Vorschlag aus, vielen Dank an alle!
Versuch doch einfach mal in Objekten zu denken. Dann wird dir schnell auffallen, das deine Attribute alter, Geschlecht etc. alle zu einem Objekt Lebewesen, Mensch, Person oder sonstwas gehören müssen und nicht alleine in der Gegend rum stehen. Also erzeugst du erstmal eine Klasse dieser Art und gibst ihr die notwendigen Attribute. Danach willst du es über einen Dialog möglich machen, dass ein Attribut dieser Klasse gesetzt wird. Ein Dialog hat aber doch mal so gar nichts mit einem Menschen zu tun. Also gehört der Dialog auch in eine eigene Klasse da er ein eigenes Objekt abbildet. Meinetwegen nenn diese Klasse MenschEingabeUI wenn es denn unbedingt deutsches ich muss. Damit diese Klasse weis von welchem Mensch die Attribute eingegeben werden sollen, muss es eine Referenz auf den Menschen bekommen.
Es hilft wirklich wenn man sich das was man vorhat erstmal auf einem Blatt Papier aufmalt und dann erst anfängt zu programmieren.
publicclassMenschEingabeUI{privateMensch mensch;// Referenz auf ein ObjektpublicMenschEingabeUI(){this.mensch =newMensch();// Setzte Referenz}publicvoidfrageNachGeschecht(){String geschlecht =JOptionPane.showInputDialog("Geben Sie ihr Geschlecht ein (männlich/weiblich)");
mensch.setGeschlecht(geschlecht);}publicvoidspeichereAllesInEinerDatei(){// ... hier logik zum speichern// speichere den mensch}}
Danke für deine Hilfe! Da war ich auf einem ähnlichen Weg allerdings habe ich mir gleich per new Mensch() ein neues Objekt erzeugt um dann die getter und setter zu verwenden wo liegt der Unterschied zu deinem bzw. warum setzt du die Referenz noch im Konstruktor?
Wäre es nicht sinniger der MenschEingabeUI ein bereits existierendes Menschen Objekt übergeben zu können anstatt im Konstruktor immer ein neues (leeres) Objekt zu erzeugen?
Das ganze Beispiel ist bisher nicht sehr sinnig. Auf die Frage wie eine Referenz aussieht, habe ich ein Beispiel geliefert. Wenn man jetzt davon ausgeht, dass die UI erstellt wird um genau einen Menschen zu beschreiben und ihn danach in eine Datei zu schreiben, ist das Beispiel völlig ausreichend. Bisher gab es nicht die Anforderung, dass der Mensch für weiterer Bearbeitung zur Verfügung stehen muss
Letztendlich sollen die Informationen über den Menschen noch in eine Datei geschrieben. Ich nehm eure Ratschläg erstmal auf, mach mir ein paar Gedanken und melde mich dann bald mit ein bisschen Code
Der Mensch wird erzeugt, konfiguriert und gespeichert.
Also brauchst du eine Klasse Mensch, eine Klasse Konfigurator (in dem Fall das UI) und eine Klasse der das ganze handelt. Nenn sie meinetwegen Gott(). Diese erzeugt sowohl den Menschen, danach den Konfigurator und gibt diesem den Menschen zum konfigurieren. Ist der Mensch konfiguriert schreibt gott() diesen in die datei.