Ja, wie man es OO löst wurde hier noch nicht gelöst

Für mich heißt
OOP Aufgaben intelligent verteilen.
=> Tabelle oder Case in eine Klasse
ODER:
"Zustandsbaum" aufbauen:
Knoten (Zustand) als Klasse und untereinander "verbinden" (abhängig von der Eingabe), die letzte Aufgabe übernimmt (wenn ich's machen würde) die Hüllenklasse (würde dann die Tabelle/Case immitieren) übernehmen.
Ansonsten: schau dir noch einmal in ruhe alle Codes an, die hier gepostet wurden
Gute Nacht