Kalkulator ONP przy użyciu Qt Creatora

Witajcie!

Kilka tygodni temu pytałem tutaj o to, w czym stworzyć projekt na uczelnię.

Podjąłem decyzję, że użyję biblioteki Qt i dedykowanego dla niej środowiska Qt Creator.

Teraz pytanie - czy macie jakieś praktyczne rady jak się do tego wszystkiego zabrać? To mój pierwszy okienkowy projekt, więc kompletnie nie mam doświadczenia. 

Od czego zacząć? Jak podzielić ten projekt na klasy? Mam taki pomysł, aby stworzyć osobną klasę dla stosu, osobną dla przekształcania wyrażenia na ONP, i klasę dziedziczącą z tej przekształcającej obliczają wyrażenie w ONP. Co myślicie o takim podziale?

I jak to jest z klasami w Qt? Funkcje itd muszę zamieniać na sloty i sygnały? Dopiero zaczynam przygodę z Qt.

Czekam na cenne rady!

Pozdrawiam :slight_smile:

Zaczął bym od konsolowej aplikacji która rozłoży Ci równanie na ONP, (na początku możesz mieć je na stałe zapisane w stringu - co ułatwi debugowanie, jak już zacznie Ci to działać, w tedy robisz okno, dajesz TextBoxy z których po prostu przekazujesz dane do swojej klasy

powinieneś mieć coś w stylu metody która przyjmuje równanie i zwraca onp

string ToONP(string równanie)
{
 //your code goes here :)
}

Mając buttonsa na formie :

void Kliknięcie_Buttonsa_Event(...)
{
   string input = kontrolka_z_rownaniem.Text; //lub cos analogicznego
   string output = ToONP(input);
   kontrolka_z_wyjsciem.Text = output;
}

 

Stos masz już zaimplementowany w bibliotece standardowej C++ http://www.cplusplus.com/reference/stack/stack/ oraz w Qt http://doc.qt.io/qt-5/qstack.html więc nie ma sensu pisać samemu (chyba, że dla zabawy/nauki). Trochę o strukturach danych: http://asawicki.info/productions/artykuly/strukturyd_formatyp.php5

 

Do tego nadadzą się po prostu funkcje.

Z resztą takie dziedziczenie, jakie zaproponowałeś, nie miałoby wiele sensu z punktu widzenia OOP.

 

Nie musisz. Z resztą nie zawsze ma to sens, np. metoda zwracająca wartość nie może być slotem.

 

Polecam poczytać dokumentacje i tutoriale do Qt

http://doc.qt.io/qt-4.8/tutorials.html

http://doc.qt.io/qt-4.8/how-to-learn-qt.html

http://doc.qt.io/

I jeśli potrzebujesz, również tutoriale do C++

http://www.intercon.pl/~sektor/cbx/

http://xion.org.pl/productions/texts/coding/megatutorial/

 

Całe tworzenie programu okienkowego dla ONP wydaje mi się śmieszne. Używaj najprostrzej metody, zawsze, a informatyka stanie się piękna. Zatem, aplikacja tekstowa moim zdaniem najlepiej spełni zadanie. Oczywiście, nie baw się w tony klas. Zwyczajna funkcja na stosie zadziała.