Qual é a origem da orientação a objetos? Esse é com certeza um dos temas mais complexos na programação.
Primeiro porque você, certamente, acabou de aprender a fazer seus códigos em portugol ou em fluxograma e já é obrigado a mergulhar num oceano de objetos, classes e métodos.
Segundo porque, sim, a programação orientada a objetos é bem complicada no início mesmo. Existem muitos conceitos essenciais nesse paradigma que se não forem bem compreendidos, não vão te deixar ir adiante.
Mas uma vez entendidos, você vai desenvolver a base teórica essencial que todo programador precisa para programar em suas linguagens preferidas. Falando nisso, você tem uma linguagem preferida?
Bom, enquanto você decide se tem ou se não tem eu vou te mostrar como surgiu a orientação a objetos e para que ela serve.
Acompanhe-me…
Leia também
Fundamentos de Orientação a Objeto: Herança, polimorfismo, abstração
Você sabe qual é a diferença entre GIT e GITHUB?
Quer aprender a programar? Confira aqui 25 cursos gratuitos e com certificado!
Origem da Orientação a objeto: Paradigmas de programação
Segundo o livro Orientação a Objetos de Thiago Leite e Carvalho (2016), um algoritmo deve ser o mais genérico possível, para assim ser implementado com facilidade em qualquer linguagem de programação.
Um algoritmo, de forma resumida, é o passo a passo que o programador faz para que o computador execute uma tarefa.
Por exemplo, para que o computador calcule 1 + 1, é preciso que você diga isso a ele. Sozinho ele não faz porque ele não sabe.
Então você escreve um código com instruções que dizem ao computador como ele vai fazer o cálculo de 1 + 1.
Após a instrução que você deu, o computador certamente vai saber interpretar e calcular o que pediu.
Em resumo, os algoritmos são as instruções que dão origem ao programa em si.
Paradigma de Programação
Primeiramente, para poder entender os elementos por trás da Orientação a Objetos, é preciso dar atenção a um termo específico: paradigma de programação.
- Os paradigmas são como estruturas de código, com regras e características.
Um paradigma extremamente utilizado e precursor da programação atual, foi o estruturado. Originou-se lá pela década de 1950 e baseava-se na engenharia de software.
Sua principal característica é que sua metodologia dá ênfase nos processos de sequência, decisão e iteração de um bloco de código.
De fato, linguagens como PHP, Go, Cobol, etc., ainda utilizam o paradigma estruturado, embora deem suporte também para o paradigma orientado a objetos.
Resumindo, o paradigma estruturado costuma agrupar o seu código. Com isso, o “passo a passo” é centralizado e desenvolvido em um mesmo lugar.
Ou seja, todo o código é agrupado em um mesmo arquivo. Consequentemente a manutenção ou a refatoração do código é dificultada.
Já pensou se você abre um arquivo no bloco de notas e nele tem milhares de linhas de códigos? Pois é.
Por um lado a programação estruturada facilita a programação e consome menos recursos do processador, mas por outro torna o código engessado e difícil de se reutilizar.
Mas é claro que é o projeto quem vai decidir qual paradigma usar. Por exemplo, em programas menores, menos complexos e sem grande necessidade de abstração, o paradigma estruturado é uma boa opção.
Já quando você desenvolve uma grande aplicação, é mais vantajoso seguir a metodologia orientada a objetos.
Uma coisa é certa, não existe paradigma certo ou errado. Tudo depende do projeto que você vai desenvolver e da proporção que ele pode alcançar.
Paradigma Orientado a Objetos
A criação de programas mais robustos e eficientes tornou-se imprescindível com o avanço da tecnologia e o aperfeiçoamento das máquinas computacionais.
Contudo, o paradigma estruturado tinha suas limitações e havia aí uma brecha para o advento de novas metodologias.
Foi devido a essa brecha que surgiram outros paradigmas, sobretudo o Orientado a Objetos, que é o que vamos estudar aqui.
Sendo assim, o paradigma Orientado a Objetos, de acordo com Thiago Leite e Carvalho (2016), originou-se a fim de suprir as insuficiências derivadas do paradigma estruturado e seus similares.
Ainda segundo o autor, a principal característica da orientação a objetos é poder expressar as necessidades do dia a dia no código.
Entenda esse expressar por traduzir as necessidades da realidade em códigos e gerar programas a partir disso.
Origem da Orientação a Objetos
A Orientação a Objetos surgiu na Noruega, em 1962.
Naquele ano, dois pesquisadores do Centro Norueguês de Computação (Norwegian Computing Center – NCC), Kristen Nygaard e Ole-Johan Dahl, iniciaram um projeto que almejava criar uma linguagem de Simulação de Eventos Discretos.
A propósito, Simulação de Eventos Discretos ou Discrete Events Simulation é um dos modelos matemáticos usados para descrever como o computador compreende a lógica dos eventos diários.
Esse modelo, portanto, foi desenvolvido por Keith Tocher e com este, existem mais dois: Continuous Simulation e Monte Carlo Simulation.
Assim, os pesquisadores desenvolveram a linguagem SIMULA. E, após atualizações, passou a se chamar de SIMULA 67, e até hoje é a precursora do paradigma orientado a objetos.
Mas o que elas tinham de diferente das outras?
- Basicamente o seu código orientava-se aos problemas e não aos computadores. (LEITE, 2016)
Disseminação da Programação Orientada a Objetos
Em meados da década de 70, Alan Kay, pesquisador da Xerox Parc, Califórnia, aventurou-se em um projeto. Seu objetivo era desenvolver uma linguagem para computadores pessoais.
Com isso, a linguagem SmallTalk-71 e posteriormente, a SmallTalk-80 foram desenvolvidas e são responsáveis pela propagação da Orientação a Objetos até os nossos dias atuais.
Consequentemente, as linguagens SmallTalk-71 e SmallTalk-80 contribuíram para o uso de uma interface básica amigável, o ambiente de aprendizagem integrado (IDE) e a capacidade de ser executada em máquinas de pequeno porte.
Por fim, basicamente tudo o que utilizamos atualmente quando optamos pelo paradigma orientado a objetos, é derivado desta linguagem.
Como afirma Thiago Leite e Carvalho (2016), algumas de nossas IDE’s, como NetBeans, Eclipse e Visual Studio sofreram influências do ambiente de desenvolvimento da SmallTalk-80.
Desse modo, a Orientação a Objetos nos traz o conceito de objetos, classes, herança, métodos, atributos e etc.
Sobretudo são eles que facilitam a arte de desenvolver códigos orientados a problemas, aproximando o código da nossa realidade cotidiana.
Orientação a objetos: o que é?
Por fim, qual a principal característica do paradigma orientado a objetos?
A Programação Orientada a Objetos (POO) é um modelo de programação baseado na composição e interação entre as mais diversas unidades de código. E essas unidades são chamadas de objetos.
Ou seja, suas principais características são:
- Os objetos interagem entre si e podem ser manipulados por meio dos métodos
- Os objetos são instâncias (moldes) das classes (forma).
- Cada classe define o comportamento e o estado dos atributos dos seus objetos
Dentre as linguagens mais populares que adotam o paradigma orientado a objeto, estão: C#, Java, C++ e Python. E também tem as linguagens que oferecem suporte, como PHP, Javascript e Perl.
Resumindo, a orientação a objetos é um paradigma orientado a resolução de problemas que procura abstrair a realidade.
Contudo, essa tarefa nem sempre é tão fácil. E há, certamente seus pontos fracos como ser menos eficiente que um código procedural, por exemplo.
Concluindo
Como eu disse, há vários paradigmas e metodologias e não existe certo ou errado, apenas o adequado para o seu projeto.
Então, quando você se deparar com o código que tem que desenvolver, vale a pena estudar um pouco mais a fundo e analisar em qual deles o desenvolvimento será mais produtivo e eficaz.
Na tecnologia é muito importante não nos apegarmos a uma única metodologia ou uma única linguagem, pois tudo muda muito depressa e a solução que você acredita ser perfeita hoje, amanhã já está defasada.
Procure sempre pesquisar a melhor linguagem que se adapta ao seu projeto, a metodologia mais eficaz ao invés de priorizar o que você gosta de trabalhar ou não.
A tecnologia é muito ampla para você ficar bitolado só no que gosta de fazer ou no que acha mais fácil. Programadores assim não sobrevivem ao embate do tempo. Fica a dica.
No próximo post darei sequência na definição desses conceitos e em como a Orientação a Objetos auxilia a rotina do programador. Quer ficar sabendo quando o novo artigo será postado?
Inscreva-se com seu e-mail e assine a newsletter.
Fonte: CARVALHO, L. Thiago. Orientação a Objetos: Aprenda seus Conceitos de Forma Efetiva. Casa do Código (2016).
Muito bom! Excelentes informações, parabéns!