Applet służący do obliczania podstawowych działań na macierzach - ocena kodu

0

Witam, zrobiłem applet służący do obliczania podstawowych działań na macierzach.
dodawanie, odejmowanie, mnożenie przez macierz lub liczbę, transpozycja, wyznacznik, macierz odwrotna.
Możemy wpisywać całe wyrażenia. Kolejność działań zostanie uwzględniona i wynikiem, o ile możliwy jest do uzyskania, będzie jedna macierz. np.
A*A*A + B + D(E)*G + O(D)

Możliwe funkcje:
D(x) - wyznacznik (determinant)
T(x) - transpozycja
O(x) - macierz odwrotna

Jaki sens ma applet z wyskakującymi dialogami? Pewnie żaden, ale jako aspirujący Javowiec wypada kojarzyć chociaż czym applet jest, więc stąd taka forma.

Jest to mój pierwszy projekt w Javie i tak na prawdę pierwszy w jakimkolwiek języku programowania. Wcześniej robiłem rzeczy małe lub nie chciało mi się ich dokończyć.
Chciałbym usłyszeć jakiś konstruktywny feedback.

https://github.com/Grzyboo/MatrixCalculatorApplet

Oto jak program się prezentuje (3 możliwe okna)
user image

0
private ArrayList<MatrixContainer> matricesContainer = new ArrayList<>();

Lepiej zrobić

private final List<MatrixContainer> matricesContainer = new ArrayList<>();

Ten kod:

    private void buttonAction(Button button) {
        if(button == functionButtons[0])
            createNewMatrixDialog();
        else if(button == functionButtons[1])
            removeMatrix();
        else if(button == functionButtons[2])
            calculateExpression();
        else if(button == functionButtons[3])
            displayCurrentMatrix();
    }

Rozumiem że chcesz jakoś utrzymać wiele eventów razem, ale chyba lepiej byłoby skorzystać z polimorfizmu.

public void removeCurrentFromList() {

ta funkcja może być prywatne.

Pole name w MatrixNameValidator też może być final.

Metoda createListener w NumericTextField jest brzydkie.

W pliku MatrixInputTextArea możesz się pozbyć tej zmiennej i zostawić to:

    private static double getDoubleValue(String text) {
        try {
            return Double.parseDouble(text);
        }
        catch(NumberFormatException e) {
            return 0;
        }
    }

MatrixCalculator oraz MatrixContainer też chyba do refactoryzacji.

Prawie wszystkie metody w klasie Fraction są nie używane.

0

@Grzyboo - do prezentacji wyników w tych listboksach czy memo użyj fontu mono-space, w oknach o tytułach Create new matrix i BlahBlah; A to drugie i główne weź nazwij po ludzku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1