Jo máte vlastně pravdu s tím data hidingem. Nicméně já půdovně nechtěl vůbec roubovat na Céčko OOP, protože mi to příjde jako totální overkill, tak jsem data hiding neřešil.
Pokud nepožaduješ dědičnost a polymorfismus, tak si vlastně chceš z OOP jen "vypůjčit" zapouzdření.
Možná by se ti hodil jazyk Lua, který by ti něco podobného mohl zajistit. Datovou strukturu a funkce si napíšeš v C a v Lua si z toho uděláš objekt.