“O que é Orientação a Objetos? Por que preciso tanto saber sobre isso?” Essa é uma dúvida muito comum entre iniciantes no mundo do desenvolvimento de software.
Isso porque, quando falamos em desenvolvimento de software e seus paradigmas, existe uma sequência de aprendizado natural:
- Programação Imperativa
- Programação Orientada a Objetos
- Programação Funcional
Não que isso seja uma regra fixa e imutável, mas na maioria das vezes é a curva de aprendizado de um desenvolvedor de sucesso. E, programação orientada a objetos (popularmente conhecida como POO), como você pode ver, ocupa um papel central nesse processo.
Aí você me pergunta: “Por que!?”
Pois então, é exatamente sobre isso que irei falar nesse post, para assim, te ajudar a posicionar a sua carreira profissional de acordo com todo esse cenário do mercado de programação.
Portanto, nesse post irei explicar o que é Programação Imperativa e, obviamente, o que é Programação Orientada a Objetos. Para finalizar, pretendo deixar claro o porquê de POO ser tão importante no mercado de desenvolvimento de software atual.
Programação imperativa
A Programação Imperativa é aquela que 99.99% dos desenvolvedores aprendem em seus primeiros contatos com a área de programação. Geralmente, você aprende esse paradigma através de um curso online como o da Becode ou na própria faculdade, digamos em um curso de Sistemas de Informação (ou qualquer outro similar), onde a primeira disciplina provavelmente será “Algoritmos Estruturados ou fundamentos da programação”.
Nessa etapa, o aluno irá ver os conceitos iniciais e extremamente importantes, geralmente pautados no “Portugol” ou, muitas vezes, na Linguagem C.
Isso é muito comum, pois linguagens como a 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 software deve cumprir para atingir o seu objetivo.
Um exemplo clássico disso seria pensarmos quais são as etapas para a troca de uma lâmpada? De forma bem sucinta, podemos enumerar:
- Desligar o interruptor;
- Pegar uma escada;
- Montar a escada;
- Subir na escada;
- Desenroscar a lâmpada queimada;
- Descer da escada;
- Jogar a lâmpada queimada no lixo;
- Pegar uma lâmpada nova;
- Subir na escada;
- Rosquear a nova lâmpada;
- Descer da escada;
- Ligar o interruptor para verificar se a nova lâmpada acende.
Simples não é? 12 passos.
Claro, para a grande maioria dos casos, você pode chegar a uma mesma solução executando passos diferentes, dependendo da sua escolha. Como, por exemplo, já levar a lâmpada boa quando subir a primeira vez na escada. É justamente isso que torna a computação algo muito divertido, visto que podemos chegar a resultados idênticos, por diferentes caminhos.
Enfim, a Programação Imperativa, em resumo, é isso, um passo-a-passo (uma sequência lógica) para se chegar a um objetivo final.
Essa etapa é natural e muito importante na formação de um desenvolvedor. Portanto, não deve ser atalhada!
Programação Orientada a Objetos (POO)
Após o aprendizado da Programação Imperativa, geralmente, adquirido através de aulas de introdução à programação, fundamentos de programação, algoritmos, etc. O desenvolvedor novato percebe que muitas das ferramentas e linguagens atuais (Java, Ruby, Python e entre outras), são linguagens que utilizam, além do paradigma de programação imperativa, o paradigma Orientado a Objetos.
Isso, a princípio pode parecer ruim, “mais uma coisa para aprender”, mas na verdade é o que vai permitir o desenvolvedor “subir de nível”. Agora, sabendo POO, o desenvolvedor poderá resolver os mesmo problemas utilizando, não somente o passo-a-passo tradicional, mas também uma modelagem do problema de uma forma mais natural/real.
Vejamos o mesmo exemplo para trocar de uma lâmpada, agora usando a Programação Orientada a Objetos (POO). A primeira coisa a fazer é pensarmos em classes. Em outras palavras, coisas envolvidas no estudo de caso (trocar uma lâmpada):
- Pessoa, Lâmpada, Escada, Bocal da Lâmpada, Interruptor.
Definido isso, podemos combinar suas características e ações. Por exemplo: “uma Pessoa pega uma Lâmpada boa”.
Apenas esse fato de dizer que a “Pessoa” “pega” “Lâmpada” “boa” já nos diz muita coisa, pois tudo isso pode ser modelado usando o paradigma de Orientação a Objetos. Em outras palavras, tudo não passa de modelar Objetos que possuem ações e características.
Em nosso 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”.
Por que é tão importante!?
Então, essa pergunta pode ser respondida em duas etapas: linguagens de programação e valorização no mercado profissional
1º ponto: Linguagens de Programação
Irei te lançar um desafio…
- Acesse o ranking da TIOBE, um dos rankings de linguagens de programação mais conceituados e confiáveis;
- Confira as linguagens que ocupam as primeiras posições do ranking;
- Agora acesse o Wikipédia e procure características sobre essa linguagem.
Eis o que em 90% dos casos você irá encontrar:
“Essa linguagem de programação é baseada no paradigma orientado a objetos”
Sim, exato! Hoje em dia, o mercado de programação é dominado pelo paradigma orientado a objetos. Em outras palavras, é raro você trabalhar com uma linguagem de programação atual que não suporte POO. Sendo assim, fica claro o meu 1º ponto:
Saber POO não é um capricho, mas sim uma exigência do mercado.
[easy-tweet tweet=”Saber POO não é capricho, mas sim uma exigência do mercado.” user=”becodett @jackson_pires” hashtags=”POO” template=”light”]
2º ponto: Valorização profissional
Aí você pode tentar desconstruir a minha abordagem anterior com o seguinte argumento:
“Eu sei programar em ‘linguagem Orientada a Objetos’, mas não domino os fundamentos de POO”
Claro, isso é possível. Contudo, provavelmente você não estará utilizando o melhor que aquela linguagem de programação tem a oferecer.
Resumindo, existem dois tipos de desenvolvedores: aqueles que fazem e aqueles que fazem e sabem o que estão fazendo (teoria + prática).
O primeiro é aquele que provavelmente aprendeu a programar totalmente na prática, sem uma base teórica de qualidade, o que não está errado, mas também não estará em suas plenas capacidades profissionais.
Já o segundo, além de programar, consegue abstrair os requisitos do mundo real para o software, utilizando os conceitos de Orientação a Objetos no desenvolvimento do produto. A consequência disso é a utilização das melhores práticas, um software mais duradouro em termos de manutenibilidade e uma qualidade final de software superior.
Aí eu te pergunto, qual desenvolvedor será mais valorizado e possuirá mais chances de ter uma carreira de sucesso? Aquele que sabe programar ou aquele que sabe programar e também entende os paradigmas de programação
Acredito que você já saiba resposta. Este é o 2º ponto.
Resumindo…
Se programação orientada a objetos 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.
Obviamente, em um artigo com poucas palavras é quase impossível explicar de forma clara o que vem de fato a ser a POO. Por outro lado, fica claro também que conhecer esse paradigma faz parte da evolução natural do desenvolvedor e fazer carreira nessa área depende também de ter ou não esse conhecimento em seu sangue.
Mesmo com tantos percalços, o mais legal é que esse paradigma, depois de aprendido, pode ser aplicado a qualquer linguagem de programação que o suporte.
O que isso significa? Basicamente que você precisa aprender um uma única vez e, após mesmo tendo aprendido POO usando Java (por exemplo), você perceberá o mesmo funcionamento ocorrendo em Ruby, Phyton e diversas outras linguagens de programação. Legal, não é?
Se você ficou interessado em saber mais sobre programação orientada a objetos (POO), confira o curso online completo que desenvolvi sobre o POO com Java e comece a dar um upgrade na sua carreira ainda hoje! Dúvidas? Deixe o seu comentário abaixo, forte abraço!