(post atualizado em 23/07/2020)

Se você começou a estudar programação há pouco tempo, já deve ter lido vários artigos e visto algumas videoaulas sobre POO – Programação Orientada a Objetos, certo?!

POO significa: Programação Orientada a Objetos. Em inglês OOP –  Object Oriented Programming.

Pois bem! O principal objetivo da POO é aproximar o mundo digital com o mundo real.

E como este conceito faz isso?
Simulando o mundo real dentro do computador!
Isso mesmo!

Isso porque através da POO, o programador trabalha com Dados de Objetos ao invés dos Dados Globais, tradicionalmente utilizados na Programação Estruturada (fique tranquilo, mais abaixo veremos mais sobre os diferentes estilos de programação).

Kit de Programação para Iniciantes - Gratuito

Conceitos da POO – Programação Orientada a Objetos

Na Programação Orientada a Objetos os objetos conversam entre si através do envio de mensagens, e o papel do programador é especificar quais serão as mensagens que cada objeto deve receber, e também qual ação aquele objeto deverá realizar ao receber aquela mensagem específica.

Então, para que você possa compreender a fundo como funciona a POO, é importante que você conheça a definição do que é um objeto para a programação:

  • Segundo os livros de programação, um objeto é considerado algo material ou abstrato, que pode ser descrito por meio de suas caraterísticas, comportamentos e estado atual. Desta forma, em programação, um objeto pode ser uma caneta, um carro, uma pessoa, ou também um compromisso, uma venda, um horário no médico…

 

Como funciona a POO?

Na Programação Estruturada ou até mesmo na Programação Modular, a massa de dados é tratada por procedimentos. Os procedimentos têm acesso à massa de dados, processam, e geram resultados.

Por exemplo, se eu tenho 4 procedimentos nem todos eles utilizam todos os dados. Utilizam apenas os dados que lhe convém, o que gera um pouco de bagunça.  Estes procedimentos, antes de começar a funcionar, precisam filtrar os dados para saber quais deles são úteis.

Por sua vez, na Programação Orientada a Objetos, trabalha-se com Dados de Objetos ao invés de massa de dados, e na POO os métodos fazem uso dos dados pertinentes àquele objeto, não precisam de filtro adicional. O que facilita, e muito, a programação.

E além disso, na Programação Orientada a Objetos podemos ter vários objetos, vários métodos, fazendo uso destes dados. E se precisar comunicar esse objeto um com outro consigo fazer troca de dados entre eles.

Pode parecer um pouco confuso, mas não é.

 

Então, para que você possa entender melhor, vamos supor que temos que programar um controle remoto

 

POO - Programação Orientada a Objetos

Em uma programação com linguagem não orientada a objeto o foco seria nos circuitos internos, em todos os detalhes, e como eles se inter-relacionam.

Já na Programação Orientada a Objetos, o programador irá focar no objeto controle remoto, nas funcionalidades que cada botão tem e nas ações que eles vão executar ao serem pressionados.

 

Outro Exemplo:

POO - Programação Orientada a Objetos

Para você entender melhor, vamos pensar em um carro como um objeto.

Existe apenas um tipo de carro?
Não, existem vários tipos de carro, e cada tipo de carro segue um modelo, uma mesma classificação (em programação orientada a objetos dizemos que todos os objetos estão baseados em uma mesma classificação).

Quando uma empresa vai criar um carro ela segue um molde previamente planejado, que vai classificar qual será o modelo daquele carro.

Na Programação Orientada a Objetos o carro em si é o objeto e o molde utilizado pela empresa é considerado uma classe.

Então, para você entender bem, na Programação Orientada a Objetos uma classe precisa responder a 3 perguntas:

1 – Que coisas eu tenho?
2 – Que coisas eu faço?
3 – Como estou agora?

Vamos continuar pensando em um carro…

Primeiro, que coisas um carro tem?
Ele tem um modelo, uma cor, uma marca…

Segundo, que coisas eu posso fazer com um carro?
Posso andar, posso estacionar, posso dar a ré…

Terceiro, como o carro está agora?
Ele pode estar parado no semáforo, estacionado, andando…

Na teoria de POO – Programação Orientada a Objetos estas 3 perguntas têm nomes específicos:

– O que eu tenho são os ATRIBUTOS de um objeto.
– O que eu faço são os MÉTODOS de um objeto.
– Como estou agora é o ESTADO de um objeto no momento em que eu o estou analisando.

Como você pode entender, em Programação Orientada a Objetos todo objeto tem atributo, método e estado!
E todo objeto vem a partir de uma classe (molde utilizado para gerar este objeto).

