Eu acho que para entender essa pergunta, você precisa entender o que é uma abstração. (Estou com preguiça de encontrar uma definição formal, então tenho certeza de que estou prestes a ser enganada, mas aqui vai ...) Uma abstração é quando você pega um assunto ou entidade complexo e oculta a maioria dos detalhes enquanto expõe a funcionalidade que ainda define a essência desse objeto.
Acredito que o exemplo que o livro lhe deu foi uma casa. Se você der uma olhada muito detalhada na casa, verá que ela é feita de tábuas, pregos, janelas, portas ... Mas o desenho de uma casa ao lado de uma fotografia ainda é uma casa, mesmo que esteja ausente muitos desses detalhes.
A mesma coisa com o software. Sempre que você programa, como o livro recomenda, você precisa pensar no seu software como camadas. Um determinado programa pode facilmente ter bem mais de cem camadas. Na parte inferior, você pode ter instruções de montagem que são executadas em uma CPU; em um nível superior, essas instruções podem ser combinadas para formar rotinas de E / S de disco; em um nível ainda mais alto, não é necessário trabalhar com o Disk I / O diretamente, porque você pode usar as funções do Windows para simplesmente Abrir / Ler / Gravar / Procurar / Fechar um arquivo. Essas são todas abstrações antes mesmo de você chegar ao seu próprio código de aplicativo.
Dentro do seu código, as camadas de abstração continuam. Você pode ter rotinas de manipulação de cadeia / rede / dados de nível inferior. Em um nível superior, você pode combinar essas rotinas em subsistemas que definem gerenciamento de usuários, camada da interface do usuário e acesso ao banco de dados. Ainda outra camada, esses subsistemas podem ser combinados em componentes de servidor que se juntam para se tornar parte de um sistema corporativo maior.
A chave para cada uma dessas camadas de abstração é que cada uma oculta os detalhes expostos pelas camadas anteriores e apresenta uma interface muito limpa para ser consumida pela próxima camada acima. Para abrir um arquivo, você não precisa saber como escrever setores individuais ou o hardware interrompe o processo. Porém, se você começar a percorrer a cadeia da camada de abstração, poderá rastrear desde a chamada de função Write () até a instrução exata que é enviada ao controlador do disco rígido.
O que o autor está dizendo para você fazer é quando você define uma classe ou uma função, pense em qual camada você é uma. Se você tem uma classe que está gerenciando subsistemas e objetos de usuário, a mesma classe não deve estar executando manipulação de seqüência de caracteres de baixo nível ou conter um monte de variáveis apenas para fazer chamadas de soquete. Isso seria a violação de atravessar camadas de abstração e também de ter uma classe / função fazendo apenas uma coisa (SRP - Single Responsibility Princípio).