Sabemos que existem quatro pilares do OPIS e aprendemos sobre encapsulamento, qual é o segundo?
Bem, é chamado de abstração.
Uma abstração significa ocultar ou abstrair informações e dar acesso apenas ao
necessário.
Portanto, seja o que for que o usuário, o programador ou a máquina estejam interessados, é a única coisa que damos
acesso a todo o resto.
Nós meio que escondemos em um cobertor por baixo do capô, porque nossos usuários não precisam se preocupar com isso.
Deixe-me mostrar o que quero dizer.
Se eu voltar ao nosso antigo exemplo aqui, então, em vez de ter um dicionário, na verdade
temos um personagem do jogador com vários métodos.
Agora, a abstração pode realmente ser vista aqui, certo?
Quando eu faço.
Jogador um ponto fala, você está vendo abstração em ação porque quando eu clico em executar.
Eu pego esta bebida, mas quando eu ligo para falar, eu realmente não me importo como o Speek é implementado, tudo que eu
sei é que o Jogador um tem acesso ao método speak e eu posso usá-lo.
Mesmo quando estou usando algo como uma tupla certa.
Se eu tiver um, dois, três e fizer ponto aqui, posso contar para contar quantos itens estão na tupla.
Portanto, se eu imprimir e clicar, execute.
Bem, eu tenho que dar uma coisa que estamos procurando em nosso caso, vamos olhar um e vamos adicionar
outro aqui.
Se eu clicar, corra.
Chego agora, preciso saber como o método de contagem foi implementado?
Não, quero dizer, posso dar uma olhada nisso, posso olhar a documentação do Python,
talvez o código Python e entender como ele está realmente contando isso, mas realmente não preciso escrever.
Se tentarmos entender cada pedacinho, nossas cabeças vão explodir.
Às vezes, tudo o que precisamos é de um método ou atributo e apenas obter acesso a ele sem ter que nos preocupar
em como ele está sendo implementado, o que é muito, muito bom.
O mesmo acontece com as funções integradas, certo?
Se eu fizer lenth aqui e clicar em executar.
Eu consigo um comprimento de quatro, mas eu realmente não preciso saber como o LENTH foi implementado em Python,
ele foi abstraído de nós.
E este é o poder do OLP, ele abstrai coisas com as quais não precisamos nos preocupar, ou pelo menos nos
torna mais eficientes para que saibamos que funciona de uma determinada maneira e não estamos perdendo nosso
tempo aprendendo ou codificação do zero.
Se tivéssemos nosso iPhone, por exemplo, bem, o recurso de câmera de um iPhone, seria bom para um aplicativo
que construímos para usá-lo.
Mas não precisamos realmente saber exatamente como a câmera do iPhone é codificada em um iPhone.
Não.
Em vez disso, o iPhone geralmente nos dá uma maneira de dizer ponto da câmera, tirar foto.
Para realmente nos permitir tirar uma foto sem saber como os engenheiros da Apple realmente revestiram a câmera, então é
um conceito muito poderoso.
OK, então você está pensando, acho que vou conseguir uma distração.
Mas deixe-me perguntar uma coisa.
Posso apenas fazer o nome do jogador um é igual a, digamos, pontos de exclamação e ponto do jogador.
Ou, você sabe, menos falar é igual a vaiar, certifique-se de que é o jogador um.
Bem, se eu imprimir agora e fizer o jogador um.
Pensei falar e tento executar essa função.
Vamos ver.
Eu recebo um objeto string que não pode ser chamado porque speak foi modificado, speak foi modificado
para um valor de string em vez desta função real que precisaríamos para que, se eu executar,
apenas verificando o atributo speaker, receba boo.
Hmmm, quero dizer, abstração é bom, mas espere um segundo aqui, isso é ruim se eu tiver uma classe que abstraia,
mas qualquer um pode vir, qualquer programador pode vir e simplesmente remover todo o meu trabalho
duro e sobrescrever assim.
Isso não é ruim.
Vamos fazer uma pausa e explorar esse assunto um pouco mais no próximo vídeo.