I am trying to design the GUI front end of a robot simulator (effectively a simple game). However, I don’t know the best way of passing the simulator components (such as Robots and Walls) to the display. I want to hide the non-display oriented information of the components (such as the Robots mass), yet still be able to recognise each component im printing, i.e. when I’m drawing components I want to draw Robots differently that I do Walls (maybe the robot will have a name tag or something).
Here is a picture that will hopefully explain the design:

Maybe there is a useful design pattern that I haven’t come across yet…
Checkout the model-view-controller design pattern. It separates data (robot’s speed, size,…), presentation (robot’s shape and its paint method) and behavior (increase robot speed).
To answer your question – the simplest way to hide parts of a class’s API is to split this class into multiple pieces (model, view, controller) and connect them according to some pattern (MVC, or model-view-presenter, they are many of them).
EDIT: Sorry for that I didn’t provide any example. My suggestion is just to split Robot into two classes:
The Simulator then contains collection of RobotUi (Simulator is a model) and SimulatorDisplay (=view) iterates through the UI objects when performing paint method. The RobotData will be hidden inside RobotUi.