Programmlogik, wo ist die Main?

Status
Nicht offen für weitere Antworten.
S

Samuel

Gast
Sagen wir ich möchte ein Spiel bauen (wurscht welches), so habe ich neben ner Menge anderer
Klassen zwei wichtige Klassen: Spiel und UIF.
Spiel enthält die ganze Programmlogik, kennt also die Regeln und alle relevanten Klassen.
Und ich habe das User Interface, welches später auch ein GUI implementiert, aber das ist ja latte.

Nun ist mir noch nicht ganz das logische Zwischenspiel der beiden im Bezug GUI/UIF klar, gehen wir erstmal von UIF aus:
Main ist in Klasse "Spiel".
Spiel legt sich Instanzen an, z.B. Spieler, für deren Namen benutzt es die Instanz oder static Methode der UIF.
Erste Frage, sagen wir, die UIF benutzt Konsole, wer von den beiden, Spiel oder UIF haben den String "Bitte Namen eingeben" ?
Das UIF, oder?
Ok, gehe ich mal davon aus, nun bekommt UIF eine gültige Eingabe in der Konsole und gibt den Wert an Spiel weiter, usw.

Nun das selbe bei einer GUI.
Wie kann man hier elegant arbeiten? Nehen wir als Beispiel mal Schiffe versenken.
Das UIF wurde erst dann aktiv, als der Name eigegeben werden musste.
Aber das GUI muss doch eigentlich viel früher aktiv werden, um Fenster zu erzeugen usw. Heißt dass, das wenn eine GUI da ist, die Main auf einmal in der GUI sein muss?
Es muss ja zuerst die Canvas da sein, wo man neues Spiel oder beendet usw wählt.
Bedeutet dass, das man bereits bei einer UIF schon so denken muss, dass die Main in der UIF drin ist? Und dass diese halt nur sowas wie Stubs der "zeichneFenster" Methoden hat?

Gehe ich davon aus, dass die Main in Spiel liegt, so kann ich zwar, wenn ich am Punkt der Namenseingabe bin, ebenso bequem anstatt der UIF die GUI nehmen, aber wo bleibt dann der Rest, der bei ner UIF nicht da war und bei der GUI da sein muss?
 
S

Samuel

Gast
Hui, ich hoffe, ich habe mich halbwegs verständlich ausgedrückt
 
R

Roar

Gast
ist doch schnurzegal wo die main liegt. bei mir liegt sie meistens eh immer in ner eignen klasse. war dasjetz deine frage? ???:L
 
S

Samuel

Gast
Ehm nein, ich habe mir eine fundiertere Erörterung des Themas aus der Sicht der OOA gewünscht.

Weil die Überlegung maßgeblich für die Entwicklung ist, denn main in Spiel würde bei einem wechseln von UIF zu GUI das Umschreiben des Spiels benötigen
 
R

Roar

Gast
wo ist bei dir der unterschied zwischen "UIF" (= User Interface?) und "GUI" (= Graphical User Interface) ? wenn du in deinem programm model, controller und uif anständig getrennt hat ist das egal ob das interface über die konsole geht oder über bunte bildchen.

Heißt dass, das wenn eine GUI da ist, die Main auf einmal in der GUI sein muss?
hab ich so aufgefasst ???:L

wo die main liegt ist egal, am besten in keiner von den beiden teilen.
 
S

Samuel

Gast
Ja ok, aber sagen wir, die main ist ausserhalb und die UIF implementiert nur eine Konsolen variante.
So wird doch die Main ein anderes verhalten bei einer UIF als wie bei einer GUI erfordern, oder nicht?
Die Interfaces der beiden Klassen sind doch eigentlich anders oder?
GUI hätte dann eine Methode "zeigeSplashscreen", welche eine simple UIF auf Konsolenbasis ja nicht besitzt.
Ergo muss doch der Controller auch bei einer UIF anders denken als bei einer GUI.
Bein einer UIF denkt der Controller beim Spielsart : UIF gib mir die Namen, bei einer GUI denkt das Ding aber 1: Zeige bitte das GUI, 2: erzeuge Maske für Namen.
Punkt 1 trifft aber nicht annährend auf UIF zu, weil dort keine GUI vorhanden ist.
Dadurch sind doch beide vom Ablauf grundverschieden.
 
R

Roar

