This question has been edited to ask about a specific example as the original question was deemed unanswerable.
Given an application that needs to display information about various objects (including similar and inherited objects) would it be better to pass in base class objects to the display function and allow it to query the object to determine what data to display; or should you just pass in each of the fields by value. The advantage of passing by value being do not need a direct dependency on the objects they representing, thus keeping the display (UI) isolated from the business rule objects.
In general, you should pass the minimum amount of information that a method needs to do its job. For example, if a method is computing a person’s age given their birth date, you don’t need to pass in the entire Person object, you just need the person’s birth date and the current date.
By following the above approach, you keep your methods loosely coupled, which makes them much more maintainable.
In your case, you have to balance whether you need to access a lot of fields of the base classes in these methods, or if you are just need to access a few. If it’s a lot of fields, then it may make more sense to just pass the entire object. It’s sort of a balancing act between having good coupling (see first part of this answer), but at the same time, avoiding passing tons of parameters to a method.