O que é Programação Orientada a Objetos e porque você precisa saber!

“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:

  1. Programação Imperativa
  2. Programação Orientada a Objetos
  3. 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:

  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. Jogar a lâmpada queimada no lixo;
  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.

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

Programação Orientada a Objetos | Linguagens de Programacao

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

Programação Orientada a Objetos | Valorizacão Profissional do Desenvolvedor

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!

 

Curso Online de Orientação a Objetos com Java

Written by Jackson Pires

Mais de 15 anos dedicados a Dev, 5 a ensinar. Acredito que programação não precisa ser complicado, por isso, adotei o Ruby On Rails (RoR). Contudo, como todo bom Engenheiro de Software, tenho especialização e adoração por diversas tecnologias do mercado. Hoje, dedico o meu tempo a ensinar e compartilhar conhecimento em plataformas como a Becode. Ahh... também sou fotógrafo nas horas vagas.

Carreira na TI depois dos 30? Veja 10 dicas para vencer o preconceito!

Carreira na TI depois dos 30? Veja 10 dicas para vencer o preconceito!

TOP 10 principais SGBDs do mercado Mundial | Becode

TOP 10 principais SGBDs do mercado global!