Well, both creating a component and creating a UObject is in essence doing the same thing here. Only difference is that by creating a component you’re getting the built in component functionalities.
I’d create a DigestionComponent with the neccesary functionalities, then in my pawn class create a Upropperty DigestionComponent* and instantiate a DigestionComponent in the constructor. That way, you can fetch your functions directly from the objects that “know” about your DigestionComponent, but can also easily acces them from classes that don’t if you have your pawn referenced only as an UActor* by calling a FindComponent methods.