Simple User Interface Frage

Status
Nicht offen für weitere Antworten.
S

Samuel

Gast
Die Frage ist zwar so simpel, aber ich komme auf keine zufriedenstellende Lösung.

Ein Teil des Problems ist die Frage, ob ich bei OOP mit einer UIF Klasse die UIF Klasse als static oder nicht definiere.
Braucht man von der UIF eine Instanz?
Und eine ähliche Frage im selben bezug, wenn ich eine Klasse UIF habe und zwei Klassen wie Controller und Spieler habe, kann dann Spieler ebenfalls die UIF benutzen?
Es geht nämlich darum, dass der Controller die UIF ja kennt, aber wie soll die Spieler Klasse die UIF kennen?
Andererseits gibt da noch die Frage, wenn ich die UIF durch eine GUI ersetzte, so muss ich doch im Falle von static, den ganzen Code umschreiben, oder? Überall wo ich die statics benutze, muss ich ja UIF.methode(); in den Klassen suchen und durch GUI.methode(); ersetzen.
Wie handhabt man denn sowas?

Also es gibt erstmal eine UIF, die wird später durch GUI ersetzt, aber ich möchtre nicht bild drauf los programmieren, während ich diese großen Lücken da oben in meinen Gedanken habe.

Danke
 
B

Beni

Gast
Tja, die Frage ist leicht zu beantworten: wenn du sie static definierst, ists kein OOP mehr :wink:

Du kannst Objekte per Referenz übergeben, hier hat es ein paar Beispiele.
 
S

Samuel

Gast
Ok, dann nicht static, aber das Szenario sieht grob umrissen so aus:
Es gibt einen Controller, einen Spieler und eine UIF.
Controller kennt Menge von Spielern und UIF.
Controller ist ein Spiel, in einer Schleife werden dann abwechselnd der Reihe nach die Spieler durch gegangen, grob:
Code:
Controller{
 UIF ui = new UIF();
 Spieler[] spieler = ....;
 public void function ablauf(){

 schleife(){
   //spieler 1
  position = ui.SpielerGibPosition(); 
  // tu was mit Spieler 1 Position
  //Spieler2
  position = ui.SpielerGibPosition();
  //tu was mit Spieler 2 position
 }

 }

}
Die Klasse Spieler enthält Namen usw.

Aber ist das da oben im Sinne vom Modellieren der Wirklichkeit?

Müsste das nicht eher so aussehen, dass der Controller den Spieler bittet, den Zug zu geben?

also sowas
Code:
Controller{
 UIF ui = new UIF();
 Spieler[] spieler = ....;
 public void function ablauf(){

 schleife(){
   //spieler 1
  position = Spieler[1].gibPosition(); 
  // tu was mit Spieler 1 Position
  //Spieler2
  position = Spieler[2]gibPosition();
  //tu was mit Spieler 2 position
 }

 }

}
Man bittet also den jeweiligen Spieler, den Zug zu geben, wobei dann der jeweilige Spieler eigentlich die ui mit SpielerGibPosition(); aufruft, es geht ja nicht, dass Spieler IO macht.
Es ist zwar natürlicher modelliert, aber was hiervon ist dem sinngemäßen OOP Gedanken näher?

Wir hatten bis jetzt immer nur abstrakte Controler - Spieler/User Verhältnisse, dort hatte immer Spieler die Aktion, wie gibZug usw, aber mit der UIF bin ich nun verwirrt
 
B

Beni

Gast
Das Model (hier die Spieler) sollten in einem engen MVC garnicht wissen, dass es da eine GUI gibt. Von dem her, würde ich den Controller die Abfrage machen lassen. Speichern würde ich die Position aber dann in den Spielern, da das ein Attribut der Spieler ist.
 
S

Samuel

Gast
Was bedeutet MVC?
Und es geht um eine Modellierung von dem Spiel Risiko.
Spieler ist eigentlicb nur dazu da um eine Referenz der Bereiche zu sein, die ihm gehören.
Also sollte niemand, ausser dem Controller sich um UIF kümmern?
 
B

bygones

Gast
MVC = Model - View - Controller. Ein Design Pattern für die logische Trennung der 3 Ebenen... siehe FAQ Beitrag "Design Patterns"
 
S

Samuel

Gast
Ich Idiot, natürlich :)
Hab sogar n ganzes Buch über Entiwcklungsmuster.

