Java Methoden dynamisch abhängig von Objekt (und mit Datenbank verknüpfbar?)

FredHoff

Cadet 4th Year
Registriert
Sep. 2011
Beiträge
107
Ich bin gerade dabei meine Projektplanung für ein relativ komplexes Kartenspiel in UML niederzuschreiben, stoße dabei aber auf ein bis zwei Probleme:

Meine Klasse "Karte" wird an 4 weitere Klassen, nennen wir sie beispielhaft A, B, C und D, vererbt. JEDES Objekt der Klassen A, B, C und D hat nun individuelle Funktionen(Methoden), die sich teilweise aber überschneiden. Deshalb habe ich mir überlegt eine neue Klasse zu erstellen, die öffentlich alle Funktionen verwaltet und bei der Erzeugung aus den Klassen ABCD private die verfügbare Methode für das jeweilige Objekt mitgebe. Die oben genannten Objekte würde ich gerne in einer Datenbank, so wie Attribute, ablegen.


1. Frage: Ist diese Art der Umsetzung mit der methodenverwaltenden Klasse geschickt?
2. Frage: Kann ich in einer Datenbank die verfügbaren private-Methoden bereits, so wie Attribute, hinterlegen oder muss ich diese Methoden jedes Mal bei der Objekterzeugung per Hand eingeben?
 
Zuletzt bearbeitet: (Satzbau angepasst)
Abstrakte klasse einziehen die die gemeinsamkeiten der Klassen vereint? Oder hab ich da Falsch verstahnden.. ?
 
1. Abstrakte Klasse mit gemeinsamen Methoden + Individuelle Methoden
2. Verschiedene Interfaces erstellen fuer die verschiedenen Klassen

Waeren jetzt meine ersten Ideen, wenn ich dich richtig verstanden habe.

EDIT:Laesst sich natuerlich kombinieren.
 
Aus einer Klassen erstelle ich mehrere Objekte. Die Klasse A verwaltet alle Methoden, die für Objekte dieser Klasse A relevant sind. Die Objekte davon sollen lediglich auf einige!! Methoden individuell Zugriff haben. Jedes Objekt braucht eine andere Kombination der Methoden. Nicht jedes Objekt soll alle Methoden aufrufen können

Wie kann ich das besser lösen als durch anlegen unzähliger Klassen?
 
Beschreib doch erstmal genauer, was du damit abbilden möchtest (Kartenspiel ... ?), was das ganze soll, wann welches Objekt was aufrufen darf.
 
Alle Objekte werden iterativ nacheinander erzeugt.
Die Klasse hat dabei bspw. die Methoden 1 bis 12. Ist es nun möglich zu bestimmen, dass ein erzeugtes Objekt bspw. nur Methode 3,4, 5 und 10 "mitgegeben" werden beim erzeugen?
Falls dies nicht möglich ist, weil es die OOP schließlich so vor sieht, besteht dann irgendwie die Möglichkeit, dass das Objekt nur Zugriff auf die Methoden 3,4,5 und 10 hat?
Jedes erzeugt Objekt soll halt nur bestimmte Methoden haben / ausführen können.
 
Das hörst sich irgendwie nach Rechteverwaltung an.

Du könntest entsprechend so arbeiten:
Code:
public abstract class Base{
	private boolean[] permissions;
	public Base(boolean[] permissions){
		this.permissions = permissions;
	}
	private void methodA(){
		//hier eigentlichen Code ausführen
	}
	public void callMethodA(){
		if(permissions[0]){
			methodA();
		}
	}
}
Alle von Base abgeleiteten Klassen können nur über callMethodX() die entsprechenden Methoden ausführen. Über permissions wird das ganze dann gesteuert.
 
Kommt sehr auf den Sinn an. Komposition bietet sich wohl eher an, als Vererbung.
 
Zurück
Oben