Wir wissen, dass es vier Säulen von OPIS gibt und wir haben etwas über Kapselung gelernt, was ist die zweite?
Nun, es heißt Abstraktion.
Eine Abstraktion bedeutet das Verbergen von Informationen oder das Abstrahieren von Informationen und das Gewähren des Zugriffs auf
das Nötigste.
Was auch immer der Benutzer oder Programmierer oder die Maschine interessiert, das ist das einzige, was wir Zugriff
auf alles andere geben.
Wir verstecken es in einer Decke unter der Kapuze, weil sich unsere Benutzer nicht darum kümmern müssen.
Lassen Sie mich Ihnen zeigen, was ich meine.
Wenn ich hier auf unser altes Beispiel zurückkomme, haben wir statt eines Wörterbuchs tatsächlich
einen Spielercharakter mit einer Reihe von Methoden.
Nun, Abstraktion kann man hier tatsächlich sehen, oder?
Wenn ich es tue.
Spieler einen Punkt sprechen, Sie sehen Abstraktion in Aktion, denn wenn ich auf Ausführen klicke.
Ich bekomme diesen Drink, aber wenn ich Speak anrufe, ist es mir egal, wie Speek implementiert wird, ich weiß nur,
dass Spieler 1 Zugriff auf die Speak-Methode hat und ich sie verwenden kann.
Dasselbe gilt, wenn ich so etwas wie ein Tupelrecht verwende.
Wenn ich eins, zwei, drei habe und ich hier punktiere, kann ich zählen, um zu zählen, wie viele Elemente sich im Tupel befinden.
Wenn ich also drucke und klicke, laufe.
Nun, ich muss etwas geben, nach dem wir in unserem Fall suchen, schauen wir uns eines an und fügen wir hier
ein weiteres hinzu.
Wenn ich klicke, laufe.
Ich komme jetzt dazu. Muss ich wissen, wie die Zählmethode implementiert wurde?
Nein, ich meine, ich kann mir das ansehen, ich kann mir die Python-Dokumentation
ansehen, vielleicht den Python-Code und verstehen, wie es tatsächlich zählt, aber ich muss nicht wirklich schreiben.
Wenn wir versuchen, jedes einzelne kleine Stück zu verstehen, werden unsere Köpfe explodieren.
Manchmal brauchen wir nur eine Methode oder ein Attribut und erhalten einfach Zugriff darauf, ohne uns um die
Implementierung kümmern zu müssen, was wirklich sehr schön ist.
Das gleiche gilt für eingebaute Funktionen, oder?
Wenn ich hier lenth mache und ich auf Ausführen klicke.
Ich bekomme eine Länge von vier, aber ich muss nicht wirklich wissen, wie LENTH in Python implementiert wurde,
es ist von uns abstrahiert.
Und das ist die Stärke von OLP, es abstrahiert Dinge, um die wir uns nicht kümmern müssen, oder macht uns zumindest
effizienter, damit wir wissen, dass es auf eine bestimmte Weise funktioniert und wir keine Zeit mit Lernen
verschwenden oder Codierung von Grund auf.
Wenn wir zum Beispiel unser iPhone hätten, nun ja, die Kamerafunktion auf einem iPhone, wäre es schön für eine App, die
wir dafür entwickelt haben.
Aber wir müssen nicht genau wissen, wie die iPhone-Kamera auf einem iPhone codiert ist.
Nein.
Stattdessen gibt uns das iPhone normalerweise die Möglichkeit, Kamerapunkt zu sagen, Bild aufnehmen.
Damit wir tatsächlich ein Bild aufnehmen können, ohne zu wissen, wie die Apple-Ingenieure die Kamera tatsächlich beschichtet haben, ist dies
ein sehr leistungsstarkes Konzept.
Okay, Sie denken also, ich werde mich ablenken lassen.
Aber lass mich dich das fragen.
Könnte ich einfach Spieler 1 bekam Name gleich, sagen wir, Ausrufezeichen und dann Spieler Punkt ausführen.
Oder, wissen Sie, weniger zu sprechen ist gleichbedeutend mit Boo, stellen Sie sicher, dass es Spieler eins ist.
Nun, wenn ich jetzt drucke und Player eins mache.
Gedanken sprechen und ich versuche, diese Funktion auszuführen.
Mal sehen.
Ich bekomme das String-Objekt ist nicht aufrufbar, weil speak geändert wurde, speak wurde zu einem
String-Wert geändert, anstatt dieser eigentlichen Funktion, die wir benötigt hätten, damit ich beim Ausführen nur
das Speaker-Attribut überprüfe, bekomme ich boo.
Hmmm, ich meine, Abstraktion ist gut, aber Moment mal, das ist schlecht, wenn ich eine Klasse habe, die ich wegabstrahiert
habe, aber jeder kann mitkommen, jeder Programmierer kann mitkommen und einfach all meine harte Arbeit entfernen
und überschreibe es so.
Ist das nicht schlimm.
Lassen Sie uns eine Pause einlegen und dieses Thema im nächsten Video etwas genauer untersuchen.