Hallo,
wir sollen in der Berufsschule einen modular erweiterbaren Taschenrechner programmieren.
Innerhalb der Module benötigte Interfaces / Klassenhierarchien zu definieren ist relativ simpel. Mein Problem ist eine gemeinsame Schnittstelle aller Module.
Da jede Modulfunktion eine andere Anzahl von Parametern benötigt, habe ich mir überlegt, die benötigten Werte über Konstruktoren zu setzen und von außen immer nur eine "Calculate()" - Methode aufzurufen.
Das funktioniert aber z.B. schon bei den geometrischen Operationen nicht mehr. Die Calculate-Methode an sich wäre hier ziemlich sinnlos, da ich ja hier Fallunterscheidungen treffen muss: Welcher Körper/Form + welche Funktion.
Also ging meine Idee in diese Richtung:
Aber das kommt mir nicht sehr sauber vor. :-/
Zumal ich auf die Art ganz viele Mini-Klassen zusammenkriege, die alle nur aus 1-2 Methoden bestehen.
Jemand ne Idee?
EDIT: Das Klassendiagramm ist nur ein vereinfachter Auszug. Eigentlich habe ich pro Modul mehrere Funktionen, die erfüllt werden müssen.
wir sollen in der Berufsschule einen modular erweiterbaren Taschenrechner programmieren.
Innerhalb der Module benötigte Interfaces / Klassenhierarchien zu definieren ist relativ simpel. Mein Problem ist eine gemeinsame Schnittstelle aller Module.
Da jede Modulfunktion eine andere Anzahl von Parametern benötigt, habe ich mir überlegt, die benötigten Werte über Konstruktoren zu setzen und von außen immer nur eine "Calculate()" - Methode aufzurufen.
Das funktioniert aber z.B. schon bei den geometrischen Operationen nicht mehr. Die Calculate-Methode an sich wäre hier ziemlich sinnlos, da ich ja hier Fallunterscheidungen treffen muss: Welcher Körper/Form + welche Funktion.
Also ging meine Idee in diese Richtung:
Java:
public interface Shape{
public double getArea();
public double getRange();
}
public class Circle extends Shape{
public Circle(double radius){ ... }
//Oberflächeninhalt
public double getArea(){ ... }
//Umfang
public double getRange(){ ... }
}
public class AreaCalculator extends IModule{
public AreaCalculator(Shape shape){ ... }
double calculate(){
return this.shape.getArea();
}
}
Aber das kommt mir nicht sehr sauber vor. :-/
Zumal ich auf die Art ganz viele Mini-Klassen zusammenkriege, die alle nur aus 1-2 Methoden bestehen.
Jemand ne Idee?
EDIT: Das Klassendiagramm ist nur ein vereinfachter Auszug. Eigentlich habe ich pro Modul mehrere Funktionen, die erfüllt werden müssen.
Anhänge
Zuletzt bearbeitet: