Math expression calculator as its name implies is a calculator which can evaluate mathematical expressions. It can handle addition, subtraction, multiplication, division, power, taking into account the order of operations. Using parentheses is also possible even if they are nested to each other.
The purpose of this project was to get my hands on the principles of modularity and portability. The logic is separated into modules, making the system easily extendable. The same code, with minor changes, can be ported to different systems. Furthermore, three main design patterns (composite, factory, interpreter) were introduced, in order to achieve the previously mentioned goals in an optimal way.
early build as proof of concept