OOP Spezialisierung unschön!?

J

Justus86

Gast
Ich habe eine Klasse, die gewisse Daten speichert, später kommt ein neues Datum hinzu, dacht ich mir, erb ich doch mal von dieser Klasse (alles natürlich aufs wesentliche gekürzt):

Java:
public class StateImpl implements State {

	private int clientCount;
	private float saturation;
	private Res resource;
	protected int stateID;
	private static int totalStateCount = 0;

	public StateImpl(Res resource, int cc, float sat) {
		this.resource = resource;
		this.clientCount = cc;
		this.saturation = sat;
		this.stateID = ++totalStateCount;
	}
	
	public StateImpl(State s){
		this.resource = s.getRes();
		this.clientCount = s.getClientCount();
		this.saturation = s.getRTLSat();
	}
}

public class PredStateImpl extends StateImpl implements PredState {

	private int predictedClientCount;
	private static int totalPStateCount = 0;

	public PredStateImpl(State s, int pcc) {
		super(s);
		this.predictedClientCount = pcc;
		this.stateID = ++totalPStateCount;
	}
}

Irgendwie, funktioniert alles, auch das Problem der IDs ist umschifft, aber alles in allem, ist das ganze doch eher hässlich.

Daher würd mich interessieren, ob es gute/bessere Lösungen gibt!
Direkt mit Objekten der Kindklasse arbeiten und das fehlende Attribut später über einen setter setzen?
Das ist so das einzige, was mir einfällt, find ich aber auch nicht wirklich schöner ...

Gruß Justus86

P.S.: Bin auf eure Ansätze gespannt!
 

turtle

Top Contributor
Die Klasse, die Du angegeben hast, erbt nicht von einer anderen Klasse, sondern implementiert das angegebene Interface.

Und daher verstehe ich nicht, was Du eigentlich von uns wissen willst?:bahnhof:
 
J

Justus86

Gast
Die tut beides ... die zugehörigen Interfaces sind nur wegen schön machen, nen extends steht vor dem implements ...

Gruß Justus86
 

faetzminator

Gesperrter Benutzer
Ich hab auch nicht ganz verstanden, was du an deinem Code nicht ok findest. Findest du es unschön, dass du nun folgendes schreiben musst?
Java:
PredState state = new PredStateImpl(new StateImpl(a, b, c), d);
 
J

Justus86

Gast
Ja, das ist ein bisschen mein Problem.

Deshalb ja auch die Überlegung, ob man nicht direkt mit dem spezielleren Kind arbeitet, und ein Attribut leer lässt. Zur Laufzeit gibts nen Haufen dieser Objekte, dann wird in einer Klasse halt diese Eine Attribut hinzugefügt, und dann gehen die in die nächste Klasse zur Weiterverarbeitung. Deshalb halt die Überlegung, wie das entweder schöner, oder, besser noch, Laufzeitschonender geht ... (wobei der Code schon les- und wartbar bleiben sollten, kein Array voller Objekte ...)

Gruß Justus86
 
Ähnliche Java Themen

Ähnliche Java Themen


Oben