O termo Programação Orientada a Objetos foi criado por Alan Kay, autor da linguagem de programação Smalltalk. Mas mesmo antes da criação do Smalltalk, algumas das ideias da POO já eram aplicadas, sendo que a primeira linguagem a realmente utilizar estas idéias foi a linguagem Simula 67, criada por Ole Johan Dahl e Kristen Nygaard em 1967.
Anos 70:
- Queda dos preços dos computadores.
- Consequentemente houve a proliferação do uso dos computadores.
- Cresceu o recurso a diferente software.
- As técnicas de desenvolvimento de software utilizadas até então não eram suficientes para contornar os problemas existentes no desenvolvimento de sistemas.
- Surge a programação estruturada, seguida pelo conceito de sistemas estruturados .
As técnicas de desenvolvimento estruturado tentavam oferecer soluções para os problemas do desenvolvimento de sistemas a partir dos seguintes princípios:
- Abstração: Para resolver um problema, o analista deveria analisá-lo separadamente dos demais, ou seja, abstrair os detalhes.
- Formalidade: O analista deveria seguir um caminho rigoroso e um método para solucionar um problema.
As técnicas de desenvolvimento estruturado tentavam oferecer soluções para os problemas do desenvolvimento de sistemas a partir dos seguintes princípios:
- Dividir para conquistar: O analista deveria dividir o problema em partes menores, independentes e com possibilidade de serem mais simples de entender e solucionar.
- Disposição hierárquica: O analista deveria organizar os componentes da solução do problema na forma de uma árvore com estrutura hierárquica. O sistema seria entendido e construído nível a nível, onde cada novo nível acrescentaria mais detalhes ao anterior.
Nos últimos tempos as novas aplicações têm vindo a caracterizar-se por:
- Grande interação com o utilizador.
- Uso de interfaces gráficas (GUI) com o sistema operativo.
- Necessidade permanente de alteração e expansão, dada a velocidade de mudanças na tecnologia de hardware.
- Interação com outros sistemas, possibilitando a troca de dados entre estes.
- Portabilidade SO para diversas plataformas e SO’s.
Com a inovação:
--> Nasce a programação orientada a objetos (POO).
Porém o conceito de programação orientada a objetos não é novo.
- No final da década de 60, a linguagem Simula67, desenvolvida na Noruega, introduzia já alguns conceitos que são hoje encontrados nas linguagens orientadas a objetos.
- Em meados de 1970, o Centro de Pesquisa da Xerox (PARC), desenvolveu a linguagem Smalltalk, a primeira totalmente orientada a objetos.
- No início da década de 80, a AT&T lança a Linguagem C++, uma evolução da linguagem C em direção à orientação a objetos.
- A programação orientada a objetos é uma evolução da programação procedimental.
- Numa linguagem procedimental, é possível utilizar variáveis simples (para armazenar números inteiros), variáveis mais complexas fornecidas pela própria linguagem (array), e ainda variáveis complexas definidas pelo utilizador: a estrutura (struct). Sendo uma estrutura, uma variável que serve de “pai” para outras variáveis.
Algumas das novidades da POO.
- A linguagem do analista e do utilizador passam a ser semelhantes, por se referirem a objetos.
- Pode utilizar-se um mesmo objeto em diferentes sistemas, aumentando a produtividade do processo de desenvolvimento.
- Se a biblioteca de objetos for independente do SO utilizado, ao mudar-se a plataforma ou o SO, basta recompilar o programa.
Gerações
•Primeira geração: Linguagem máquina.
•Segunda geração: Criaram-se as primeiras linguagens usando mnemónicas para facilitar a construção dos programas, por exemplo o assembler.
•Terceira geração: Criam-se as primeiras linguagens de alto nível. Ex: C, Pascal, Cobol…
•Quarta geração: São linguagens capazes de gerar código por si só, são os chamados RAD, com o qual pode-se realizar aplicações sem ser um expert na linguagem. Aqui também se encontram as linguagens orientadas a objetos, tornando possível a reutilização de partes do código para outros programas. Ex: Visual, Natural Adabes…
•Quinta geração: Aqui encontram-se as linguagens orientadas à inteligência artificial. Estas linguagens ainda estão pouco desenvolvidas. Ex: LIS.