Tengo un proyecto en el que he creado un API de métodos que manipulan el comportamiento de un Robot

El código que ++genera la conexión es de más bajo nivel++ y está encapsulado en una interfaz. Este está solo disponible para ser llamado dentro de la interfaz.
Existen también métodos de ++más alto nivel++ que definen el comportamiento del robot y están disponibles para ser llamados desde dónde se esté generando una instancia/objeto de ella.
¿Cuál es el concepto que estamos aplicando al tener capas disponibles y otras no disponibles en mi proyecto?
Explicanos más en la sección de comentarios.