. Tecnologia da Informação  . Orientação a Objetos

Orientação a Objetos

Orientação a Objetos é um paradigma de programação, que a grosso modo simula a estrutura de um determinado programa, nos moldes que temos hoje do mundo real, sejam eles reais ou abstratos.

Criado na década de 70, o modelo de Orientação a Objetos (O.O.) teve na linguagem SIMULA-67 a sua primeira implementação, a qual apenas suportava os conceitos de classes e herança.

Porém a sua grande popularização, se deu com o Smaltalk, criada pela Xerox. E pode se dizer tranquilamente que hoje este é um dos principais modelos de programação que existem.

Fato este que faz com que as principais linguagens criadas nos últimos anos, suportem o modelo de O.O., seria um exemplo destas: C++, Delphi, Java, C# entre outras…

 

Técnicas Tradicionais x Orientação a Objeto

Técnicas Tradicionais

Dizem as más línguas que as técnicas de programação tradicionais também podem ser chamadas de programação espaguete.

Isto se deve a uma de suas características que buscam por exemplo implementar uma “decomposição funcional”, o que leva consequentemente o desenvolvedor a decompor o sistema em partes menores (funções), resultando em um emaranhado de funções que chamam umas às outras.

Além disso, estas não apresentam uma separação de conceitos e responsabilidades, causando assim, dependências enormes no sistema e tornando a manutenção de software um verdadeiro desafio.

Isso sem contar no reaproveitamento de código que praticamente é nulo, o que faz com que o sistema possua códigos duplicados.

Orientação a Objeto

Agora, em uma linguagem orientada a objetos, esse programa seria dividido em objetos autônomos, quase como ter vários miniprogramas.

Cada objeto representa uma parte diferente da aplicação e cada objeto contém seus próprios dados e sua própria lógica e eles se comunicam entre si.

Neste modelo, se faz necessário que você planeje bem o seu programa. Os objetos não representam ideias abstratas misteriosas. Eles primeiro representam coisas como funcionários, imagens, contas bancárias, objetos de carro, entre outros objetos que realmente existe no seu projeto.

 

Base para entender a Orientação a Objetos

Os pilares da orientação a Objetos são: Abstração, Encapsulamento, Herança e Polimorfismo.

Mas para que estes façam sentido, há 3 conceitos que são a base para qualquer entendimento do que se trata a Orientação a Objetos que devem estar muito claras, seriam elas: objeto, método e classe.

Objeto

Objetos são a chave para se compreender a tecnologia orientada a objetos. Você olha ao seu redor e tudo o que vê são objetos: carro, mesa, janela, livro, pessoa, etc. Os objetos do mundo real têm duas características em comum: estado e comportamento.

  • Estado – O estado de um objeto revela seus dados importantes. Por exemplo, uma pessoa tem: idade, peso, altura, cor de cabelo, cor da pele. Na orientação a Objetos entende-se como atributos.
  • Comportamento – O comportamento são as ações que aquele objeto pode exercer ou executar. Por exemplo, uma pessoa pode: andar, falar, ouvir, pular. Na orientação a Objetos entenda-se como métodos.

Esses objetos podem ser tanto objetos concretos (carro, livro, nota fiscal), quanto conceitos abstratos (conta corrente, venda, pessoa jurídica). Na Orientação a Objetos, os objetos do mundo real são modelados e representados no mundo computacional, ou seja, dentro do sistema, por meio de objetos de software.

Cada objeto deve ser conhecido, bem definido e ter seu limite e um significado dentro do sistema.

Por definição: Um objeto é um pedaço de software que possui atributos (estado) e métodos (comportamento). E vale ressaltar que um sistema pode conter um ou inúmeros objetos ativos. Cada objeto ativo no sistema em particular também é chamado de instância e as diferentes instâncias possuem seu próprio estado.

Objeto

Cada instância de pessoa possui um estado diferente em particular. Porém, cada instância, além do estado, também possui seus métodos (comportamento) que operam sobre o próprio estado. Em outras palavras, para pular, cada pessoa vai fazer uma determinada força dependendo da
sua idade, altura e peso, por exemplo.

A ideia é que cada objeto seja responsável por seus dados (estado) e seja capaz de realizar as próprias operações que lhe foram atribuídas.

Método

Para melhor exemplificar, entenda-se um método como um envio de mensagem, tendo em conta o mundo real.

De modo que, se A envia uma mensagem para B, podemos entender como o objeto A executando um método do objeto B.
Os métodos são compostos por três partes:

  • Objeto a quem a mensagem é endereçada, neste caso a um outro objeto, mas que não é uma regra.
  • Nome do método a ser chamado
  • Parâmetros que o método recebe.

Metodo

Classe

No mundo real, frequentemente percebemos vários objetos de um mesmo tipo. Por exemplo: seu carro é um dos muitos carros existentes no mundo.

Usando a terminologia de Orientação de Objetos, dizemos que um carro em particular é uma instância da classe de objetos conhecida como carros. Os carros, em geral, possuem estado (cor, marca, potência do motor, combustível)
e comportamento (ligar, acelerar, brecar, mudar marcha) em comum.

O estado de cada carro é independente e pode ser diferente do estado dos outros carros. Cada carro pode ter uma cor diferentes, por exemplo.

A partir dessas semelhanças, os fabricantes de veículos tiram vantagem disso para padronizar a construção de carros de um mesmo tipo, definindo um modelo único com características iguais para todos os carros a serem produzidos.

Na Orientação a Objetos também é possível ter vários objetos do mesmo tipo, que compartilham características em comum, tirando vantagem dessa semelhança entre alguns objetos. Deste modo, uma classe é um modelo (protótipo) que define os atributos e métodos comuns a todos os objetos do mesmo tipo.

Os objetos são criados a partir de suas classes e a cada objeto criado o sistema aloca memória para o novo objeto e suas variáveis.

É muito comum para quem esta aprendendo o conceito de Orientação a Objetos, fazem confusão entre classes e objetos. Para tais casos, é importante dizer que a classe define as características comuns e os objetos são instâncias dessas classes, com estado próprio.Classe

Linguagens Orientadas a Objetos

Assim como já mencionado, a Orientação a Objetos tem sido uma ideia bem sucedida e diante disso muitas linguagens suportam tal modelo de programação.

Para ser mais claro, durante estes últimos 30 anos, a maioria das linguagens desenvolvidas em neste período suportam este paradigma de programação.

Também vale ressaltar que mesmo suportando este modelo, as linguagens possuem diferentes níveis de recursos no que diz respeito a Orientação a Objetos.

Abaixo apresentamos uma lista resumida de linguagens que suportam este paradigma. Uma lista completa e atualizada pode ser encontrada na wikipedia.

  • C++
  • C#
  • COBOL
  • Go
  • Java
  • LISP
  • Objective-C
  • Perl
  • PHP
  • Python
  • Ruby
  • Visual Basic

Vantagens ao usar Orientação a Objetos

A Orientação a Objetos é mais de aprender, sendo mais intuitiva as técnicas tradicionais, já que está focada em problemas e conceitos do mundo real.

Esta abordagem traz ganhos significativos no que diz respeito a qualidade do seu projeto de software. Claro que isto apenas vale quando as técnicas da Orientação ao Objetos são colocadas em prática.

Já que vale ressaltar que de nada adiante trabalhar com uma linguagem que suporte tal modelo se você continua a programar como se estivesse em uma linguagem procedural, pois assim você perderia todos os benefícios da Orientação a Objetos.

Uma vez bem implementada pode se dizer que a linguagem Orientada a Objetos possibilita:

• Aumento de produtividade
• Componentização
• Escalabilidade
• Facilidade na manutenção
• Maior flexibilidade do sistema
• Redução das linhas de código programadas
• Reuso de código
• Separação de responsabilidades