Sappiamo che ci sono quattro pilastri di OPIS e abbiamo imparato a conoscere l'incapsulamento, qual è il secondo?
Beh, si chiama astrazione.
Un'astrazione significa nascondere le informazioni o astrarre le informazioni e dare accesso solo a ciò che
è necessario.
Quindi, qualunque sia l'interesse dell'utente, del programmatore o della macchina, è l'unica cosa a cui diamo accesso
a tutto il resto.
Lo nascondiamo in una coperta sotto il cofano perché i nostri utenti non devono preoccuparsene.
Lascia che ti mostri cosa intendo.
Se torno al nostro vecchio esempio qui, quindi invece di avere un dizionario, abbiamo in realtà un
personaggio del giocatore con un sacco di metodi.
Ora, l'astrazione può essere effettivamente vista qui, giusto?
Quando io faccio.
Giocatore un punto parla, stai vedendo l'astrazione in azione perché quando clicco su corri.
Ricevo questo drink, ma quando chiamo speak, non mi interessa davvero come viene implementato Speek, tutto quello che so è
che il giocatore uno ha accesso al metodo speak e posso usarlo.
Lo stesso con quando sto usando qualcosa come una tupla a destra.
Se ho uno, due, tre e punto qui, posso contare per contare quanti elementi ci sono nella tupla.
Quindi, se stampo e clicco, corro.
Bene, devo dargli una cosa che stiamo cercando nel nostro caso, diamo un'occhiata a uno e aggiungiamone un
altro qui.
Se clicco, corro.
Arrivo a ora devo sapere come è stato implementato il metodo di conteggio?
No, voglio dire, posso esaminarlo, posso guardare la documentazione di Python, forse il
codice Python e capire come lo stia effettivamente contando, ma non ho davvero bisogno di scrivere.
Se cerchiamo di capire ogni singolo piccolo pezzo, le nostre teste esploderanno.
A volte tutto ciò di cui abbiamo bisogno è un metodo o un attributo e accedervi senza doverci preoccupare di
come viene implementato, il che è davvero molto carino.
Lo stesso vale con le funzioni integrate, giusto?
Se faccio lenth qui e clicco su esegui.
Ottengo una lunghezza di quattro, ma non ho davvero bisogno di sapere come LENTH è stato implementato in
Python, è astratto da noi.
E questo è il potere dell'OLP, astrae le cose di cui non abbiamo bisogno di preoccuparci, o almeno ci rende più
efficienti in modo che sappiamo che funziona in un certo modo e non stiamo sprecando il nostro
tempo imparando o codifica da zero.
Se avessimo il nostro iPhone, ad esempio, beh, la funzione fotocamera su un iPhone, sarebbe carino per un'app che
abbiamo creato per usarlo.
Ma non abbiamo bisogno di sapere esattamente come è codificata la fotocamera dell'iPhone su un iPhone.
No.
Invece, l'iPhone di solito ci dà un modo per dire punto fotocamera, scattare foto.
Per permetterci effettivamente di scattare una foto senza sapere come gli ingegneri Apple hanno effettivamente rivestito la fotocamera, quindi è
un concetto molto potente.
Ok, quindi stai pensando, penso che mi prenderò una distrazione.
Ma lascia che ti chieda questo.
Potrei semplicemente fare in modo che il nome del giocatore uno sia uguale a, diciamo, punti esclamativi e poi il giocatore dot run.
O, sai, meno parlare equivale a fischiare, assicurati che sia il giocatore uno.
Bene, se ora stampo e faccio il giocatore uno.
Il pensiero parla e provo a eseguire questa funzione.
Vediamo.
Ottengo che l'oggetto stringa non è chiamabile perché speak è stato modificato, speak è stato modificato in
un valore stringa invece di questa funzione effettiva che avremmo avuto bisogno in modo che se eseguo,
controllando solo l'attributo speaker, ottengo boo.
Hmmm, voglio dire, l'astrazione è buona, ma aspetta un secondo qui, questo è un male se ho una classe che
ho astratto, ma chiunque può venire, qualsiasi programmatore può venire e rimuovere tutto il mio duro
lavoro e sovrascrivilo così.
Non è così male.
Facciamo una pausa ed esploriamo un po' di più questo argomento nel prossimo video.