We weten dat er vier pijlers van OPIS zijn en we hebben geleerd over inkapseling, wat is de tweede?
Nou, dat heet abstractie.
Een abstractie betekent het verbergen van informatie of het abstraheren van informatie en alleen toegang geven tot wat
nodig is.
Dus waar de gebruiker of de programmeur of de machine ook in geïnteresseerd is, dat is het enige dat we toegang
geven tot al het andere.
We verstoppen het een beetje in een deken onder de kap, omdat onze gebruikers zich er geen zorgen over hoeven te maken.
Laat me je laten zien wat ik bedoel.
Als ik terugga naar ons oude voorbeeld hier, dus in plaats van een woordenboek te hebben, hebben
we eigenlijk een spelerpersonage met een heleboel methoden.
Nu, abstractie is hier echt te zien, toch?
Wanneer ik het doe.
Speler één punt spreekt, je ziet abstractie in actie, want als ik op uitvoeren klik.
Ik krijg dit drankje, maar als ik spreek, maakt het me niet echt uit hoe Speek wordt geïmplementeerd, het enige dat ik weet
is dat speler één toegang heeft tot de spreekmethode en dat ik het kan gebruiken.
Hetzelfde met wanneer ik iets als een tuple rechts gebruik.
Als ik een, twee, drie heb en ik doe hier een punt, dan kan ik tellen hoeveel items er in de tupel zitten.
Dus als ik print en klik, ren dan.
Nou, ik moet het een ding geven waar we naar op zoek zijn in ons geval, laten we er een bekijken en er
nog een toevoegen.
Als ik klik, ren dan weg.
Ik moet nu weten hoe de telmethode is geïmplementeerd?
Nee, ik bedoel, ik kan ernaar kijken, ik kan de Python-documentatie bekijken, misschien
de Python-code en begrijpen hoe het dit werkelijk telt, maar ik hoef niet echt te schrijven.
Als we elk klein stukje proberen te begrijpen, zullen onze hoofden ontploffen.
Soms is alles wat we nodig hebben een methode of een attribuut en krijgen we er gewoon toegang toe zonder ons zorgen te
hoeven maken over hoe het wordt geïmplementeerd, wat echt heel leuk is.
Hetzelfde geldt voor ingebouwde functies, toch?
Als ik hier lenth en ik klik op uitvoeren.
Ik krijg een lengte van vier, maar ik hoef niet echt te weten hoe LENTH in Python is geïmplementeerd,
het is van ons weggenomen.
En dit is de kracht van OLP, het abstraheert dingen waar we ons geen zorgen over hoeven te maken, of het maakt ons in
ieder geval efficiënter zodat we weten dat het op een bepaalde manier werkt en we onze tijd niet
verdoen met leren of coderen vanaf nul.
Als we onze iPhone hadden, bijvoorbeeld, de camerafunctie op een iPhone, zou het leuk zijn voor een app die we hebben gebouwd
om hem te gebruiken.
Maar we hoeven niet precies te weten hoe de iPhone-camera op een iPhone is gecodeerd.
Nee.
In plaats daarvan geeft de iPhone ons meestal een manier om camerapunt, foto maken te zeggen.
Om ons in staat te stellen een foto te maken zonder te weten hoe de Apple-ingenieurs de camera hebben gecoat, dus het is
een zeer krachtig concept.
Oké, dus je denkt, ik denk dat ik een afleiding krijg.
Maar laat me je dit vragen.
Kan ik gewoon speler één de naam geven die gelijk is aan, laten we zeggen, uitroeptekens en dan spelerpunt rennen.
Of, weet je, minder spreken is gelijk aan boe, zorg ervoor dat het speler één is.
Nou, als ik nu speler één print en doe.
Gedachte spreken en ik probeer deze functie uit te voeren.
Laten we eens kijken.
Ik krijg een string-object dat niet kan worden aangeroepen omdat speak is gewijzigd, speak is gewijzigd in
een tekenreekswaarde in plaats van deze daadwerkelijke functie die we nodig hadden, zodat ik boo krijg als
ik ren, alleen maar het luidsprekerattribuut controleren.
Hmmm, ik bedoel, abstractie is goed, maar wacht even, dit is slecht als ik een klas heb die ik heb
weggeabstraheerd, maar iedereen kan langskomen, elke programmeur kan langskomen en gewoon al mijn harde werk verwijderen
en overschrijf het zo.
Is dat niet erg.
Laten we een pauze nemen en dit onderwerp wat meer uitdiepen in de volgende video.