Hallo Doc,
was eine Factory ist wüsste ich jetzt nicht, müsste erst mal nachlesen.
Wozu möchte ich von der Hauptklasse aus auf die Subklassen zugreifen? Ich möchte meinen Programmcode übersichtlich in viele kleine oder mittelgroße Klassen verteilen. Durch das verteilen des Codes habe ich nun mehr Übersicht, aber das gegenseitige Zugreifen auf Methoden und Attribute zwischen diesen ist dann nicht direkt Möglich. Die Vererbung benutze ich dann eben für dies.
Konkret heißt das folgendes:
Ich schreibe einen kleinen Texteditor vergleichbar mit dem Standart-Editor von Microsoft Windows. Die Codeverteilung habe ich mir jetzt so vorgestellt.
Main - Klasse -> Aufruf des Programms
Hauptguiklasse:
Editor - Klasse
Nebenklassen:
Datei - Klasse
Bearbeiten - Klasse
Format - Klasse
Ansicht - Klasse
Hilfe - Klasse
Als Beispiel Implementierung von der Klasse Datei (enthaltene Mehtoden):
Neu, Speichern, Speichern Unter, Öffnen, Drucken, Seite Einrichten, Beenden
Analog sieht die Implementierung der anderen aus. Beispielsweise habe ich in der Klasse Format einen FontChooser der aus der Klasse Editor aufgerufen werden soll. Umgekehrt soll der FontChooser aus der Klasse Format die Schrift der JTextArea verändern welche in der Editorklasse implementiert ist.
Hier ein kleines Beispiel:
Superklasse
Code:
public class Editor {
static JTextArea ta = new JTextArea();
static JButton button = new JButton();
public Editor() {
// ...
ActionListener changefont = new ActionListener() {
public void actionPerformed(ActionEvent e) {
Format.schrift();
}
};
button.addActionListener(changefont);
}
}
Subklasse
Code:
public class Format extends Editor{
public static Font fontchooser() {
// Implementierung Aufruf von FontChooser und Übergabe der neuen Werte
return new Font ("Serif" , Font.BOLD, 20);
}
public static void schrift() {
Font f = fontchooser();
ta.setFont(f);
}
}
So bestehen zwischen allen Klassen gegenseitige Beziehungen, welche sich offensichtlich aus der Funktionsweise des Editors ergibt. Wie gesehen benutze ich die statischen Methoden und die Vererbung nur Zwecks der Kommunikation zwischen den Klassen.
Vielleicht noch eines. Ich möchte den FontChooser natürlich initialisieren und dann immer nur jeweils nur aufrufen. Deswegen wird die Format - Klasse voraussichtlich eine Singleton - Klasse sein damit ich den Fontchooser in dem Konstruktor von Format implementiere und in der Methode schrift() von Format nur noch aufrufen muss.
Deswegen das ganze mit der Vererbung, static und Singleton.
Oder würdet Ihr vielleicht doch die ganze Implementierung in eine Klasse packen? Wie würde euer Ansatz aussehen?
Vg Erdal