O que é Programação Orientada a Objetos?
A Programação Orientada a Objetos (POO) é um paradigma de programação que utiliza objetos para abstrair o mundo real e pertence à família de paradigmas considerados de alto nível. Os comandos utilizados para operar o hardware são abstraídos do programador e as aplicações são construídas a partir de comandos construídos em camadas mais abstratas.
Este paradigma agrupa na forma de objetos, atributos e métodos que definem características e comportamentos. Estas informações e procedimentos podem ser reutilizados facilmente, além de permitir melhorar a organização do código e construção de softwares de grande escala.
Como a POO nasceu?
Historicamente, a POO não foi o primeiro paradigma a ser proposto. Antes da sua criação, os programadores interagiam diretamente com o hardware, realizando a entrada do código através de códigos de baixíssimo nível (por exemplo, a linguagem ASSEMBLY).
Exemplo de um programa em assembly |
Mesmo ineficientes, vários sistemas foram construídos utilizando as linguagens de montagem (“assembler/assembly”). Essas linguagens substituíam as funções do código de máquina por mnemônicas, endereços de memória absolutos referenciados por identificadores. A essa linguagem de baixo nível pertence ainda a “segunda geração” das linguagens. Com a evolução da computação, as linguagens de montagem da década de 1960 suportavam condicionais e macros bastante sofisticadas. Além disso, elas também suportavam recursos de programação modular tais como CALL (para suportar subrotinas), variáveis externas e secções comuns (globais); isso permitia re-utilizar código e o isolamento de características específicas do hardware, através do uso de operadores lógicos como READ, WRITE, GET e PUT.
Esse tipo de linguagem de montagem foi e ainda é usada para sistemas críticos, e frequentemente usada em sistemas embarcados. Mesmo sendo amplamente utilizada, essa forma de construir aplicações exige um alto nível de conhecimento do funcionamento do hardware e também é bastante improdutiva. O próximo avanço foi o desenvolvimento das linguagens procedimentais. As primeiras a serem descritas como de alto nível, essas linguagens da terceira geração usam um vocabulário relativo ao problema sendo resolvido. Por exemplo, COBOL usa termos como file (para identificar arquivos), move (para mover arquivos) e copy (para copiar arquivos).
Tanto FORTRAN quanto ALGOL usam terminologia matemática, tendo sido desenvolvidas principalmente para problemas comerciais ou científicos. Tais linguagens procedurais descrevem, passo a passo, o procedimento a ser seguido para resolver certo problema. A eficácia e a eficiência de cada solução é subjetiva e altamente dependente da experiência, habilidade e criatividade do programador. É importante ressaltar que as linguagens procedimentais são consideradas como predecessoras a orientação a objetos. Quando bem utilizadas possuem maior desempenho, pois possuem menos desvios quando comparados com a POO. Entretanto, com a implementação de conceitos como o polimorfismo, herança e o encapsulamento tornou a POO uma forma bastante confortável para cognição humana.
Outros tipos de paradigmas criados:
- Programação estruturada
- Programação imperativa
- Programação de passagem de mensagens
- Programação procedural
- Programação orientada a fluxos
- Programação escalar
- Programação restritiva
- Programação orientada a aspecto
- Programação orientada a regras
- Programação orientada a tabelas
- Programação orientada a fluxo de dados (como em diagramas).
- Programação orientada a políticas.
- Programação orientada a testes.
- Programação Genérica.
- Programação multiparadigma.
Porque a programação orientada a objetos é utilizada?
Todos que já tiveram alguma experiência com a linguagem C ou C++ sabem o drama que é quando temos que desenvolver algum software que começa a ficar muito grande. O paradigma procedural é simples quando a tarefa é realizar procedimentos didáticos como, por exemplo, soma de dois números ou então o cálculo do fatorial. Porém, quando a tarefa envolve alguns passos a mais, isto pode se tornar uma tarefa mais custosa que o necessário.
É difícil imaginar como seria o mundo se todos nós tivéssemos que saber como construir tudo que usamos em nosso dia a dia. Muito de nós utilizamos tecnologias, utensílios ou máquinas que sequer fazemos ideia de como funcionam. Porém não entender como algo funciona não significa que as pessoas não possam usá-lo, por exemplo: algumas pessoas sabem dirigir e não tem ideia de como um motor de um automóvel funciona e isso não torna o carro menos útil em seu dia a dia. A ideia de abstrair problemas tem sido de grande valor na sociedade, assim na programação foi necessário recriar esta abstração. Esta abstração foi consolidada na programação orientada a objetos.
Quem utiliza a POO?
A POO é utilizada por diversas linguagens de programação, entre elas as mais utilizadas no mercado (Figura 1). Algumas delas como o Java, PHP, Python e C# implementam muitos recursos bastante semelhantes. Assim quando alguém que se propõe aprender o paradigma pode migrar de linguagem com maior facilidade, visto que ele saberá como a linguagem é usada.