Aber was mir auch beim MVC noch nicht vollständig klar ist, ist das sehr modulare Modell, was bei uns zufällig rausgekommen ist.
Wir planen oder haben zu planen :) das Spiel Risiko, man muss halt Länder erobern, nun hat uns unser Entwurf zufällig die Möglichkeit gegeben Länder beliebig auszutauschen, also mit wenig Aufwand Risiko für Deutschland, Risiko für Berlin usw zu machen, wir haben die Unterländer als Provinzen definiert, diese haben eine Provinzmenge, welche ihre Nachbarn definiert, die gesammte Provinzen sind in der abstrakten Klasse Spielbrett, von dieser muss man erben und Spielbretter nach Wahl erstellen, SpielbrettDeutschland, SpielbrettWelt usw, dort werden die Provinzen halt mit Namen usw gefüttert.
Das funktioniert auch soweit ganz angenehm, aber wenn man Modell vom View trennt, was ja logisch ist, woher weiß dann die GUI, wie sich das spezielle SpielbrettX zu zeichnen hat?
Wir haben zwar ne Implementation der Provinzen, so dass diese ihre Nachbarn kennen, aber die GUI muss ja auch wissen, wie die Grenzen der Länder usw aussehen.
Mir fallen nur zwei Dinge ein, entweder SpielbrettX muss eine Methode zeichenDich haben, wobei MVC wieder hinfällig wäre, oder es muss noch extra für das jeweilige GUI/UIF eine implementierung der Karte als User Interface geben.
Denn bei einer Konsolenausgabe muss die Karte freilich ein wenig simpler aussehen, als bei einer GUI.
Natürlich wäre es ziemlich unpraktisch, beim wechseln des Spielbretts die GUI auch vollständig tauschen zu müssen, weil die GUI/UIF ja nicht nur vollständig aus der Kartenimplementation besteht.
Wenn ich SpielbrettBerlin durch SpielbrettDeutschland tausche bleibt die GUI im Bezug auf Eingaben und Menüs ja gleich, nur eben die Kartendarstellung nicht
 

dbase

Mitglied
Hallo,

wenn ich dich richtig verstanden habe, und dass muss jetzt nicht unbedingt sein...da ich schon sehr lange wach bin:-D...könntest du dir einfach mal das Singleton pattern ansehen...das sieht im Groben so aus...


1. Statische Variable vom Typ deiner Klasse definieren

Code:
public static MeineKlasse instance;

nun eine Methdode schreiben, die dir meinetwegen die GUI baut und das Objekt der Klasse liefert.
Code:
public static MeineKlasse getInstance() {

if(MeineKlasse.instance==null) {
//Baue mir meine GUI auf...
}
return MeineKlasse.instance;
}

Diese Klasse könnte eine Methode besitzen wie bspw.

public int getWasAuchImmer() {

return wasAuchImmer;

}

Somit kannst du von jeder anderen Klasse auf das Objekt zugreifen...

Code:
//In irgendeiner Klasse

MeineKlasse.getInstance().getWasAuchImmer();

Wenn ich dich falsch verstanden habe, dann einfach ignorieren^^

Gruß dbase[/code]
 
S

Samuel

Gast
Muss gleich weg und mir fällt nich ne Frage ein (gucke mir den Singleton post später genauer an)

Ist ein folgendes Szenario legitim?
Ich habe eine temporäre Klasse Armee, diese wird nur erzeugt, wenn man von einem Land ins andere will.
Aber kann die GUI eine Armee zurück liefern? Also darf die GUI spielspezifisch arbeiten?
Gemeint ist, Controller fragt GUI, von wo nach wo sollen wieviele Armeen bewegt werden.
User tippt dann a,b 20 in GUI ein, kann dann die GUI ein Armee Objekt zurückliefert, aus den Daten a,b, 20?
Oder soll eine GUI nur ints oder Strings liefern?
 
S

Samuel

Gast
Moment mal, hilft mir hier überhaupt MVC weiter?
Der Controller bestimmt doch die Möglichkeiten, wie Benutzerschnittstellen auf Benutzereingaben reagieren, aber wo ist dann die GUI? Die GUI ist doch in meinem Fall die Benutzerschnittstelle, als auch das View Objekt
 
B

Beni

Gast
View: die GUI
Model: die Daten
Controller: Das Ding das zwischen Model und View verhandelt. Der Controller kann manchmal mit der View "verschmelzen", das ist nicht sooooo schlimm. Schlimmer ist, wenn Model und View verschmelzen, dann gibts echten Codesalat.
 
S

Samuel

Gast
Achso!
Verstehe, allerdings frage ich mich, wer soll denn in meinem Fall nun wissen, wie mein SpielbrettX aussieht?
Muss die GUI noch eine GUI Version des SpielbrettX kennen? Welche dann sich selbst zeichnet?
 
B

bygones

