Hi,
wir müssen für die Schule eine "Bankanwendung" schreiben und da hab ich einmal als art Hauptklasse Transanktion.java
Code:
package BankKontoEditor;
public abstract class Transaktion {
double betrag;
String datum;
public abstract void buchenAuf(Konto dasKonto);
public abstract String[] Ausgabe();
public void setValue(double betrag,String schecknummer,String datum)
{
this.betrag=betrag;
this.datum=datum;
}
public String getSchecknummer(){
return null;
}
public String getDatum(){
return this.datum;
}
}
und als Klasse die davon erbt z.B. die Kalsse EinzahlenTransaktion.java
Code:
package BankKontoEditor;
public class EinzahlenTransaktion extends Transaktion {
public EinzahlenTransaktion(){}
public EinzahlenTransaktion(double betrag, String datum) {
this.betrag = betrag;
this.datum = datum;
}
public String[] Ausgabe() {
String returnfeld[] = {this.datum,"Einzahlung",String.valueOf(this.betrag)};
return returnfeld;
}
public void buchenAuf(Konto dasKonto) {
dasKonto.einzahlen(this.betrag);
}
}
Es gibt noch einige andere Transaktionsmöglcihkeiten und diese sollen auch dynamisch erweiterbar sein.
In einem anderen Teil der Anwedung kann man nun auswählen was für eine Transaktion man gerne hätte.
Jetzt die Frage:
Wie bekomme ich raus welche Klassen von Transaktion erben???
Es gibt keine Methoden um herauszufinden, welche Klassen erben (das würde dem Konzept, dass dynamisch Klassen nachgeladen werden widersprechen).
Du könntest z.B. eine Textdatei machen, welche alle verfügbaren Transaktionen auflistet. Diese Datei wird dann beim Programmstart eingelesen (per Reflection "Class.forName(...)", kannst du dann die Klassen dynamisch laden).
Oder du baust dir irgendwo eine Methode, welche beim Programmstart alle Transaktionen in eine Liste schreibt (obwohl ich das nicht mehr als dynamisch bezeichnen würde, das ist dann fest im Code eingebaut).
1. Lies dir mal bitte die Sun-Konventionen durch, nen Link gibts im FAQ-Forum
- bei Variablen und Funktionen wird der erste Buchstabe klein geschrieben
- Instanz-Variablen werden private deklariert
.
.
.
Aber zu deinem Problem: Warum erstellst du dir nicht ne statische Variable (ne ArrayList, Vector oder was auch immer) in der du alle Transaktions-Typen speicherst, dann kannst du später mit instanceof abfragen was es ist