L’un des objectifs de la programmation objet est de simuler, à l’aide d’un programme informatique, la manipulation des objets réels par l’être humain. Les objets réels forment un tout, et leur manipulation nécessite la plupart du temps un outil, ou une interface, de communication.
Par exemple, quand nous prenons un ascenseur, nous appuyons sur le bouton d’appel pour ouvrir les portes ou pour nous rendre jusqu’à l’étage désiré. L’interface de communication est ici le bouton d’appel. Nul n’aurait l’idée de prendre la télécommande de sa télévision pour appeler un ascenseur.
De la même façon, la préparation d’une omelette nécessite de casser des œufs. Pour briser la coquille d’un œuf, nous pouvons utiliser l’outil couteau. Un marteau pourrait être également utilisé, mais son usage n’est pas vraiment adapté à la situation.
Comme nous le constatons à travers ces exemples, les objets réels sont manipulés par l’intermédiaire d’interfaces appropriées. L’utilisation d’un outil inadapté fait que l’objet ne répond pas à nos attentes ou qu’il se brise définitivement. 
Tout comme nous manipulons les objets réels, les applications informatiques manipulent des objets virtuels, définis par le programmeur. Cette manipulation nécessite des outils aussi bien adaptés que nos outils réels. Sans contrôle sur le bien-fondé d’une manipulation, l’application risque de fournir de mauvais résultats ou pire, de cesser brutalement son exécution.
