10

Entenda Programação Orientada a Objetos de uma vez por todas.

Anna Maria
Anna Maria

Entenda Programação Orientada a Objetos de uma vez por todas.


Os quatro pilares da programação orientada a objetos são:

  • Encapsulamento
  • Abstração
  • Herança
  • Polimorfismo.


Vou tentar dar uma explicação com exemplos simples para cada um dos conceitos.


Encapsulamento


O encapsulamento é obtido quando um objeto mantém seu estado privado, dentro de uma classe. Outros objetos não têm acesso direto a este estado. Em vez disso, eles só podem chamar uma lista de funções públicas /métodos chamados.

Portanto, o objeto gerencia seu próprio estado por meio de métodos e nenhuma outra classe pode tocá-lo, a menos que seja explicitamente permitido. Ou seja: Se você quer se comunicar com o objeto, você deve usar os métodos fornecidos. Mas por padrão, você não pode alterar o estado.

Vamos tentar entender isso usando um exemplo:

Digamos que temos uma classe chamada Mobile e algumas funções públicas:

  • abrirCamera()
  • abrirCalculadora()
  • abrirInstagram()
  • abrirWhatsapp()


Image for post


Vamos focar na função abrirCamera().

A figura acima mostra a comparação de um telefone com um recurso de câmera (do meio) e outro telefone celular com um recurso de câmera, incluindo um recurso adicional de zoom (à direita). Inicialmente você só tem uma função que abre a câmera para você! nada mais. Então você quer que tenha um recurso para dar zoom na foto. Você só vai precisar atualizar sua função abrirCamera ().

O ponto que precisa ser entendido aqui é que você não precisa se preocupar com nada fora desta função. Basta ir até a função, fazer algumas alterações! Isso é o que Encapsulamento faz, é um mecanismo de implementação de classe e função e de fazer coisas juntas.


Abstração


Abstração é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais.

Pra entender melhor, vamos usar um exemplo do aplicativo do Uber:

Image for post


Vamos tentar entender o fluxo do aplicativo:

Na figura (A): Quando você deseja reservar uma viagem, você deve inserir um ponto de de embarque.

Na figura (B): Depois de tocar em Inserir um ponto de embarque, agora você deve inserir o local de destino .

Na figura ©: Depois de concluída a digitação do local de destino, agora você deve selecionar um local da lista de sugestões.

Na figura (D): Depois de selecionar uma da lista de sugestões, você encontrou sua estimativa de tempo e custo.

O que é interessante sobre cada ponto é que você faz todas as suas ações com apenas um toque e não precisa se preocupar em como isso acontece, como quando você tocou em Insira um ponto de captação, em seguida, como o mapa é aberto e como aquele ponteiro aponta para sua localização ? Você precisava saber disso? Nesse ponto, você só se preocupou em que você seja localizado(a) corretamente, e é isso! e isso é exatamente o que o aplicativo Uber está fazendo por você (ou seja, ocultação de informações).


Herança


Herança é uma maneira de extrair a lógica única em uma classe separada.

Isso significa que você cria uma classe (filha) derivando de outra classe (pai). Dessa forma, formamos uma hierarquia.

A classe filha reutiliza todos os campos e métodos da classe pai (parte comum) e pode implementar seus próprios (parte única).

Vamos dar o exemplo do whatsapp:


Image for post


No WhatsApp uma mensagem pode ser enviada. Pode ser uma mensagem de áudio, ou com uma foto ou uma figurinha, o que eu quero dizer é que a mensagem de áudio e a mensagem fotográfica e as figurinhas são filhos da mensagem!


Polimorfismo


Polimorfismo é a propriedade de duas ou mais classes derivadas de uma mesma superclasse responderem a mesma mensagem, cada uma de uma forma diferente.


Vamos tentar entender usando um exemplo de busca no Google:

Quando o usuário procura por algo “ALLAH HU AKBAR” por exemplo. Então, por padrão, SearchItems () da classe ALLSearch será chamado. Da mesma forma, quando o usuário clica em Imagens para ver a imagem da consulta de pesquisa, então SearchItems() da classe ImageSearch será chamado. O ponto que precisa ser entendido aqui que a redefinição da função é feita aqui e, em segundo lugar, o objeto da classe Search pode ser exibido em muitas formas (como objeto de AllSearch, ImageSearch etc).


Image for post



Espero ter ajudado 💞

 

Alguns dos meus artigos anteriores:

💫 Ensinando a ter um servidor e um domínio GRÁTIS com GitHubPages

💫Sites para fazer download gratuito de ícones

💫Melhores extensões para trabalhar no Visual Studio Code

💫Melhores temas do Visual Studio Code

💫Como usar Font Awesome

💫 Como colocar ícone ou logo do seu site na barra de endereço do navegador

💫 Como usar imagens e gifs nos seus artigos da DIO

💫 O que você precisa saber para começar a ser um(a) desenvolvedor(a) freelancer


______________________________________________________________________________________

Olá, meu nome é Anna Maria eu sou uma desenvolvedora Front-End.

Me desafiei a postar um artigo por dia aqui na DIO, com assunto diversos, mas principalmente coisas que eu tive/tenho dificuldade.

Então decidi compartilhar com vocês.

 

📌Me siga para ver mais artigos

📌Curta( lá em cima do lado esquerdo " ^ ")

📌Comente se te ajudou

 

Se ficar com alguma dúvida pode me contatar 📧

✨Discord: imnotannamaria#1935

✨LinkedIn: www.linkedin.com/in/anna-maria-573801191/

✨Email: aannamariabr@outlook.com

 

_Anna Maria

3
99

Comentários (3)

1
Rafael Moura

Rafael Moura

09/01/2021 02:07

Que ótimo Anna!


1
Elon Bezerra

Elon Bezerra

08/01/2021 17:48

Muito bom, Anna! Tudo realmente ficou mais claro com os exemplos que você deu.


Parabéns e obrigado!

2
Iuri Reis

Iuri Reis

07/01/2021 23:39

Muito bons os exemplos. Como sempre seus artigos consistem em boa fonte de informações.

Parabéns e obrigado.

Desenvolvedora Front-End | JavaScript | CSS | HTML

Brasil