Qt - liczby zespolone, kalkulatorek (mała prośba)

0

Dzień dobry,

napisałem kalkulatorek liczb zespolonych z wykorzystaniem przeładowania operatorów i polimorfizmu w C++ oraz Qt.

Chcę się zapytać czy dobrze rozumiem tutaj polimorfizm i czy można by było to bardziej zoptymalizować. Kod jest prosty i dlatego zastanawiam się nad tym czy by nie wykorzystać przeładowania operatorów jeszcze bardziej do innych operacji na klasie 'Zespolona' ale nie mam pomysłu (np. do wyświetlania liczby w formatce interfejsu Qt). Ten kod w ogóle jest dobry? Czytelny? Wycieków pamięci nie ma, ponieważ sprawdzałem przy pomocy drmemory.

Jeżeli gdzieś się pomyliłem w algorytmie arytmetyki liczb zespolonych to wybaczcie ale już trochę z tego zapomniałem. Wyniki program zwraca dobre.

Tak na szybko:

 
1. Klasa Zespolona reprezentuje liczbę zespoloną;
2. Klasa Dzialanie do klasa abstrakcyjna do poszczególnych działań arytmetycznych;
3. Po klasie Dzialanie dziedziczą cztery klasy wyspecjalizowane tj. dodawanie, odejmowanie itp.
4. Klasa Kalkulator to klasa główna interfejsu Qt;

Innymi słowy - co mógłbym zmienić żeby ten kod był lepszej jakości, jeśli się da.

pozdrawiam
Grzesiek

0

z początku myślałem, że będziesz normalnie parsował zapis użytkownika np taki napis "((3+2i)*3+4i)/(2-4i)" i obliczał na bieżąco wynik gdy użytkownik wpisuje dane.
Te edytorki powinny ci posłużyć do poćwiczenia używani Qt-ka (W obecnej formie te klasy to przerost formy nad treścią).
Czyli te buttony do wyboru działania powinny zachowywać się jak radio buttony, każda zmiana wartości początkowych powinna natychmiast aktualizować rezultat.

0

No w sumie fajny pomysł z tymi radiobuttonami. Ciekawy :) Wiem, że to co zrobiłem to trochę przerost formy nad treścią ale chciałem wrzucić dużo rzeczy do jednego worka, żeby potrenować polimorfizm czy przeładowanie operatorów.

0
grzesiek51114 napisał(a):

żeby potrenować polimorfizm czy przeładowanie operatorów.

Przeciążanie operatorów to też polimorfizm.

0

IMO dziedziczenie w przypadku dzialań arytmetycznych to nie jest dobry pomysł (i faktycznie przerost formy).
Rozsądniej byłoby zrealizować dziedziczenie, gdy klasa "zespolone" dziedziczy po "rzeczywistych" - wtedy możesz sobie rozbić logikę kalkulatora na działania na obu typach danych (i tutaj ćwiczyć polimorfizmy :D). Do działań użyć własnego przeciążenia operatorów. Wtedy wszystko wydaje się logiczniejsze.

0

dziedziczenie byłoby dobre, gdyby robić coś bardziej zaawansowanego, np parsował całe wyrażenie.

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