Subklassen in Main File go or no-go?

Me.Name

Mitglied
Hallo wieder mal an alle,

ich hätte diesmal ein Frage was den Programmierstiel betrifft.

wenn ich einen File mit der static Main Methode erstelle ist es dann eigentlich legitim eine sozusagen kleine Subklasse im selben File zu erstellen, von der ich dann von der Main und nur von der Main aus zugreife.
Wenn dies gestattet ist welchen Modifier sollte dann die "Subklasse" bekommen und muss man diese Klasse danach in der Main instanzieren? Bzw. sollte man dann auch in die Subklasse getter und setter einbaun?

hier mein Konkretes Beispiel:
Java:
public class AsciiShop{
	public static void main(String [] args){
        AsciiImage aiObj = new AsciiImage(width,height);  //eingene Klasse mit eigenem File
       ..... Eingabe und so zeug
       if(Pattern.matches("line [0-9][0-9]* [0-9][0-9]* [0-9][0-9]* [0-9][0-9]*(.)",nextCmd)){
		nextCmd = nextCmd.substring(nextCmd.indexOf(' ')+1);
		int x0 = Integer.parseInt(nextCmd.substring(0,nextCmd.indexOf(' ')));					
		nextCmd = nextCmd.substring(nextCmd.indexOf(' ')+1);
		int y0 = Integer.parseInt(nextCmd.substring(0,nextCmd.indexOf(' ')));
		nextCmd = nextCmd.substring(nextCmd.indexOf(' ')+1);
		int x1 = Integer.parseInt(nextCmd.substring(0,nextCmd.indexOf(' ')));
		nextCmd = nextCmd.substring(nextCmd.indexOf(' ')+1);
		int y1 = Integer.parseInt(nextCmd.substring(0,nextCmd.indexOf(' ')));
		nextCmd = nextCmd.substring(nextCmd.indexOf(' ')+1);
		char c = nextCmd.charAt(0);
					
		aiObj.drawLine(x0,y0,x1,y1,c);
       ....weitere Anweisungen
       }
}

So jetzt ist leider meine Main-Methode durch mehrere solcher abfragen wie oben schon recht lange und unübersichtlich geworden. und da hab ich mich gefragt ob man die nicht einfach auslagern kann. zwar im selben File aber das halt das main übersichtlich bleibt.

[Java]
public class AsciiShop{
public static void main(String [] args){
AsciiImage aiObj = new AsciiImage(width,height);

if(Pattern.matches("line [0-9][0-9]* [0-9][0-9]* [0-9][0-9]* [0-9][0-9]*(.)",nextCmd)){
lineSplitt ls = lineSplitt(nextCmd);
aiObj.drawLine(ls.getX0,ls.getY0,ls.getX1,ls.getY1,ls.getC);
}
}

class lineSplitt{
private int x0;
private int y0;
private int x1;
private int y1;
private char c;

public lineSplitt(String line){
line = line.substring(line.indexOf(' ')+1);
x0 = Integer.parseInt(line.substring(0,line.indexOf(' ')));
line = line.substring(line.indexOf(' ')+1);
y0 = Integer.parseInt(line.substring(0,line.indexOf(' ')));
line = line.substring(line.indexOf(' ')+1);
x1 = Integer.parseInt(line.substring(0,line.indexOf(' ')));
line = line.substring(line.indexOf(' ')+1);
y1 = Integer.parseInt(line.substring(0,line.indexOf(' ')));
line = line.substring(line.indexOf(' ')+1);
c = line.charAt(0);
}

public int getX0(){return x0;}
public int getY0(){return y0;}
public int getX1(){return x1;}
public int getY1(){return y1;}
public char getC(){return c; }

}
[/code]


Ich hoffe ihr erkennt alle an meiner Fragestellung das ich noch blutiger Anfänger bin und habt ein wenig nachsicht, falls diese Frage völliger blödsinn ist.
ach ja die 2te Lösung die ich gepostet habe funktioniert leider nicht da schreibt er immer so fehler wie
"reach end of file while parseing" und oder "invalide methode"
danke schon mal vorab.
 
Zuletzt bearbeitet:

Antoras

Top Contributor
Schon mal was von Konstruktoren gehört? Diese müssen mit dem
Code:
new
-Schlüsselwort aufgerufen werden, was du bei deiner Klasse
Code:
lineSplitt
nicht machst. Im übrigen brauchst du keine 2. Klasse, da die 1. ja ebenfalls zur Verfügung steht.
Java:
public class AsciiShop{
  public static void main(String... args) {
    new AsciiShop();
  }
  public AsciiShop() {
    // mach was
    // rufe z.B. helpMethod() auf
  }
  private void helpMethod() {}
}
Die main-Methode ist der Einsprungpunkt deines Programms, sie sollte also eigentlich auch nur einen Konstruktor-Aufruf der Controller-Klasse beinhalten.
 

Marco13

Top Contributor
Was Antoras sagt, stimmt eigentlich, aber was genau in deiner main passiert ist nicht ganz klar. Eigentlich sollte die Main nicht viel mehr als 3 Zeilen haben. Ich finde, dass es da (nur?) eine Ausnahme gibt, nämlich wenn man die Kommandozielenargumente (String args []) irgendwie parsen will. Aber auch das würde man dann durch private static Utility-Methoden (oder sogar eine art "ArgParser"-Klasse) möglichst kompakt halten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
K Subklassen mit einzigem Befehl addieren Java Basics - Anfänger-Themen 6
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
E Abstracte Methoden in Subklassen? Java Basics - Anfänger-Themen 2
N Input/Output Java IO Writer - Subklassen Java Basics - Anfänger-Themen 19
S Subklassen oder Enumerationsklasse? Java Basics - Anfänger-Themen 6
A Vererbung Abstrakte Klasse mit Methode die Objekte der Subklassen benutzt? Java Basics - Anfänger-Themen 7
J Methode von Subklassen einzeln überschreiben Java Basics - Anfänger-Themen 12
X Vererbung Setzen auf Null bei Subklassen Java Basics - Anfänger-Themen 2
S Frage zu Collection-Generics in Subklassen Java Basics - Anfänger-Themen 6
M String Inhalt wird überschrieben (Subklassen verwenden denselben String) Java Basics - Anfänger-Themen 13
K OOP Aus Collection Objekte bestimmter Subklassen entfernen Java Basics - Anfänger-Themen 7
B Eine Methode für alle Subklassen aufrufen? Java Basics - Anfänger-Themen 8
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
I Jetty starten von Programm (Main) Java Basics - Anfänger-Themen 27
Denix The public type Main must be defined in its own fileJava(16777541) Java Basics - Anfänger-Themen 13
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
N Wozu nutzt man in der Main Methode das args Array? Java Basics - Anfänger-Themen 10
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
H Warum kann man keine Parameter in die main-Methode packen? Java Basics - Anfänger-Themen 4
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
KogoroMori21 Methode in der main ausgeben Java Basics - Anfänger-Themen 2
s_1895 zu viele Zeilen in der Main Methode Java Basics - Anfänger-Themen 4
C Methodenrückgabe wird in der main nicht berücksichtigt Java Basics - Anfänger-Themen 2
B Wie kann ich etwas vor der Main-Methode ausführen? Java Basics - Anfänger-Themen 21
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
T Main startet nicht bei vorgegebenen Code Java Basics - Anfänger-Themen 41
G main Methode Java Basics - Anfänger-Themen 5
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
1 main-Methode erweitern, Nachfrage nach wiedeholung Java Basics - Anfänger-Themen 2
J main methode Java Basics - Anfänger-Themen 1
B No Main Classes Found Java Basics - Anfänger-Themen 7
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
E Was kommt in ein Objekt und was in die Main Methode? Java Basics - Anfänger-Themen 8
D java main methode kann nicht kompiliert werden (Erstellen eines Objekts) Java Basics - Anfänger-Themen 6
M String außerhalb der main-Methode Java Basics - Anfänger-Themen 4
scratchy1 ArrayOutOfBoundException in main-Methode Java Basics - Anfänger-Themen 17
B File öffnen in src/main/webapp Java Basics - Anfänger-Themen 4
P Parameterübergabe, von Methode zu Methode zu main Java Basics - Anfänger-Themen 4
J Kapselung Array in Set ändern und in Main ausgeben lassen Java Basics - Anfänger-Themen 4
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
V Collections Objekte einer ArrayList in der main() ausgeben Java Basics - Anfänger-Themen 9
D Compiler-Fehler Aufrufen einer Methode von Main Java Basics - Anfänger-Themen 4
G Was als main Method Java Basics - Anfänger-Themen 6
M Methode mit Array als Parameter an Main übergeben Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
J Compiler-Fehler Java findet main Klasse nicht Java Basics - Anfänger-Themen 16
B Parameterübergabe in main Java Basics - Anfänger-Themen 1
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
I java.lang.ArrayIndexOutOfBoundsException at lösung.main Java Basics - Anfänger-Themen 3
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
J Parameter in main verwenden Java Basics - Anfänger-Themen 3
M Methodenaufruf in der Main Datei funzt nicht Java Basics - Anfänger-Themen 13
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
G Instanzvariable in main-Methode verboten? Java Basics - Anfänger-Themen 3
M Objekt starten von der main-Methode Java Basics - Anfänger-Themen 1
S Fehler: Editor does not contain a main type Java Basics - Anfänger-Themen 3
G Programm wird nicht ausgeführt: Editor does not contain a main type Java Basics - Anfänger-Themen 10
A Methode aufrufen in main-Methode Java Basics - Anfänger-Themen 5
B Linux - Error: Could not find or load main class application.Main Java Basics - Anfänger-Themen 28
C Erste Schritte (Netbeans) no main classes found Java Basics - Anfänger-Themen 5
U Klassen IntelliJ14.1.1 Ultimate startet eine Main-Klasse NICHT MEHR Java Basics - Anfänger-Themen 0
P Methoden private int[] in main Java Basics - Anfänger-Themen 16
W JLabel in Main aus Thread verändern. Java Basics - Anfänger-Themen 4
AssELAss Klassen Java Klasse in main-methode ausführen Java Basics - Anfänger-Themen 7
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
P could not find main class obwohl da Java Basics - Anfänger-Themen 17
J Methode in main-Methode aufrufen Java Basics - Anfänger-Themen 5
B OOP Wie benutze ich die Main Funktion richtig? Java Basics - Anfänger-Themen 10
M Klassen Main Methode in einer anderen Klasse aufrufen Java Basics - Anfänger-Themen 13
TheMenox Methoden Auslagerung von Code aus der "main" Methode sinnvoll? Java Basics - Anfänger-Themen 70
quecksilver if-Abfrage in main ausführen Java Basics - Anfänger-Themen 4
J Exception in thread "main" Java Basics - Anfänger-Themen 1
S Methode auf Main zugreifen Java Basics - Anfänger-Themen 5
D String aus Main in Klasse übergeben Java Basics - Anfänger-Themen 4
S Methoden main-Methode integrieren Java Basics - Anfänger-Themen 2
K Methoden Programm ohne Main Methode starten Java Basics - Anfänger-Themen 2
I Fehlermeldung: Java does not contain a main type Java Basics - Anfänger-Themen 1
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
F Erste Schritte (Gelöst) Anfängerfrage Arraylist ausserhalb der Main Methode Java Basics - Anfänger-Themen 2
N Variablen Variable in Main deklarieren und in anderer Methode nutzen Java Basics - Anfänger-Themen 12
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
R window-Klasse, main-loop und unausschaltbares anti-aliasing Java Basics - Anfänger-Themen 0
T Mehrere Methoden in der main-Methode verknüpfen und aufeinander anwenden Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben