Tôi nghĩ để hiểu câu hỏi này, bạn cần hiểu một sự trừu tượng là gì. (Tôi quá lười biếng để tìm một định nghĩa chính thức, vì vậy tôi chắc chắn rằng tôi sắp bị dìm, nhưng ở đây đi ...) Một sự trừu tượng là khi bạn lấy một chủ đề phức tạp, hoặc thực thể và ẩn hầu hết các chi tiết của nó trong khi phơi bày chức năng vẫn xác định bản chất của đối tượng đó.
Tôi tin rằng ví dụ cuốn sách đã cho bạn là một ngôi nhà. Nếu bạn nhìn vào ngôi nhà rất chi tiết, bạn sẽ thấy nó được làm từ ván, đinh, cửa sổ, cửa ra vào ... Nhưng một bản vẽ hoạt hình của một ngôi nhà bên cạnh một bức ảnh vẫn là một ngôi nhà, mặc dù nó bị thiếu nhiều chi tiết
Điều tương tự với phần mềm. Bất cứ khi nào bạn lập trình, giống như cuốn sách khuyên, bạn cần nghĩ về phần mềm của mình dưới dạng các lớp. Một chương trình nhất định có thể dễ dàng có hơn một trăm lớp. Ở phía dưới, bạn có thể có các hướng dẫn lắp ráp chạy trên CPU, ở cấp độ cao hơn, các hướng dẫn này có thể được kết hợp để tạo các thói quen I / O của đĩa, ở mức cao hơn, bạn không cần phải làm việc với Đĩa I / O trực tiếp vì bạn có thể sử dụng các chức năng của Windows để chỉ cần Mở / Đọc / Ghi / Tìm kiếm / Đóng tệp. Đây là tất cả các khái niệm trừu tượng ngay cả trước khi bạn nhận được mã ứng dụng của riêng bạn.
Trong mã của bạn, các lớp trừu tượng tiếp tục. Bạn có thể có các thói quen thao tác chuỗi / mạng / dữ liệu cấp thấp hơn. Ở cấp độ cao hơn, bạn có thể kết hợp các thường trình đó thành các hệ thống con xác định quản lý người dùng, lớp UI, truy cập cơ sở dữ liệu. Một lớp khác, các hệ thống con này có thể được kết hợp thành các thành phần máy chủ kết hợp lại để trở thành một phần của hệ thống doanh nghiệp lớn hơn.
Chìa khóa của mỗi lớp trừu tượng này là mỗi lớp ẩn các chi tiết được hiển thị bởi (các) lớp trước và trình bày một giao diện rất sạch sẽ được sử dụng bởi lớp tiếp theo. Để mở tệp, bạn không cần phải biết cách viết từng phần riêng lẻ hoặc phần cứng nào bị gián đoạn để xử lý. Nhưng nếu bạn bắt đầu di chuyển xuống chuỗi lớp trừu tượng, bạn chắc chắn sẽ có thể theo dõi từ lệnh gọi hàm Write (), đến tận hướng dẫn chính xác được gửi đến bộ điều khiển ổ cứng.
Những gì tác giả đang bảo bạn làm là khi bạn định nghĩa một lớp hoặc một hàm, hãy suy nghĩ về việc bạn là lớp nào. Nếu bạn có một lớp đang quản lý các hệ thống con và các đối tượng người dùng, thì cùng một lớp không nên thực hiện thao tác chuỗi mức thấp hoặc chứa một loạt các biến chỉ để thực hiện các cuộc gọi socket. Đó sẽ là vi phạm của việc vượt qua các lớp trừu tượng và cũng có một lớp / chức năng chỉ làm một việc (SRP - Nguyên tắc trách nhiệm duy nhất).