Guter Programmierstil?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich programmiere jetzt schon einige Zeit in Java aber bei folgendem Problem weiß ich bis heute nicht, ob das so wie ich das mache, ein guter Programmierstil ist.

Angenommen man hat eine GUI mit verschiedenen Komponenten drauf. Daneben hat man mehrere andere Klassen, die ab und zu auf GUI-Elemente zugreifen müssen (beispielsweise um die Anzahl der Spalten einer JTable zu erfahren).


Doch wie sollen die anderen Klassen am besten auf GUI Elemente zugreifen?
Mit getter und setter Methoden und zuvor den anderen Klassen das GUI Objekt im Konstruktor übergeben? Oder gibts andere Möglichkeiten?


Hier mal ein simples Beispiel:


Code:
public class TestGUI extends JFrame{
	JTable table;
	DefaultTableModel model;
	JScrollPane scroll;
	public PacketMonitor(){
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// init gui
		String[] titles = new String[]{ "A", "B", "C"}; 
		model = new DefaultTableModel( titles, 0 ); 
		
		table = new JTable( model );
		scroll = new JScrollPane(table);
		scroll.setAutoscrolls(true);
		this.getContentPane().setLayout(new BorderLayout());
		this.add(scroll,BorderLayout.CENTER);
		this.pack();
		this.setSize(800, 600);
		this.setVisible(true);
	}
	
	
	
	public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {          
                TestGUI gui = new TestGUI ();                
            }
        });
	}



	public DefaultTableModel getModel() {
		return model;
	}	

	public void setModel(DefaultTableModel model) {
		this.model = model;
	}
	
	public JTable getTable() {
		return table;
	}
	
	public void setTable(JTable table) {
		this.table = table;
	}

	public JScrollPane getScroll() {
		return scroll;
	}

	public void setScroll(JScrollPane scroll) {
		this.scroll = scroll;
	}

}

Einer anderen Klasse hab gebe ich das GUI Objekt im Konstruktor und nutze dann die setter und getter Methoden. Aber ist das so richtig bzw. guter Programmierstil?
 

Marco13

Top Contributor
Ist ein bißchen wenig Information. Im allgemeinen sollten die "Kernklassen" (also der Teil, der die Programmlogik enthält) NICHT aufs GUI zurückgreifen. Wenn die "anderen Klassen" auch GUI-Klassen sind, mag das OK sein. Wenn es Logik-Klassen sind, sollten sie bestenfalls das TableModel kennen (aber auch da muss man sich genau überlegen, ob man diese Information nicht in einem eigenen Datenmodell speichert). Stell dir (zur Verdeutlichung) vor, dass dein Programm auch laufen können sollte, OHNE dass ein GUI existiert. Bei sowas wie getTable().getNumRows() wäre das evtl. nicht möglich.
 

Pappenheimer++

Bekanntes Mitglied
IMHO wär es besser, eine Controller-Klasse anzulegen. Die macht das ganze dann übersichtlicher, wartbarer, sauberer und du kannst die üblichen Thread-Probleme (race cond. , deadlocks) leichter in den Griff kriegen als wenn du verschiedene im Hintergrund arbeitende Threads hast, die hin und wieder "wild" die GUI updaten.
 
G

Gast

Gast
Hm,

also striktes MVC Konzept.
Besteht der Controller dann aus "static" Methoden? Denn irgendwo muss ich ja die Model-Klassen und GUI-Klassen speichern? Wenn der Controller nicht statisch ist, dann muss ich ja dauernd das Controller-Objekt mit herumschleppen.
 

SnooP

Top Contributor
Eigentlich ist es der Controller, der die anderen Objekte mit sich herum schleppt... - weder View noch Modelobjekte sind dann direkt mit der "Anwendung" verbunden - bzw. die Anwendung ist eine lose Kopplung aus Controllern, die alles steuern...

und... nein - nicht static - nein! nein... neinneinnein... - nein! ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
G Guter Programmierstil? Java Basics - Anfänger-Themen 8
K guter Programmierstil Java Basics - Anfänger-Themen 3
KopaCoda Getter mehrfach aufrufen -> ist das guter code? Java Basics - Anfänger-Themen 3
MiMa Guter Programmierstiel für Methoden, OOP verstoß? Java Basics - Anfänger-Themen 25
S Methoden Effiziente Permutation? Guter Permutationsalgorithmus? Java Basics - Anfänger-Themen 1
B guter Jar-Wrapper Java Basics - Anfänger-Themen 13
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
U Vernünftige Strukturierung, Guter Stil,. Java Basics - Anfänger-Themen 12
K BufferedReader im Konstruktor // guter Stil ? Java Basics - Anfänger-Themen 2
N Guter Zufallsgenerator für Java Java Basics - Anfänger-Themen 9
Silas89 Java in exe Compilieren (Guter Grund!) Java Basics - Anfänger-Themen 10
G guter Parser Java Basics - Anfänger-Themen 4
G Guter Rat ist teuer Java Basics - Anfänger-Themen 6
J Guter Stil der Java-Programmierung Java Basics - Anfänger-Themen 5
G Array mit Schleife durchlaufen - guter Stil? Java Basics - Anfänger-Themen 20
frau-u guter Stil - wie macht mans am Besten? Java Basics - Anfänger-Themen 8
J focusListener ...guter Code... Java Basics - Anfänger-Themen 2
Avalon Programmierstil beim Mocken Java Basics - Anfänger-Themen 45
K Sauberer Programmierstil? Java Basics - Anfänger-Themen 3
M Best Practice Programmierstil Graphen-A*-Suche Java Basics - Anfänger-Themen 5
F Erste Schritte Frage zum Programmierstil Java Basics - Anfänger-Themen 11
A OOP Fragen zu Programmierstil Java Basics - Anfänger-Themen 18
I Programmierstil Java Basics - Anfänger-Themen 64
E Richtiger Programmierstil ? Java Basics - Anfänger-Themen 51
M Sind ternäre Operatoren für einen guten Programmierstil wichtig ? Java Basics - Anfänger-Themen 10
M Programmierstil Java Basics - Anfänger-Themen 14
B Frage zu Programmierstil: sollte Hauptklasse nur main enthalten? Java Basics - Anfänger-Themen 6
D Programmierstil - Bei Vererbung welchen Typ benutzen? Java Basics - Anfänger-Themen 8
Bernasconi Programmierstil / Wann eine neue Datei? Java Basics - Anfänger-Themen 5
C Programmierstil und OOP Java Basics - Anfänger-Themen 7
M Programmierstil Java Basics - Anfänger-Themen 17
D Programmierstil Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben