Saya pikir untuk memahami pertanyaan ini, Anda perlu memahami apa itu abstraksi. (Saya terlalu malas untuk menemukan definisi formal, jadi saya yakin saya akan mendapatkan dinged, tapi begini ...) Sebuah abstraksi adalah ketika Anda mengambil subjek yang kompleks, atau entitas dan menyembunyikan sebagian besar detailnya sambil mengekspos fungsi yang masih mendefinisikan esensi objek itu.
Saya percaya contoh yang diberikan buku itu adalah sebuah rumah. Jika Anda melihat dengan sangat teliti pada rumah itu, Anda akan melihat bahwa itu terbuat dari papan, paku, jendela, pintu ... Tetapi gambar kartun sebuah rumah di sebelah sebuah foto masih berupa sebuah rumah, meskipun rumah itu hilang. banyak dari detail itu.
Hal yang sama dengan perangkat lunak. Setiap kali Anda memprogram, seperti yang disarankan buku ini, Anda perlu memikirkan peranti lunak Anda sebagai layer. Suatu program tertentu dapat dengan mudah memiliki lebih dari seratus lapisan. Di bagian bawah, Anda mungkin memiliki instruksi perakitan yang berjalan pada CPU, pada level yang lebih tinggi instruksi ini dapat digabungkan untuk membentuk rutinitas I / O disk, pada level yang lebih tinggi, Anda tidak perlu bekerja dengan Disk I / O secara langsung karena Anda dapat menggunakan fungsi Windows hanya dengan Buka / Baca / Tulis / Cari / Tutup file. Ini semua adalah abstraksi bahkan sebelum Anda mendapatkan kode aplikasi Anda sendiri.
Di dalam kode Anda, lapisan abstraksi berlanjut. Anda mungkin memiliki rutinitas manipulasi string / jaringan / data yang lebih rendah. Pada level yang lebih tinggi, Anda dapat menggabungkan rutinitas tersebut ke dalam subsistem yang menentukan manajemen pengguna, lapisan UI, akses basis data. Namun lapisan lain subsistem ini dapat digabungkan menjadi komponen server yang bergabung untuk menjadi bagian dari sistem perusahaan yang lebih besar.
Kunci untuk masing-masing lapisan abstraksi ini adalah bahwa masing-masing menyembunyikan detail yang diekspos oleh lapisan sebelumnya dan menyajikan antarmuka yang sangat bersih untuk dikonsumsi oleh lapisan berikutnya. Untuk membuka file, Anda tidak perlu tahu cara menulis sektor individual atau hardware apa yang terputus untuk diproses. Tetapi jika Anda mulai melakukan perjalanan menuruni rantai lapisan abstraksi, Anda pasti akan dapat melacak dari panggilan fungsi Write (), sampai ke instruksi yang tepat yang dikirim ke pengontrol hard drive.
Apa yang penulis katakan harus Anda lakukan adalah ketika Anda mendefinisikan kelas atau fungsi, pikirkan tentang apa lapisan Anda. Jika Anda memiliki kelas yang mengelola subsistem dan objek pengguna, kelas yang sama tidak boleh melakukan manipulasi string tingkat rendah atau berisi sejumlah variabel hanya untuk melakukan panggilan soket. Itu akan menjadi pelanggaran melintasi lapisan abstraksi dan juga memiliki satu kelas / fungsi hanya melakukan satu hal (SRP - Prinsip Tanggung Jawab Tunggal).