Para quem está começando na área de desenvolvimento de software, esta é uma pergunta que, muitas vezes, se torna recorrente. Visto que, atualmente, outras questões como, Programação Funcional e Desenvolvimento Guiado a Testes, por exemplo, são levantadas ao mesmo tempo em que a Programação Orientada a Objetos ( POO) é citada. Portanto, o intuito deste pequeno artigo é te ajudar a entender todo esse cenário, além de te mostrar a importância de ter a POO como algo definitivamente certo em seu currículo.

Quando falamos de desenvolvimento de software e seus paradigmas, uma sequência de aprendizado que sempre me vem a cabeça é: Programação Imperativa, Programação Orientada a Objetos e, na sequência, a Programação Funcional. Não que isso seja uma regra, mas é, na maioria das vezes, a curva natural de aprendizado de uma pessoa desenvolvedora.

Programação Imperativa

A Programação Imperativa é aquela em que 99.99% das pessoas desenvolvedoras aprendem em seus primeiros contatos com o desenvolvimento de software. Se pensarmos nos alunos de uma faculdade do curso de Sistemas de Informação (ou afins), a primeira disciplina é Algoritmos Estruturados. Ou mesmo Fundamentos da Programação, onde são vistos os conceitos iniciais – geralmente pautados no “Portugol” – e, muitas vezes, Linguagem C. Isso é muito comum, pois linguagens como a Linguagem C possuem em seu cerne o paradigma de desenvolvimento imperativo. Ou seja, todo aplicativo/algoritmo é desenvolvido pensando-se em uma série de etapas que o mesmo deve cumprir.

Um exemplo disso seria pensarmos: quais seriam os passos para a troca de uma lâmpada? De forma bem sucinta, podemos enumerar:

  1. desligar o interruptor;
  2. pegar uma escada;
  3. montar a escada;
  4. subir na escada;
  5. desenroscar a lâmpada queimada;
  6. descer da escada;
  7. descartar a lâmpada queimada;
  8. pegar uma lâmpada nova;
  9. subir na escada;
  10. rosquear a nova lâmpada;
  11. descer da escada;
  12. ligar o interruptor para verificar se a nova lâmpada acende.

Fluxograma POO - Programação Orientada a Objeto

É claro que, para fazer o mesmo serviço, você poderia ter mais ou menos passos, dependendo de suas escolhas. Como, por exemplo, já levar a lâmpada boa quando subir a primeira vez na escada. Inclusive, é justamente isso que torna a computação algo muito divertido, visto que podemos chegar ao mesmo resultado por caminhos/passos diferentes. Enfim, a Programação Imperativa, em resumo, é unicamente isso: segue-se um passo a passo (uma sequência) até chegar ao objetivo final.

Programação Orientada a Objetos

Após este aprendizado, geralmente, conseguido com aulas de introdução à programação, fundamentos de programação, algoritmos, etc., uma pessoa desenvolvedora que esteja iniciando sua carreira percebe que muitas das ferramentas e linguagens hoje usadas (JavaRubyPython) são linguagem que se utilizam, além do paradigma de Programação Imperativa, o paradigma Orientado a Objetos. Isso, no entanto, pode até parecer ruim a princípio. Mas, na verdade, vai permitir que a pessoa desenvolvedora “suba de nível”. Afinal, agora será possível resolver problemas não apenas utilizando um passo a passo, mas também modelando o seu problema de uma forma mais natural.

Vejamos o mesmo exemplo para trocar uma lâmpada usando a POO.

  1. A primeira coisa a fazer é pensarmos nas classes/coisas envolvidas no estudo de caso (trocar uma lâmpada) e, logo de cara, podemos pensar: pessoa; lâmpada; escada; bocal da lâmpada; interruptor.
  2. Agora que sabemos quem está envolvido, podemos combinar suas características e ações como, por exemplo, “uma pessoa pega uma lâmpada boa”. Apenas o fato de dizer que “pessoa” “pega” “lâmpada” “boa” já nos diz muita coisa, pois tudo isso são coisas que podemos modelar usando o paradigma de Orientação a Objetos. Ou seja, tudo não passa de modelar Objetos/Coisas que possuem ações e características. E, nesse caso, “pessoa” seria uma classe/objeto, “pega” seria uma ação da “Pessoa”, “Lâmpada” seria uma outra classe/objeto e “boa” seria o estado/característica/atributo da “Lâmpada”.

Conclusão

Enfim, se isso for uma novidade pra você, tenho certeza que mexeu com seus neurônios. Mas, ao mesmo tempo, te deixou na vontade de entender a fundo como tudo isso funciona, não é mesmo? Apesar de ser quase impossível explicar em um artigo com poucas palavras o que vem de fato a ser a POO, certamente fica claro também que conhecer este paradigma faz parte da evolução natural de uma pessoa desenvolvedora. Além do mais, fazer carreira nessa área vai depender também de ter este conhecimento em seu sangue.

Mesmo com tantos percalços, o mais legal é que este paradigma, depois de aprendido, pode ser aplicado a qualquer linguagem de programação que o suporte. Ou seja, aprenda uma única vez e, mesmo tendo aprendido POO, usando Java, você perceberá o mesmo funcionamento em Ruby ou Phyton, por exemplo. E esta é uma das maravilhas de se conhecer um novo paradigma.

Um forte abraço! 😉