Повторное использование уже реализованных функций в Java (Swing) - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь реализовать новую функцию в проекте, которая должна повторно использовать уже реализованные функции. Я знаю, что должен создать экземпляр для доступа к этим функциям. Тем не менее, я совершенно новый в Java, и, кажется, я застрял с этим. В проекте используется система Model View Controller.

Я должен использовать функции умножения, деления и логарифма, чтобы создать новый класс внутри проекта.

По сути, на панели есть два текстовых поля и четыре кнопки.

enter image description here

Последняя кнопка (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
    }
}

Деление и логарифм аналогичны этой структуре. Я надеюсь, вы поняли идею. Спасибо за любую помощь!

...