Um diese Frage zu verstehen, muss man verstehen, was eine Abstraktion ist. (Ich bin zu faul, um eine formale Definition zu finden, daher bin ich mir sicher, dass ich bald fertig werde, aber hier geht es weiter ...) Eine Abstraktion ist, wenn Sie ein komplexes Thema oder eine Entität nehmen und die meisten Details verbergen während Sie die Funktionalität offenlegen, die immer noch die Essenz dieses Objekts definiert.
Ich glaube, das Beispiel, das das Buch dir gegeben hat, war ein Haus. Wenn Sie sich das Haus sehr genau ansehen, werden Sie feststellen, dass es aus Brettern, Nägeln, Fenstern, Türen besteht ... Aber eine Comiczeichnung eines Hauses neben einem Foto ist immer noch ein Haus, obwohl es fehlt viele dieser Details.
Gleiches gilt für Software. Wann immer Sie programmieren, wie im Buch empfohlen, müssen Sie Ihre Software als Ebenen betrachten. Ein gegebenes Programm kann leicht mehr als hundert Schichten haben. Unten finden Sie möglicherweise Assembly-Anweisungen, die auf einer CPU ausgeführt werden. Auf einer höheren Ebene werden diese Anweisungen möglicherweise zu Festplatten-E / A-Routinen kombiniert. Auf einer höheren Ebene müssen Sie nicht mit Festplatten-E / A arbeiten. O direkt, weil Sie Windows-Funktionen verwenden können, um eine Datei einfach zu öffnen / lesen / schreiben / suchen / schließen. Dies sind alles Abstraktionen, noch bevor Sie zu Ihrem eigenen Anwendungscode gelangen.
Innerhalb Ihres Codes werden die Abstraktionsebenen fortgesetzt. Möglicherweise verfügen Sie über Routinen zur Bearbeitung von Zeichenfolgen / Netzwerken / Daten auf niedrigerer Ebene. Auf einer höheren Ebene können Sie diese Routinen in Subsystemen kombinieren, die Benutzerverwaltung, Benutzeroberflächenebene und Datenbankzugriff definieren. Eine weitere Schicht dieser Subsysteme könnte zu Serverkomponenten zusammengefasst werden, die Teil eines größeren Unternehmenssystems werden.
Der Schlüssel zu jeder dieser Abstraktionsebenen besteht darin, dass jede die Details der vorherigen Ebene (n) verbirgt und eine sehr saubere Schnittstelle darstellt, die von der nächsten Ebene verwendet werden kann. Um eine Datei zu öffnen, müssen Sie nicht wissen, wie einzelne Sektoren geschrieben werden oder welche Hardware-Interrupts verarbeitet werden müssen. Wenn Sie jedoch beginnen, die Abstraktionsschichtenkette zu durchlaufen, können Sie den Funktionsaufruf Write () bis hinunter zu den genauen Anweisungen verfolgen, die an den Festplattencontroller gesendet werden.
Der Autor fordert Sie auf, beim Definieren einer Klasse oder Funktion zu überlegen, welche Ebene Sie sind. Wenn Sie eine Klasse haben, die Subsysteme und Benutzerobjekte verwaltet, sollte dieselbe Klasse keine einfache Manipulation von Zeichenfolgen durchführen oder eine ganze Reihe von Variablen enthalten, nur um Socket-Aufrufe auszuführen. Dies wäre die Verletzung der Überkreuzung von Abstraktionsebenen und der Tatsache, dass eine Klasse / Funktion nur eine Aufgabe erfüllt (SRP - Single Responsibility Principle).