Então, para você criar um objeto em programação, você precisa primeiro fazer uma classe. Igual a uma fábrica que faz um carro. Antes de fazer o carro, a empresa precisa ter o molde do carro que será fabricado.

 

História da POO – Programação Orientada a Objetos

história da poo - programação orientada a objetos

Veja só, quando começaram a surgir os primeiros programas de computador, nas décadas de 40 e 50, a Programação era em Baixo Nível. Não existia nenhum tipo de comando para se criar um programa. As instruções eram dadas aos computadores do modo que eles entendiam.

Se o computador era do tipo A, a programação era de um tipo; se o computador era do tipo B, a programação era de outro tipo, e por aí vai. Esta diferenciação dificultava muito a programação.

Foi então que, depois disso, surgiram de forma modesta as linguagens de alto nível e a Programação se tornou Linear, com comandos que eram compreensíveis pelos programadores, mas sem rotinas internas e sem uma programação estruturada.

O programador dava as instruções de cima para baixo, como se fosse uma lista de compras. O trabalho ainda era limitado, mas já estava muito melhor do que a programação de baixo nível.

Foi somente a evolução da Programação Linear que deu origem à Programação Estruturada.
Nesta fase, pequenos pedaços da Programação Linear passaram a ser organizados de maneira que pudessem ser executados fora da ordem e foi então que a programação deixou de ser pequenos programas e deu origem aos sistemas.

Com o crescimento dos sistemas, a programação estruturada começou a falhar e surgiu a necessidade de se criar uma linguagem mais evoluída, assim surgiu a Programação Modular.

Este estilo de programação  cria módulos estruturados, valorizando dados e funcionalidades, e os coloca em pequenas cápsulas, protegidas para compor sistemas maiores e maiores e maiores.

Mas a programação modular teve vida reduzida, pois logo surgiu um paradigma que ampliava os conceitos da programação modular – a Programação Orientada a Objeto – POO.

Mas saiba que a POO não surgiu da noite para o dia, ele foi evoluindo, e quem criou a primeira ideia de POO foi Alan Curtis Kay.

Quem foi Alan Kay

Alan Kay não era programador. Ele era formado em matemática e biologia, que eram suas grandes paixões. Ele afirmava que: “o computador ideal deve funcionar como um organismo vivo, cada célula se relaciona com outras a fim de alcançar um objetivo, mas cada uma funciona de forma autônoma. As células poderiam também reagrupar-se para resolver um outro problema ou desempenhar outras funções”.

Suas criações iniciaram em 1970, uma época em que ainda nem existia faculdade de programação!

Ele criou vários conceitos de interação utilizando computadores. Idealizou o Dynabook, um projeto que ficou só no protótipo, mas é considerado um dos precursores do notebook.

Uma das tecnologias que ele criou para poder rodar o Dynabook foi uma linguagem de programação chamada Smalltalk. Isso porque as linguagens da época não teriam compatibilidade no Dynabook.

A Smalltalk contava com conceitos como: classe, objeto, atributos, e métodos, e por isso é considerada a primeira linguagem de programação orientada a objeto.

 

Vantagens de utilizar a POO – Programação Orientada a Objetos

Várias bibliografias indicam seis principais vantagens da POO, são elas:

Primeira – Todo software orientado a objeto é confiável (ao alterar uma parte nenhuma outra é afetada)

Segunda – O software orientado a objeto é oportuno (ao dividir tudo em partes, várias delas podem ser desenvolvidas em paralelo)

Terceira – O software orientado a objeto é manutenível (atualizar um software é mais fácil, uma pequena modificação beneficia todas as partes que usarem o objeto)

Quarta – Ele também é extensível (o software não é estático, deve crescer para permanecer útil)

Quinta – O software orientado a objeto é reutilizável (podemos usar o objeto de um sistema que criamos em outro sistema que viermos a criar)

Sexta – Ele é natural (todo software orientado a objeto tem que ser natural, pois é mais fácil de entender, se preocupa mais com a funcionalidade do que com os detalhes de implementação)

 

Mas, será que existe desvantagens na Programação Orientada a Objetos?

Existe sim, mas é pequena comparada às vantagens!

Veja só. A execução de uma aplicação orientada a objetos é mais lenta do que o que vemos na programação estruturada, por exemplo.

Isso acontece devido à complexidade do modelo, que traz representações na forma de classes. Porém, no momento em que estamos, tecnologicamente essa execução mais lenta não nem percebida pelo desenvolvedor e nem pelo usuário do software.

