Keisreferenzen. Schlechter Stil?

Antworten
Benutzeravatar
salami
Beiträge: 179
Registriert: Mi 5. Nov 2008, 22:41
Wohnort: Karlsruhe

Keisreferenzen. Schlechter Stil?

Beitrag von salami »

Hallo.
Sind "Kreisreferenzen" schlechter Stil?

Code: Alles auswählen

public class KlasseA {
	private KlasseB objekt;

	public KlasseA() {
		objekt = new KlasseB(this);
	}

	public Irgendwas getIrgendwas() {
		return ...;
	}
}

public class KlasseB {
	private KlasseA objekt;

	public KlasseB(KlasseA obj) {
		objekt = obj;
	}

	public void methode() {
		... = objekt.getIrgendwas();
	}
}
Sieht stilistisch nicht sehr sauber aus, aber ich bin bei der 2. Abschlussaufgabe an eine Stelle gekommen, wo das der einfachste Weg wäre ein Problem zu lösen.
Thomas
Administrator
Beiträge: 383
Registriert: Do 23. Okt 2008, 20:16
Wohnort: Karlsruhe
Kontaktdaten:

Re: Keisreferenzen. Schlechter Stil?

Beitrag von Thomas »

sowas hab ich auch gemacht mir is nix anderes eingefallen wie man das sonst mit der print-methode hätte machen sollen...
da ich sowohl bei der spielklasse eine referenz der interface implementierungen brauche und bei den der implementierung die gleichzeitig schnittstelle ist brauch ich ne referenz zu der spielklasse -.-
naja sollte man vllt ma in der newsgroup nachfragen
also bei mir machen vor alem die konstruktoren ähnliche sachen die methoden hab ich glaub nich ganz so gemacht aba teilweise auch ähnliche sachen mit get...
Benutzeravatar
salami
Beiträge: 179
Registriert: Mi 5. Nov 2008, 22:41
Wohnort: Karlsruhe

Re: Keisreferenzen. Schlechter Stil?

Beitrag von salami »

Danke, dann mach ichs auch so. Hab das Problem u.a. auch bei der print-Methode.
Thomas
Administrator
Beiträge: 383
Registriert: Do 23. Okt 2008, 20:16
Wohnort: Karlsruhe
Kontaktdaten:

Re: Keisreferenzen. Schlechter Stil?

Beitrag von Thomas »

hm nochma zu den kreisreferenzen...
und zwar gibts dazu was neues aus der newsgroup:
man soll die spieler und bewerter objekte nicht in der spiellogik-klasse sondern in der main-shell klasse instanziieren. ich hab das jetzt so gelöst dass ich bei den implementierungen von evaluator und guesser für menschliche spieler ein attribut spielzustand spiel habe, dass ich bei der instanziierung null setze danach jeweils ein neues spielzustand-objekt erzeuge (alles in der shell halt) und dann mit einer setter methode das attribut der spieler bzw bewerter klasse neu setze
in code sieht dass dann z.b. so aus:

Code: Alles auswählen

SpielerMensch spieler = new SpielerMensch();
BewerterMaschine bewerter = new BewerterMaschine();
Spielzustand spiel = new Spielzustand(spieler, bewerter);
spieler.setSpielzustand(spiel);
es funktioniert auf jeden fall ma...
Antworten

Zurück zu „Allgemein“