Klassen Klassenketten?

Trabbelmaker

Aktives Mitglied
Guten Tag,
ich habe eine kleine Frage zu Klassen.
Ist es schlau wenn man eine Klassenkette macht?
Ich meine das so:
Wenn man das Programm ausführt, abreitet sich Klasse 1 ab und dann geht es bei
der nächsten Klasse weiter.
Ich versuche das mal mit mein vorhaben zu erklären.
Ich habe ein kleines Programm gemacht, wenn man es startet, muss man sein Geburtsland eingeben (Klasse 1),
wenn man dies getan hat wird man zur bestätigung (Klasse 2) weitergeleitet. Wenn man dies getan hat,
muss man sein Namen eintragen (Klasse 3) undso weiter.
Also dass eine "Klassenkette" entsteht.
Oder ist es besser, wenn man nachdem man nach Klasse 2 wieder auf Klasse eins zurück geleitet wird und dort sein Namen eingibt.

Was ist die intelligentere Methode?

Mit freundlichen Grüßen,
Trabbelmaker
 

jeegeek

Mitglied
Ich verstehe jetzt nicht so ganz was genau du machen möchtest. Du möchtest wenn dein Programm ausgeführt wird eine Methode aus der Klasse 1 aufrufen die den Anwender einen Wert eingeben lässt und danach fragt eine Methode aus Klasse 2 einen weiteren Wert ab? Das ist grundsätzlich möglich, jedoch macht es Sinn eine Klasse zu schreiben die zusammenhängende Informationen abfragt damit das ganze übersichtlich bleibt.

Poste doch bitte mal einen Code damit wir nachvollziehen können was du wie versuchst zu machen.
 

Trabbelmaker

Aktives Mitglied
Also mein Code funktioniert zu 100% so wie ich es haben möchte :)
Ich will nur wissen, wie ich die Klassen verbinden soll.
Im moment habe ich Drei Klassen.
Eine Testklasse:
Java:
package de.Javalernen1.java;

class Test {
	
	public static void main(String[] args) {
		Laenderwahl lw = new Laenderwahl();
		lw.geburtsLand();
	}

}

Eine Klasse, wo ich das Land bestimmen kann:
Java:
package de.Javalernen1.java;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Laenderwahl {
	private String sprache;
	
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

	public void geburtsLand() {
		System.out.println(">>>>In welchen Land bist du geboren?<<<<");
		System.out.println("Schreib bitte dein Geburtsland in den Chat");
		System.out.println("Deutschland || England || Frankreich || Spanien || Unbekannt");
		
		try {
			sprache = br.readLine();
		} catch (IOException e) {
			System.out.println("Es ist ein Fehler aufgetreten: " + e);
		}
		
		if (sprache.trim().toLowerCase().equals("deutschland")) {
			Laender herkunftgerman = new Laender();
			herkunftgerman.herkunftGer();
		} else if (sprache.trim().toLowerCase().equals("england")) {
			Laender herkunftengland = new Laender();
			herkunftengland.herkunftEng();
		} else if (sprache.trim().toLowerCase().equals("frankreich")) {
			Laender herkunftfrankreich = new Laender();
			herkunftfrankreich.herkunftFra();
		} else if (sprache.trim().toLowerCase().equals("spanien")) {
			Laender herkunftspanien = new Laender();
			herkunftspanien.herkunftSpa();
		} else if (sprache.trim().toLowerCase().equals("unbekannt")) {
			Laender herkunftunbekannt = new Laender();
			herkunftunbekannt.herkunftUnb();
		}
	}
}

Und denn noch eine Klasse, die nachdem man das Land gewählt hat, ausgeführt wird. (Viel zu lang)
Nun ist mir nicht ganz klar, wo ich die nächste Klasse anschließen soll.
Die nächste Klasse soll vom Prinzip her, genau das gleich machen, wie die Klasse mit der Länderabfrage,
nur halt mit den Namen.
 

stg

Top Contributor
Klassen werden überhaupt nicht ausgeführt, deine Frage ergibt daher überhaupt keinen Sinn.

Methoden hingegeben erledigen im Idealfall nur genau eine Aufgabe, das kommt denke ich am ehesten an den eigentlichen Kern deiner Frage heran. Offenbar solltest du dir aber wirklich die Grundlagen der OOP (noch-)einmal anlesen.
 
Ich würde an deiner Stelle eine Methode als zentralen Punkt wählen, der alle gewünschten Methoden nacheinander aufruft. Dies erhöht die Übersichtlichkeit. Denn man sieht anhand dieser einen "Steuerungsmethode", so nenne ich sie jetzt mal, welche Methoden alle ausgeführt werden und natürlich auch in welcher Reihenfolge. Andernfalls muss man sich deinen ganzen Code durchlesen um zu verstehen was er macht. So ist es später auch einfacher falls in deiner Kette eine neue Methode hinzukommt, diese zu berücksichtigen. Andernfalls bei deinem Kettenaufruf, musst du alle aufgerufenen klassen bearbeiten, was ich für ziemlich unglücklich halte.
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
Eine "Klassenkette" ist immer falsch. Du hast die Klasse "Land" und dort kannst du deine if-Else reinpacken. Ist zwar immer noch nicht ideal, aber schonmal einen Schritt besser.

Java:
public class Land {
    private String name;

    public Land(String name) {
        this.name = name.trim();
    }

    public String printHerkunft() {
            System.out.println("Du kommst aus " + name + ".");
    }
}
 

Trabbelmaker

Aktives Mitglied
Vielen dank OutOfBeerExept. :) Das ist mal eine Antwort auf meine Frage.
Ich habe jetzt eine Hauptklasse, wo man alles sehen kann, was ausgeführt und in welcher Reihe etwas ausgeführt wird :) Mehr wollte ich nicht wissen

Vielen dank für alle helfer.

Mit freundlichen Grüßen,
Trabbelmaker
 

Neue Themen


Oben