Outra desvantagem seria que a programação estruturada, quando bem feita, possui um desempenho superior ao que vemos na programação orientada a objetos. Isso ocorre pelo fato de ser um paradigma sequencial, em que cada linha de código é executada após a outra, sem muitos desvios, como vemos na POO.

Entretanto, a programação orientada a objetos traz outros pontos que acabam sendo mais interessantes no contexto de aplicações modernas. Como o desempenho das aplicações não é uma das grandes preocupações na maioria das aplicações (devido ao poder de processamento dos computadores atuais), a programação orientada a objetos se tornou muito difundida.

 

Quais as linguagens que rodam com POO – Programação Orientada a Objetos?

POO - Programação Orientada a Objetos

Java

Java é, muito provavelmente, a linguagem de programação mais utilizada no mercado atual. Auxiliado pela presença do JRE (Java Runtime Environment), ou variações dele, em quase todos os dispositivos eletrônicos do momento, a linguagem Java é um grande sucesso entre os desenvolvedores. O sucesso da linguagem aumentou ainda mais com o Google Android, que escolheu o Java como linguagem preferencial de desenvolvimento de aplicações.

Clique e conheça melhor a linguagem Java!

C#

O C#, por sua vez, é outra das linguagens mais utilizadas no mercado. Como os computadores pessoais no mundo, em sua maioria, possuem o sistema operacional Windows, da Microsoft, o C# se popularizou. Isso porque o Windows implementa o Framework .NET, ao qual o C# está associado. O C# é uma linguagem de uso geral e especialmente criada para utilização com a orientação a objetos. Vale ressaltar que, em C#, tudo é um objeto (herda da classe object).

Clique e conheça melhor a linguagem c#!

 

Python 

Python é uma linguagem de programação de alto nível, interpretada, de script, imperativa, orientada a objetos, funcional, e de tipagem dinâmica e forte. A linguagem Python é muito utilizada em pesquisas científicas, devido a sua velocidade, pois combina uma sintaxe concisa e clara com os recursos poderosos de sua biblioteca padrão e por módulos e frameworks desenvolvidos por terceiros.

Clique e conheça melhor a linguagem Python!

 

Outras linguagens

Além dessas exemplificadas, existem outras linguagens que podem ser utilizadas na POO. Dentre elas vale citar a  Objective-C, que é a linguagem de preferência para desenvolvimento de aplicações para os sistemas da Apple, como iPhone e iPad; Ruby, voltada para o desenvolvimento web; e Visual Basic .NET, muito utilizada até pouco tempo, mas também caindo em desuso, principalmente devido ao avanço do C# em popularidade.

 

Saber POO não é um capricho, é uma necessidade!

Alguns programadores, apesar de utilizarem linguagens orientadas a objetos, não sabem utilizar alguns dos principais conceitos desse paradigma orientado a objetos e, por isso, desenvolvem sistemas com alguns erros conceituais e acabam escrevendo mais código que o necessário, não conseguindo reutilizar o código como seria possível.

Por isso é muito importante aprender, e aprender do jeito certo, como desenvolver da melhor forma com POO.

O que vemos na área de TI hoje em dia é existem dois tipos de desenvolvedores:

– aqueles que fazem
– aqueles que fazem e sabem o que estão fazendo

O primeiro é aquele que aprendeu a programar basicamente na prática, sem uma base teórica de qualidade, o que não está errado, mas o problema é que não alcançará 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 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?

 

Aprenda do jeito certo!

Se você está começando a Estudar Programação e deseja se tornar este desenvolvedor com mais chances de sucesso na Carreira, então invista no seu conhecimento, e invista do jeito certo!

Leia muito, veja videoaulas, faça cursos e se capacite sempre!
Um programador iniciante precisa estar disposto a aprender sempre, e cada dia mais.

E se você quiser aprender de forma efetiva, com um tutor que estará ao seu lado para retirar todas as suas dúvidas, aqui na Apex nós fornecemos o caminho mais seguro para você começar a programar, podendo ainda escolher entre as principais linguagens utilizadas na região de Blumenau: Java, C# ou Python.

E ao finalizar o treinamento você estará apto a concorrer a mais de 250 vagas abertas no mercado de TI de Blumenau!

Quer saber mais sobre este treinamento?

Então clica AQUI e confere nosso Método Exclusivo de Ensino, que já formou dezenas de novos programadores que hoje estão inseridos nas principais empresas de Blumenau e região!

Aprenda de Graça!

Se você ainda não estiver preparado para investir no seu conhecimento efetivo, não tem problema! Aqui na Apex nós temos um Kit Completo para quem está começando a estudar programação.

Clique aqui para adquirir gratuitamente o Kit Apex de Programação Para Iniciantes