Gast
mhm ich versteh was du meinst: zu deinem beispiel: der controller muss nur rumfragen, wie der spieler heißen soll. der rest: dialog anzeigen, blablabla, macht die gui von alleine.
wenn keine gui angezeigt werden soll, wird keine gui angezeigt. der controller kricht nur den namen um das spiel zu starten.

die main() instantiiert höchstens die objekte und startet das spiel, falls das nicht automatisch geschieht. für den rest sind die einzelnen module selbst verantwortlich. einzige ausnahme wör z.b., falls das laden des controllers etc. so lang dauert, dass man besser einen splashscreen anzeigt.
 
S

Samuel

Gast
Ja, aber genau darum gehts ja, Beispiel: Wir sollen an einem Projekt arbeiten, welches in der ersten Phase nur eine UIF implementiert und später erst, nach nem Meilenstein des Projekts, wenn das Ding komplett läuft, wird die UIF weggeworfen und die GUI reingesetzt und dennoch geht alles.
Wenn aber in der ersten Phase die UIF so implementiert ist, das nach dem starten des Spiels als erste UIF aktion das eingeben des Spielernamens erforderlich ist, so kann man ja nicht einfach die UIF jetzt wegschmeißen und ne GUI benutzen, weil diese ja zwar die selbe Schnittstelle für Namenseingabe besitzt, aber noch weitere ungenutzte Methoden wie zeigeStartscreen usw.

Ich versuch mal morgen ein Sequenzdiagramm für die beiden Teile zu basteln, vielleicht wirds dann klarer.

Gruß
 
S

Samuel

Gast
Aaaah, gestern Abend kam mir noch die Antwort auf meine Fragen, wenn Spiel in der UIF kein zeigeBildschirm vor gibUserNamen aufruft, so tut das Spiel bei GUI auch nicht.
Daher muss man sich schon von vornherein mit einer Interface Klasse beschäftigen, die beide Implementieren, dann haben auch beide eine zeigeBildschirm Methode, welche die UIf einfach nur durch ne Textausgabe implementiert.

Das ist doch die Lösung, oder?

Aber was ist, wenn bei der GUI noch unbekanntte Methoden später auftauchen werden, die man jetzt noch garnicht mitbedacht hat?
Die kann man dann zwar hinzufügen, dürfen aber in der Programmlogik von Spiel keine Rolle spielen, nicht wahr?
Das wären dann irgendwelche Submethoden, die von den Interface Methoden genutzt werden.
 

AlArenal

Top Contributor
Wenn hinterher was komt, woran man vorher nicht gedacht hat, dann muss man eben mal vorhandenen Code umschreiben. Es ist ein Trugschluss zu denken, man könnte von Beginn an alles einplanen. Macht auch keinen Sinn, wenn man auch mal fertig werden möchte.

