Muito se fala sobre programação orientada a objetos, hoje em dia já é algo tão familiar aos programadores que se acaba esquecendo que há algum tempo a programação estruturada dominava amplamente. Nas universidades a iniciação as linguagens de programação, são em sua grande maioria linguagens estruturadas, por ser uma fase de adaptação a lógica que escrever códigos impõe.

Definição de programação estruturada (PE) ou procedural: 

A minha definição de programação estruturada é: uma forma de escrever os códigos sem encapsular dados, ou seja, que em qualquer parte do código seja possível utilizar um dado guardado em uma variável, sem a necessidade de permissão. Com o auxílio de métodos estruturados pode-se modificar e retornar dados em variáveis. Não há organização em camadas, que veremos logo mais neste artigo como funciona, assim sendo, todos os tipos de códigos estão nos mesmos arquivos. Certamente é a mais fácil de aprender e mais fácil de controlar o fluxo da estrutura do código, daí o nome de programação estruturada. 

Definição encontrada na internet: Programação estruturada é uma forma de programação de computadores que preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas: sequência, decisão e iteração (esta última também é chamada de repetição), desenvolvida por Michael A. Jackson no livro "Principles of Program Design" de 1975. Leia também sobre a história da programação. Tendo, na prática, sido transformada na programação modular, a programação estruturada orienta os programadores para a criação de estruturas simples nos programas, usando as sub-rotinas e as funções. Foi à forma dominante na criação de software anterior à programação orientada por objetos. (Wikipédia).

Exemplos de liguagens: C. COBOL, Fortran, Perl

Definição de programação orientada a objetos (POO):

Minha definição de programação orientada a objetos: A orientação a objetos se dá ao fato da escrita do código tentar trazer objetos do mundo real para se tornar parte do código. Com o uso de classes, podemos encapsular estes objetos e utilizá-los apenas se estivermos estas classes instanciadas e se ela permitir o uso externo ou não. Outra parte importante da orientação é podermos usufruir de camadas de programação. Na internet, por exemplo, podemos ter a camada de interface, onde os métodos da linguagem base do site ou sistema conversam através de métodos com a linguagem HTML. Então, temos a camada de interface, a camada de métodos de união entre a interface e o backend (camada de inteligência e mecanismo de manipulação dos dados). 

Ainda podemos dizer que a linguagem de orientação a objetos é uma forma melhor de se reaproveitar códigos, pois todos os métodos criados têm uma finalidade e podem ser invocados toda vez que se fizer necessário. Exemplo: Um método para inserir um registro no banco de dados. Esta função vai ser chamada toda vez que você quiser inserir um registro em uma determinada tabela, desta forma, precisa-se fazer uma vez o código e sempre reutilizá-lo. 

Facilita para a organização do projeto, separar estes conjuntos de objetos em classes. 

Definição encontrada na internet: A orientação a objetos é um modelo de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos. Em alguns contextos, prefere-se usar modelagem orientada ao objeto, em vez de programação. De fato, o paradigma "orientação a objeto", tem bases conceituais e origem no campo de estudo da cognição, que influenciou a área de inteligência artificial e da linguística, no campo da abstração de conceitos do mundo real. 

Na qualidade de método de modelagem, é tida como a melhor estratégia para se eliminar o "gap semântico", dificuldade recorrente no processo de modelar o mundo real do domínio do problema em um conjunto de componentes de software que seja o mais fiel na sua representação deste domínio. Facilitaria a comunicação do profissional modelador e do usuário da área alvo, na medida em que a correlação da simbologia e conceitos abstratos do mundo real e da ferramenta de modelagem (conceitos, terminologia, símbolos, grafismo e estratégias) fosse a mais óbvia, natural e exata possível.

Exemplos de linguagens: JAVA, C#, C++, Python. 

Comparativo entre as formas de programação: 

Reutilização de código:

PE: É possível reutilizar códigos na programação estruturada, porém em muitos casos você será obrigado a utilizar o famoso "CTRL C + CTRL V".

POO: Com a POO você é capaz de elaborar um relacionamento entre diversos componentes, estabelecendo comunicação entre eles e facilitando assim, e muito a reutilização de código, além da facilidade de se herdar atributos e comportamentos de outros objetos.

Manutenção do código:

PE: A manutenção do código se baseia no que o programador que criou o código fez para deixar de comentários no próprio código ou se escreveu um roteiro sobre o que o programa faz.

POO: Na POO, se o código seguir os padrões de construção, qualquer programador que conheça os padrões pode facilmente encontrar problemas, utilizar o código escrito ou até mesmo melhorá-lo se assim se fazer necessário. 

Forma de execução: 

PE: A forma de execução da programação estruturada se dá pelo uso de resolução de tarefas, um código resolvendo um problema. 

POO: A programação orientada a objetos tenta fazer com que os problemas sejam resolvidos de forma que possamos resolvê-los futuramente com a mesma eficiência. 

Vantagens e desvantagens:

Vantagens PE:

  • Provê um melhor controle sobre o fluxo de execução do código, quando comparadacom a POO.
  • É de fácil compreensão, sendo amplamente usada em cursos introdutórios de programação.

Desvantagens PE:

  • Ainda se foca em como a tarefa deve ser feita e não em o que deve ser feito.
  • Tende a gerar códigos confusos, onde tratamento dos dados são misturados como comportamento do programa.

Vantagens POO:

  • Provê uma melhor organização do código.
  • Contribui para o reaproveitamento de código.

Desvantagens POO:

  • Pode não possui o mesmo desempenho de códigos estruturados similares.
  • Seus conceitos são de difícil compreensão se comparados aos conceitos daProgramação estruturada.

Considerações finais: 

Aprendi a programar de forma estruturada, no começo foi uma maravilha. A ideia de construir um algoritmo para resolver um problema, salvar aquele arquivo e vê-lo funcionando, brilha os olhos de quem o criou. Mas a forma de resolver um problema, salvar e passar a tentar resolver outro não se mostrou muito eficiente. Foi aí que entrou a programação com orientação a objetos. A manipulação dos dados, a construção dos objetos, a tentativa de resolver mais de um problema com o mesmo código fazem você se apaixonar ainda mais pela tecnologia envolvida. 

Como Jobs e Gates um dia falaram: "Todo mundo deveria saber programar, o mundo seria melhor se todos soubessem".

[CURSO]118[/CURSO]