Creo que para entender esta pregunta, necesitas entender qué es una abstracción. (Soy demasiado vago para encontrar una definición formal, así que estoy seguro de que estoy a punto de ser criticado, pero aquí va ...) Una abstracción es cuando tomas un tema o entidad compleja y ocultas la mayoría de sus detalles mientras expone la funcionalidad que aún define la esencia de ese objeto.
Creo que el ejemplo que te dio el libro fue una casa. Si observas la casa muy detalladamente, verás que está hecha de tablas, clavos, ventanas, puertas ... Pero un dibujo de dibujos animados de una casa junto a una fotografía sigue siendo una casa, aunque falta Muchos de esos detalles.
Lo mismo con el software. Siempre que programe, tal como lo recomienda el libro, debe pensar en su software como capas. Un programa dado puede tener fácilmente más de cien capas. En la parte inferior, es posible que tenga instrucciones de ensamblaje que se ejecutan en una CPU; en un nivel superior, estas instrucciones pueden combinarse para formar rutinas de E / S de disco; en un nivel aún mayor, no necesita trabajar con Disco I / O directamente porque puede usar las funciones de Windows para simplemente abrir / leer / escribir / buscar / cerrar un archivo. Estas son todas abstracciones incluso antes de llegar a su propio código de aplicación.
Dentro de su código, las capas de abstracción continúan. Es posible que tenga rutinas de manipulación de cadena / red / datos de nivel inferior. En un nivel superior, puede combinar esas rutinas en subsistemas que definen la administración de usuarios, la capa de interfaz de usuario y el acceso a la base de datos. Sin embargo, otra capa de estos subsistemas podría combinarse en componentes de servidor que se unen para formar parte de un sistema empresarial más grande.
La clave para cada una de estas capas de abstracción es que cada una oculta los detalles expuestos por las capas anteriores y presenta una interfaz muy limpia para ser consumida por la siguiente capa. Para abrir un archivo, no debería tener que saber cómo escribir sectores individuales o qué interrupciones de hardware procesar. Pero si comienza a viajar por la cadena de capas de abstracción, definitivamente podrá rastrear desde la llamada de función Write (), hasta la instrucción exacta que se envía al controlador del disco duro.
Lo que el autor le dice que haga es que cuando defina una clase o una función, piense en qué capa es usted. Si tiene una clase que administra subsistemas y objetos de usuario, la misma clase no debe realizar una manipulación de cadenas de bajo nivel o contener un montón de variables solo para realizar llamadas de socket. Esa sería la violación de cruzar capas de abstracción y también de hacer que una clase / función haga solo una cosa (SRP - Principio de responsabilidad única).