Umschreiben und Refactoring gehört dazu.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
Encera Zweite Main-Methode zuschalten Allgemeine Java-Themen 18
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
F Konstante an main - Argumenten initialisieren Allgemeine Java-Themen 1
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
F Was ist der Dateityp meines Parameters für die Main Methode. Allgemeine Java-Themen 6
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
W Warum muss void main() public sein? Allgemeine Java-Themen 3
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
L sortiertes Array im main aufrufen klappt nicht. Allgemeine Java-Themen 3
Tort-E Manifest Main-Class Allgemeine Java-Themen 8
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
A main-class Not found Allgemeine Java-Themen 3
A Konstrukt ohne Main für Xml-Parser Allgemeine Java-Themen 1
P JDK installieren Error: Could not find or load main class HelloWorld.java Allgemeine Java-Themen 3
I JFrame Icon in Main übergeben Allgemeine Java-Themen 1
Phash Can't find Main Class Allgemeine Java-Themen 4
X Could not find the main class programm will exit (textdokument) Allgemeine Java-Themen 3
127.0.0.1 Subversion neues SVN Projekt, keine Main gefunden ?! Allgemeine Java-Themen 7
S Could not find the main class Allgemeine Java-Themen 7
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
C Could not find the main class. Allgemeine Java-Themen 15
I Main wird nicht gefunden Allgemeine Java-Themen 3
B Threads Main Thread warten auf abgebrochen Task warten lassen Allgemeine Java-Themen 25
A Could not find main class: start Allgemeine Java-Themen 5
S main() class finden Allgemeine Java-Themen 7
hdi Could not find main class? Allgemeine Java-Themen 8
B Cannot find main-claas... Allgemeine Java-Themen 21
G jar Datei findet Main Class nicht... Allgemeine Java-Themen 2
P Java Editor Could not find the main class GUI. Programm will exit. Allgemeine Java-Themen 3
E Programm von Main Methode starten Allgemeine Java-Themen 9
BattleMaster246 Could not find the Main class Allgemeine Java-Themen 30
reibi Main-Class in Jarfile Allgemeine Java-Themen 3
G Hauptthread anhalten / Unterschied zwischen Main-Thread und dialogelement-Thread Allgemeine Java-Themen 2
badfish Inerhalb der [void main] auf ein Objekt der [protected void] zugreifen Allgemeine Java-Themen 13
N Probleme mit .jar 'Could not find main class' Allgemeine Java-Themen 3
N Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.p Allgemeine Java-Themen 4
J Main-Thread soll auf alleKinder Threads warten Allgemeine Java-Themen 5
B Main Thread Status abrufen Allgemeine Java-Themen 4
N import com.sun.tools.javac.Main; Allgemeine Java-Themen 1
V main(...) aus Klasse in PDF starten? Allgemeine Java-Themen 3
B UML: Main classe verschwindet nach code generierung nicht?! Allgemeine Java-Themen 4
I Signatur von Main-Methoden? Allgemeine Java-Themen 29
T zu Beginn der main: Heap space ermitteln und hochsetzen Allgemeine Java-Themen 11
J Applet in JAR packen - was muss in main() stehen? Allgemeine Java-Themen 12
E beim Ende der main() das Programm nicht beenden Allgemeine Java-Themen 3
J Unicode: cmd parameter (main args); exec params; filenames Allgemeine Java-Themen 2
V Mehrere main() in jar, wie starten? Allgemeine Java-Themen 4
J Methode nicht ausführbar in main Allgemeine Java-Themen 7
P Kann .jar nicht ausführen - main class not found Allgemeine Java-Themen 6
B Jar File und die Main Klassen Allgemeine Java-Themen 3
M zwei main-Methoden Allgemeine Java-Themen 7
L static main - Spezifikation? Allgemeine Java-Themen 7
N Main-Klasse wird beim Aufruf des JARs nicht gefunden Allgemeine Java-Themen 8
J Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 26
G [JDK 6u2] - JAR Failed to load Main-Class manifest attribute Allgemeine Java-Themen 6
P Zugriff von Klasse 2 auf Klasse 1 (die main methode hat) Allgemeine Java-Themen 5
G Programm ohne Main Allgemeine Java-Themen 10
M Parameter an main übergeben aber wie? Allgemeine Java-Themen 4
J jar-Datei enthält keine Main-Class Allgemeine Java-Themen 22
C Mehrere main-Klassen in JAR Allgemeine Java-Themen 2
S Exception in Thread "main" java.lang.NoClassDef. b Allgemeine Java-Themen 2
G "Could not find the main class. Program will exit" Allgemeine Java-Themen 20
A Warum gibts die Main und was sollte drin stehen? Allgemeine Java-Themen 31
B Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 12
C Mehrere main-Methoden in einer jar Allgemeine Java-Themen 7
J Warum heißt es eig. "public static void main" ? Allgemeine Java-Themen 4
G DBzugriff funktioniert nach 'Build Main Project' nicht mehr Allgemeine Java-Themen 2
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 15
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
S wie übergebe ich eine Variable aus einer Methode an main() ? Allgemeine Java-Themen 16
B Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 5
S Exception in thread "main" java.lang.StringIndexOu Allgemeine Java-Themen 9
R Ausführen von *.JAR || "Could not find main class" Allgemeine Java-Themen 7
I "Could not find the main class. Program will exit" Allgemeine Java-Themen 6
L boolean aus der main übergeben? Allgemeine Java-Themen 12
H jar-file in anderem main programm ausführen Allgemeine Java-Themen 2
M Klassenname in main-Methode ausgeben? Allgemeine Java-Themen 29
G Exception in thread "main" :? Allgemeine Java-Themen 5
E Exception in Thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 5
B Could not find the main class Allgemeine Java-Themen 2
A Was haltet ihr von einer standardisierten Main Klasse? Allgemeine Java-Themen 4
E Klasse dynamisch über main-Methode aufrufen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben