Entendendo Orientação a Objetos na prática Parte 1
Olá, pessoal. Não sou professor, sou apenas um estudante de Sistemas de Informação indo para o 3º ano do curso (falta pouco!!).
Como colega de outros estudantes, percebo que apesar de todo o esforço de muitos professores em sala de aula ou laboratórios, muito pouco do que eles passam é realmente aproveitado.
Observei o seguinte: Há uma grande dificuldade em se apreender conceitos simples como ‘polimorfismo’, herança e até ocorrem confusões quanto aos termos overload e override. Além disso, a maioria dos estudantes parece perdido frente a conceitos como ‘encapsulamento’: não sabem decidir quando declarar um método ou atributo como público, privado ou protegido (public, private ou protected).
Isso é ruim… muito ruim.
Decidi então partilhar um pouco do que aprendi (Sei… existem muitos conceitos, muitos posts pela internet apresentando o mesmo assunto…), mas não vamos ficar só na teoria, na apresentação de conceitos ou códigos previamente elaborados.
Minha proposta aqui vai além, e meu objetivo é demonstrar claramente cada conceito com base em uma das melhores questões de avaliação de programação que eu já vi.
Vou dividir esse post em pelo menos 3 partes, uma contemplando a teoria mesmo e apresentando conceitos básicos de design e desenvolvimento orientados a objetos, e as outras caindo na prática pra criarmos uma solução à questão proposta.
Nesta primeira parte, iremos abordar uma definição trazendo também uma contextualização histórica e apresentaremos alguns conceitos básicos.
Uma boa leitura!!
Orientação a Objetos
Orientação a objetos ou OO é um paradigma, ou seja, um padrão de análise, modelagem, projeto e programação, e não apenas uma técnica de programação. Seu uso afeta todo a compreensão do sistema por seus usuários de fato e torna mais simples a gestão de código e características dos sistemas computacionais.
Diferentemente da programação procedural ou estruturada, no paradigma OO todo o esquema de um sistema é baseado na troca de mensagens entre os objetos integrantes do próprio sistema. Essa troca de mensagens é fundamental e implementa o nosso conceito de estímulo-resposta recorrente no nosso mundo real. Além disso, o simples fato de a implementação dos sistemas ser menos acoplada, ou seja, há maior e verdadeira independência entre as partes que formam o todo, torna-se possível uma prática denominada reutilização. Economia é a palavra-chave.
Um pouco história
O paradigma da orientação a objetos tem uma história um pouco recente. O primeiro esforço significativo no sentido de fazer uso de uma linguagem que se caracterizasse pelo uso de abstrações mais fieis aos objetos do mundo real envolvidos nos problemas a que os programas desenvolvidos fossem relativos.
No paradigma procedural, toda a arquitetura é orientada às ações que o sistema deve realizar, ou seja, tudo é voltado basicamente às funções do sistema, sendo na maioria das vezes, soluções únicas para problemas únicas com pouca ou nenhuma reutilização de funcionalidades.
A primeira linguagem de que se tem notícia a trabalhar explicitamente com orientação a objetos foi a Simula 67, desenvolvida na década de 1960 na Noruega, no Centro Norueguês de Computação ( Em inglês, Norwegian Computing Center, e em norueguês: Norsk Renesentral) por dois professores:
Simula 67 na verdade, se propunha a ser uma extensão para outra linguagem já existente (ALGOL 60) como o objetivo de realizar a simulação de eventos discretos.
Simula 67, no entanto não foi ‘a linguagem‘ orientada a objetos a aparecer definitivamente. Isso só aconteceria por volta das décadas de 1970/1980 com a linguagem SmallTalk, desenvolvida por uma equipe de trabalho da Xerox encabeçada pelo pesquisador Allan Kay. Os principais pontos em que SmallTalk 80 diferia da linguagens tradicionais:
- O Código era compilado para bytecode e executado através de máquina virtual;
- Tudo em Smalltalk era necessariamente um objeto;
- A troca de mensagens entre os objetos era a forma padão de implementação das funções ou métodos;
- Um esboço claro de polimorfismo;
- Um esboço de Overload ou sobrecarga de métodos;
- Todas as classe obedeciam uma hierarquia, descendendo de uma superclasse.
- Todo objeto funcionava como instância de uma classe, a qual determinava-lhe os comportamentos e propriedades.
- SmallTalk não possuia tipos primitivos, sendo assim, todo e qualquer objeto era implementado na forma de classes.
O importante é que isso moldou definitivamente todo o conceito de orientação a objetos. A partir de então, surgiram implementações de diferentes linguagens utilizando-se das facilidades do paradigma de orientação a objetos.
Linguagens que suportam orientação a objetos
Bem , a lista é grande, e se faz desnecessário nomear a todas aqui, uma vez que esse não é nosso objetivo, mas é interessante saber que a maioria das linguagens modernas implementa intrinsecamente o paradigma OO.
Entre elas temos C++, Object Pascal (Delphi, Lazarus IDE), Python, Java (a Linguagem e a plataforma), C# (C sharp), e diversas ’scripting languages’, como PHP, Ruby, Javascript, ActionScript.
Não há registros relacionados ao tema


