Я пытаюсь реализовать новую функцию в проекте, которая должна повторно использовать уже реализованные функции. Я знаю, что должен создать экземпляр для доступа к этим функциям. Тем не менее, я совершенно новый в Java, и, кажется, я застрял с этим. В проекте используется система Model View Controller.
Я должен использовать функции умножения, деления и логарифма, чтобы создать новый класс внутри проекта.
По сути, на панели есть два текстовых поля и четыре кнопки.
Последняя кнопка (MDL), созданная для новой функции, которая представляет Умножение, Деление и Логарифм. Часть представления выглядит нормально.
Я добавил слушатель действия для этой кнопки в Controller:
public class Controller {
public Controller(View view) {
// begin-user-code
view.addMultiplyListener(new MultiplyListener(view));
view.addDivideListener(new DivideListener(view));
view.addLogarithmListener(new LogarithmListener(view));
view.addMdlListener(new mdlListener(view));
// end-user-code
}
}
Обычно он должен принимать значение внутри текстовых полей. Вот mdlListener. java:
public class mdlListener extends Listener {
public mdlListener(View view) {
super(view);
}
@Override
public Parameters getParameters(View view) {
Parameters parameters = new Parameters();
double a = Lib.convertTextToNumber(view.getTextA());
parameters.put("a", Double.class, a);
double b = Lib.convertTextToNumber(view.getTextB());
parameters.put("b", Double.class, b);
return parameters;
}
@Override
public IMathAlgorithm getAlgorithm(Parameters parameters) {
return new MDL(parameters);
}
}
Возвращает некоторые параметры и, наконец, эти параметры используются в классе MDL для выполнения новой функции (a * b) + (a / b) - log (a) Вот MDL. java:
public class MDL extends MathAlgorithm implements IMathAlgorithm {
private final double a;
private final double b;
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
*/
public MDL(Parameters parameters) {
// begin-user-code
a = parameters.get("a", Double.class);
b = parameters.get("b", Double.class);
// end-user-code
}
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
*/
public void run() {
// begin-user-code
status = 0;
result = (a * b) + (a / b) - Math.log(a);
// end-user-code
}
}
Работает нормально. Однако он должен использовать уже реализованные функции.
Вот класс умножения:
public class Multiplication extends MathAlgorithm implements IMathAlgorithm {
private final double a;
private final double b;
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
*/
public Multiplication(Parameters parameters) {
// begin-user-code
a = parameters.get("a", Double.class);
b = parameters.get("b", Double.class);
// end-user-code
}
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
*/
public void run() {
// begin-user-code
status = 0;
result = a * b;
// end-user-code
}
}
Деление и логарифм аналогичны этой структуре. Я надеюсь, вы поняли идею. Спасибо за любую помощь!