In int CoreLogic::logic(), you create a local UserInterface object every time the function is entered. This object is never changed. All you do is check against the initial values that such an object would have. No method of the object is ever called.