Schlechte Programmierung

Semptic

Mitglied
Hallo,

ich habe ein schlechtes Gewissen dabei wie ich mein Programm schreibe, denn ich übergebe einigen meiner Klassen ihren Erzeuger und greife dann in der Klasse auf Funktionen des Erzeugers zu. Dies deshalb um nicht mehrere andere Objekte übergeben zu müssen.

Sieht dann so aus:
MainWindow:
Java:
public class MainWindow extends JFrame implements ActionListener, ListSelectionListener{
	
	private JTable iniTable;	
	PersonOverview personOverview;
	
	private ArrayList<Person> personen = new ArrayList<Person>();
	//Constructors
	public MainWindow() {
		super("Initiative Manger");
    	
    	GridBagLayout gridL = new GridBagLayout();
    	setLayout(gridL);
    	GridBagConstraints gridC = new GridBagConstraints();
    	
    	//Table
		iniTable = new JTable(new InITable());
			//Table config
			iniTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
			iniTable.setFillsViewportHeight(true);	
			iniTable.setModel(new InITable());
			iniTable.setMinimumSize(new Dimension(150, 150));
			iniTable.setSize(150, 150);
			
			ListSelectionModel lsm = iniTable.getSelectionModel();
	    	lsm.addListSelectionListener(this);
	    	iniTable.setSelectionModel(lsm);
    		//TablePane
			JScrollPane tablePane = new JScrollPane(iniTable);
    			//Layout
    			gridC.gridx = 0;
    			gridC.gridy = 0;
    			gridC.gridheight = 2;
    			gridC.gridwidth = 1;
    			gridC.anchor = GridBagConstraints.NORTH;
    			//gridC.fill = GridBagConstraints.BOTH;
    			gridL.setConstraints(tablePane, gridC);
		add(tablePane);
		
		personOverview = new PersonOverview(this);
			gridC.gridx = 1;
			gridC.gridy = 0;
			gridC.gridheight = 2;
			gridC.gridwidth = 1;
			gridC.fill = GridBagConstraints.NONE;
			gridL.setConstraints(personOverview, gridC);
		add(personOverview);  	
    }
	//Worker
	public void repaintTable() {
		int selectedRow = iniTable.getSelectedRow();
		Person selectedPerson;
		
		if (!(selectedRow < 0)) {
			selectedPerson = personen.get(selectedRow);
		} else {
			selectedPerson = new Person("Error");
		}
		
		if (!(selectedRow < 0)) {
			iniTable.changeSelection(personen.indexOf(selectedPerson), 0, false, false);
		}
		
		iniTable.repaint();
	}	
	public void deletePerson(Person person) {
		int i = personen.indexOf(person);
		iniTable.clearSelection();
		personen.remove(i);
		iniTable.changeSelection(i, 0, false, false);
		repaintTable();
	}
	//Listener
	public void valueChanged(ListSelectionEvent e) {
		int i = iniTable.getSelectedRow();
		if (!e.getValueIsAdjusting() && i >= 0) {
			personOverview.setPerson(personen.get(i));
		}
		
	}
}
PersonOverView
Java:
public class PersonOverview extends JPanel implements ActionListener{

	private Person person;

	//Constructors
	public PersonOverview(MainWindow owner) {
		setLayout(gridL);
		this.owner = owner;
		//blubb GUI blubb
	}
	
	public void setPerson(Person person) {
		//blub
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		Object sender = arg0.getSource();
		 if (sender == delete) {
			owner.deletePerson(person);			
		}
	}
}

PersonOverview erzeugt auch noch eine Instanz einer Klasse welche die Referenz auf MainWindow übergeben bekommt, und auf die Methode

repaintTable()

zugreift.

Sowas ist wirklich unsauber und ich sollte besser die benötigten Referenzen erzeugen, oder täuscht mich da mein gefühl?

€dit: Beispiel verändert
 
Zuletzt bearbeitet:

Mujahiddin

Top Contributor
Also in deinem Beispiel hätte ich das umgekehrt gemacht. Dass Mainwindow ein Objekt der Klasse MyClass ist... dann könnte MyClass direkt MainWindow.doOtherThings() aufrufen und MainWindow bräuchte keine Referenz auf MyClass.

Allgemein finde ich persönlich auch, dass sich zwei Klassen nicht gegenseitig kennen sollten. Das hat sich aber glaub ich nur bei mir eingebürgert, immer häufiger sehe ich in letzter Zeit sowas.