Gast
ich bin jedenfalls verwirrt... ist das Spielbrett nicht die GUI ?!
 
S

Samuel

Gast
Hehe, nein, Spielbrett ist Abstrakt, die konkreten Spielbretter wie SpielbrettDeutschland usw implementieren die Menge der Subländer (habs mal Provinzen genannt) in der Form, dass man halt jeder Provinz einen Namen und eine Menge an Nachbarprofinzen gibt.
Das ist halt relevant, damit man später prüfen kann, ob man von Provinz A nach Provinz B kommt, dass ist nur die Logikschicht des Spiels.
SpielbrettX enthält bis jetzt nichts davon, wie das Spielbrett aussehen kann, damit ist es doch ein Teil vom Modell, oder? Somit dürfte es ja nichts mit der graphischen Darstellung zutun haben, würde das Teil ebenfalls die Informationen für das graphische beinhalten, müsste ich ja das Spielfeld komplett überarbeiten, wenn ich anstatt einer GUI doch lieber eine UIF als Konsolentextadventure haben möchte :)

Irgendwie ist da n Wurm drin, weil ich nicht weiß , wie ich die austauschbaren Spielbretter ebenfalls mit einer GUI kombiniere ohne alles zu vermischen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Simple Date Format Alternativen bitte um Code Allgemeine Java-Themen 14
K Simple Wassersimulation Allgemeine Java-Themen 6
Thallius Simple JSON Parser Error null Allgemeine Java-Themen 6
4 Simple(?) Frage zu Threads Allgemeine Java-Themen 14
S Simple Rechnung automatisieren Allgemeine Java-Themen 4
I zwei simple fragen Allgemeine Java-Themen 22
B Login für User, der im Hintergrund Schedules ausführt Allgemeine Java-Themen 16
L Super User via Processbuilder (Linux) Allgemeine Java-Themen 3
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
OnDemand Logfile pro User / Thread Allgemeine Java-Themen 7
W Java Telegram Bot - Eingabe durch User Allgemeine Java-Themen 2
T Loginname von User an PC im Netzwerk holen Allgemeine Java-Themen 2
K Jar/DLL Abhängigkeiten durch User angeben lassen Allgemeine Java-Themen 6
VfL_Freak JDK installieren System-Property "user.dir" Allgemeine Java-Themen 6
Thallius Konzeptproblem User-Interface Allgemeine Java-Themen 5
Thallius User-Settings: Wie handelt ihr das? Allgemeine Java-Themen 4
Bananabert Swing jtree : image als user object Allgemeine Java-Themen 2
alderwaran .jar Code Signing, User-Keystore und Fragen dazu Allgemeine Java-Themen 0
S Random Passwort für den User + Hashen Allgemeine Java-Themen 6
Guybrush Threepwood Kein user.home unter Windows8 Allgemeine Java-Themen 7
T User Verwaltung mit JPA Allgemeine Java-Themen 2
B Java FTP (common net - user anlegen) Allgemeine Java-Themen 2
C Input/Output Beste Möglichkeit für user non-readable Datei Allgemeine Java-Themen 7
D Daten eines User auslesen. Allgemeine Java-Themen 5
R Welches User-Verzeichnis wählen für Configurationsdateien - Windows Allgemeine Java-Themen 2
R Windows - User Passwort ändern Allgemeine Java-Themen 2
Kr0e User management system Allgemeine Java-Themen 2
B User-Input aus Zahlen und Operatoren - beste Umsetzung? Allgemeine Java-Themen 8
H blinde MAC User Allgemeine Java-Themen 15
H user.dir + verknüpfung Allgemeine Java-Themen 5
S "Guessed User name" bei Tomcat belegen Allgemeine Java-Themen 2
G Java Anwendung für Multi-User Allgemeine Java-Themen 2
K Chatengine User auf Chatbot Allgemeine Java-Themen 3
S Änderung an Proberties datei an alle User weitergeben? Allgemeine Java-Themen 7
P URL mit htaccess in Explorer öffnen (ohne user-passwort) Allgemeine Java-Themen 6
K JUnit 4 User Interaktion Allgemeine Java-Themen 7
P System.getProperty("user.dir") Allgemeine Java-Themen 10
B User Login: JPasswordField + JPasswordField_wdh vergleichen Allgemeine Java-Themen 2
J Suse + Tomcat + Sysdeo Plugin: Tomcat als user starten Allgemeine Java-Themen 2
T User-Kennung im Source hinterlegen? Allgemeine Java-Themen 4
T System.getProperty("user.home") Allgemeine Java-Themen 12
I Verschlüsselung mit Pwd. - User soll Algorithmus wählen Allgemeine Java-Themen 4
D NT User auslesen aus windows 2000 Allgemeine Java-Themen 2
A Synchronisation Datenquelle und Anwendung (Multi-User) Allgemeine Java-Themen 7
D System.getProperty("user.dir") ? Allgemeine Java-Themen 1
H Zugriff auf statische Methode durch mehrere User Allgemeine Java-Themen 19
J User Klasse in den Vector, Object Klasse wieder raus... Allgemeine Java-Themen 4
B Leere vererbte Interface-Methoden Allgemeine Java-Themen 8
OnDemand Interface imlementieren Allgemeine Java-Themen 4
Buroto Interface Allgemeine Java-Themen 2
T Komische Zeichen im Zusammenhang mit Serializable interface Allgemeine Java-Themen 13
M Kann man Annotationen auf Klassen einschränken die ein Interface implementieren? Allgemeine Java-Themen 1
H Kombination Interface und Abstrakte Klasse bei Generics Allgemeine Java-Themen 3
B JaxB und @XmlIDREF mit Interface Allgemeine Java-Themen 1
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
P Abstrakte Klassen vs. Interface Allgemeine Java-Themen 4
Kirby.exe Autocloseable Interface Allgemeine Java-Themen 2
T Abgeleitetes Interface public ohne Schlüsselwort "interface"? Allgemeine Java-Themen 3
S static in Interface und Klasse Allgemeine Java-Themen 2
S static methode im Interface Allgemeine Java-Themen 1
S Interface, generischer Datentyp, Exception? Allgemeine Java-Themen 3
B Vererbung Interface und implementierende Klassen Allgemeine Java-Themen 8
A Anonyme Klassen - Interface Allgemeine Java-Themen 5
C Ein Iterator ist eine Implementierung des Interface Iterable? Allgemeine Java-Themen 2
J Generische Interface - Problem Allgemeine Java-Themen 3
mrBrown Namensfindung Fluent-Interface Allgemeine Java-Themen 0
J Logik in Interface Allgemeine Java-Themen 2
N Best Practice Allgemeines Verhalten für ein Interface implementieren? Allgemeine Java-Themen 7
B eigenes Consumer Interface Allgemeine Java-Themen 0
S 2 methoden mit gleichen namen und ein Interface Allgemeine Java-Themen 9
N GUI Interface, swing Allgemeine Java-Themen 7
T Interface vs abstract Allgemeine Java-Themen 2
S Klassen Abstract, Interface und ein Chat Tool Allgemeine Java-Themen 1
I Interface Interface / Klasse - wieso Abstract? Allgemeine Java-Themen 13
D generische Interface und konkrete Methode Allgemeine Java-Themen 3
C Klassen Problem mit Funktion einer Generischen Klasse die ein Interface implementiert Allgemeine Java-Themen 0
N Problem mit Generics und Interface Allgemeine Java-Themen 4
D Methode mit optionalen Parametern in Interface Allgemeine Java-Themen 3
T Interface mit generische Typen Allgemeine Java-Themen 5
M Interface einer Library implementieren Allgemeine Java-Themen 3
A Klassen ein Interface aufzwingen Allgemeine Java-Themen 4
Bananabert Interface Custom 'Event' mit Interface Allgemeine Java-Themen 10
J Interface Serializable Methodensignatur Allgemeine Java-Themen 2
J Interface Interface für Framework verwenden Allgemeine Java-Themen 4
F Interface IInterface oder Interface? Allgemeine Java-Themen 3
M Generics (bounded wildcards statt Interface Bezeichnern) -- Sinn oder Unsinn? Allgemeine Java-Themen 2
T Interface Probleme Allgemeine Java-Themen 8
M Queues und Queue Interface Allgemeine Java-Themen 3
I Mehrfaches Implementieren eines generischen Interface Allgemeine Java-Themen 9
W Java Native Interface und "mp3player" Allgemeine Java-Themen 3
M Über Liste verschiendene JComponents mit eigenem implementierten Interface ansprechen Allgemeine Java-Themen 7
P Eclipse Java Native Interface-Problem Allgemeine Java-Themen 8
Z Abstrakte Klassen /Interface Allgemeine Java-Themen 5
pg1337 Interface-Frage Allgemeine Java-Themen 24
S Interface Welchen Interface Stil favorisiert ihr? (usability) Allgemeine Java-Themen 17
faetzminator statische Variablen in Interface - Vererbung? Allgemeine Java-Themen 9
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6
T OpenOffice Interface Elemente Ein/Ausblenden Allgemeine Java-Themen 5
K Interface Interface comparable machen Allgemeine Java-Themen 9
T Interface > Abstract > Class Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben