Zu a:
Ich würde sie erstmal 1 zu 1 umsetzen und dann darauf aufbauend eine entsprechende Klassenhirarchie aufbauen.
Eine Funktions-Lib in eine Klassenhirarchie zu packen, nur damits
OOP-Konform ist, macht keinen Sinn und erzeugt i.d.R. nur Overhead.
Zu b:
Hier würd ich zu 1. tendieren. Damit erleichtert man die Orientierung, sowohl im Source, als auch ggf. in der Dokumentation.