Du könntest auch mit dem Observer arbeiten... Ansonsten müsstest du auf andere Meinungen warten :)
 

Michael...

Top Contributor
In dem Fall würde ich die Implementierung des ActionListeners aus PersonOverview rausnehmen und in MainWindow stecken, da ja MainWindow die Klasse ist die als Listener auf Actions in PersonOverview reagieren muss und eine solche Implementierung in PersonOverview am falschen Platz ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Schlechte Bezeichner Java Basics - Anfänger-Themen 17
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
F Automat-Programmierung Java Basics - Anfänger-Themen 30
N Lambdas, Methodenref, fkt Programmierung ? Java Basics - Anfänger-Themen 10
districon Dynamisch Programmierung/Backtracking/Memoization Java Basics - Anfänger-Themen 3
S Buchstaben Programmierung Bedeutung Java Basics - Anfänger-Themen 4
S Hilfe bei Programmierung einer Hotelabrechnung Java Basics - Anfänger-Themen 5
enjoykimii Strukturierte Programmierung Hilfe Java Basics - Anfänger-Themen 29
A Frage zur programmierung Java Basics - Anfänger-Themen 12
Nerdinfekt Programmieranfänger, Schwierigkeiten mit der Programmierung Java Basics - Anfänger-Themen 6
U Compiler-Fehler Programmierung einer Drehkugel Java Basics - Anfänger-Themen 8
L Programmierung mit Hash Java Basics - Anfänger-Themen 3
C Wie habt Ihr angefangen mit der Java Programmierung, ohne Programmiervorkenntnisse Java Basics - Anfänger-Themen 8
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
S GUI-Programmierung Sudoku-Rätsel lösen Java Basics - Anfänger-Themen 1
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
S Programmierung simulieren - aber wie?! Java Basics - Anfänger-Themen 3
H Java Programmierung Java Basics - Anfänger-Themen 3
W Problem bei Programmierung von Monte-Carlo-Integration Java Basics - Anfänger-Themen 12
D Guten Tag mache gerade eine Umschulung zum FiSi war leider jetzt 2 Wochen Krank und wir hatten Prozendurale Programmierung. Java Basics - Anfänger-Themen 3
P Rechnen mit Brüchen - objektorientierte Programmierung Java Basics - Anfänger-Themen 18
D Objektorientierte Programmierung Java Basics - Anfänger-Themen 13
F Attribute bei Objektorientierter Programmierung Java Basics - Anfänger-Themen 11
F Ich brauche Hilfe bei Objektorientierter Programmierung... Java Basics - Anfänger-Themen 19
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
Q Objektorientierte Programmierung Java Basics - Anfänger-Themen 17
J Texte für Java Programmierung besser verstehen? Java Basics - Anfänger-Themen 2
C GUI Programmierung unter Windows mit Java womit? Java Basics - Anfänger-Themen 11
D Collections Aufgaben Java-Programmierung Überforderung Java Basics - Anfänger-Themen 36
A GUI Programmierung mit Textfield Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
U Brauche Hilfe bei Programmierung einer Produktdatenbank App Java Basics - Anfänger-Themen 4
L Dynamische Programmierung Java Basics - Anfänger-Themen 0
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
A Methoden Habe ein Problem bei folgender Programmierung Java Basics - Anfänger-Themen 15
slejden Erste Schritte Frage zur OOP (objektorientierten Programmierung Java Basics - Anfänger-Themen 4
V Threads Nebenläufige Programmierung Java Basics - Anfänger-Themen 6
V Nebenläufige Programmierung Java Basics - Anfänger-Themen 5
Henri Paare Frage über Java Programmierung Java Basics - Anfänger-Themen 10
S Programmierung eines Geldwechselautomaten! Java Basics - Anfänger-Themen 2
R Einige Neulingsfragen (Wrapper, GUI-Programmierung) Java Basics - Anfänger-Themen 4
D JavaBeans und die visuelle Programmierung Java Basics - Anfänger-Themen 2
M Dringend Experten für Scala-Play basierte Programmierung!!!! Java Basics - Anfänger-Themen 0
Z Programmierung eines Stacks Java Basics - Anfänger-Themen 19
A Programmierung herangehensweise Java Basics - Anfänger-Themen 9
T Objektorientierte Programmierung - Kein Plan wieso das nicht funktioniert! Java Basics - Anfänger-Themen 6
G 3D-Spiele-Programmierung Java Basics - Anfänger-Themen 3
I Programmierung-Hausaufgabe: Hilfe benötigt Java Basics - Anfänger-Themen 8
R Kann jemand diese Java Programmierung machen? Versteh ich leider nicht Java Basics - Anfänger-Themen 17
T Nachhilfe JAVA Programmierung Java Basics - Anfänger-Themen 1
R Schaffe es nicht Random-Programmierung zu vollenden. Wo liegt der Fehler in diesem Code? Java Basics - Anfänger-Themen 13
N Socket-Programmierung Java Basics - Anfänger-Themen 4
kaoZ Android Programmierung / Erstellen einer neuen Instanz Java Basics - Anfänger-Themen 2
O OOP Input & Output in der GUI-Programmierung Java Basics - Anfänger-Themen 2
O Java Grafik-Programmierung? Java Basics - Anfänger-Themen 16
F Fehler bei Array und Index Programmierung Java Basics - Anfänger-Themen 18
K Objektorientierten Programmierung Java Basics - Anfänger-Themen 3
R Einstieg in Programmierung Java Basics - Anfänger-Themen 8
W Problem bei MineSweeper Programmierung Java Basics - Anfänger-Themen 10
N Objektorientierte Programmierung: Erben von 2 Klassen - wie ist korrekte Vorgehensweise? Java Basics - Anfänger-Themen 16
D Best Practise für Programmierung Java Basics - Anfänger-Themen 7
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
W objektorientierte Programmierung Java Basics - Anfänger-Themen 25
W objektorientierte Programmierung - String in andere Klasse übergeben Java Basics - Anfänger-Themen 13
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
Grejak OOP Einstieg in Objekt-Orientierte-Programmierung Java Basics - Anfänger-Themen 3
D Frage zu Bit Operatoren in der Programmierung Java Basics - Anfänger-Themen 9
U Geräte-Programmierung ? Java Basics - Anfänger-Themen 15
S 2 kurz Fragen zur Möglichkeit der Programmierung Java Basics - Anfänger-Themen 7
T Objektorientierte Programmierung, わからない です Java Basics - Anfänger-Themen 6
J Allgemeine Fragen zur Programmierung Java Basics - Anfänger-Themen 36
N Grafische Programmierung mit jeweils anderen Bildern bei versch. Ergebnissen Java Basics - Anfänger-Themen 9
S Objektorientierte Programmierung Java Basics - Anfänger-Themen 21
M Gui Programmierung Java Basics - Anfänger-Themen 21
J Spielevorschläge für Programmierung Java Basics - Anfänger-Themen 3
O Eisenbahn-Programmierung Java Basics - Anfänger-Themen 8
O Probleme bei OO-Programmierung mit Vererbung Java Basics - Anfänger-Themen 18
M Programmierung kürzen??? Java Basics - Anfänger-Themen 5
N Umstieg auf objektorintierte Programmierung Java Basics - Anfänger-Themen 2
N Probleme mit meiner Programmierung Java Basics - Anfänger-Themen 5
M Meine erste Java Programmierung funzt nicht :-( Java Basics - Anfänger-Themen 34
H Programmierung Ampelsteuerung Java Basics - Anfänger-Themen 4
J [Erledigt] Applet Programmierung Java Basics - Anfänger-Themen 4
C Objektorientierte Programmierung Java Basics - Anfänger-Themen 11
T Gui Programmierung lernen Java Basics - Anfänger-Themen 3
E Toolkit (Scanner) Programmierung Java Basics - Anfänger-Themen 5
D Programmierung Profi Java Basics - Anfänger-Themen 18
G Problem bei Programmierung Java Basics - Anfänger-Themen 15
X Objektorientierte Java Programmierung - 3 Fragen zum Code Java Basics - Anfänger-Themen 5
G Problem bei Programmierung Java Basics - Anfänger-Themen 2
G thread programmierung für ANFÄNGER Java Basics - Anfänger-Themen 2
S generic programmierung "ne:w T[X]" Java Basics - Anfänger-Themen 2
A Einstieg in die Programmierung Java Basics - Anfänger-Themen 20
I Frage wegen Wörterbuch Programmierung Java Basics - Anfänger-Themen 13
X Programmierung mit geometrischen Figuren Java Basics - Anfänger-Themen 3
G Opjektorientierte Programmierung (OOP). einfach für euch Java Basics - Anfänger-Themen 4
G Funktions Programmierung Java Basics - Anfänger-Themen 5
W Gui - Grundsätzliche Programmierung Java Basics - Anfänger-Themen 11
G Schnittstellen Programmierung Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben