Temos falado nos últimos artigos sobre a Evolução da Tecnologia: já abordamos o sistema de Banco de Dados, Microinformática, Windows e Redes. Agora nosso bate-papo será sobre orientação a objetos. Entenda mais sobre o assunto!
Orientação a Objetos
Com as novas versões do Windows e a distribuição do processamento, a Programação Orientada a Objetos ganhou força. Uma boa definição para Objeto seria: é um conjunto de Propriedades e Métodos herdados de uma Classe. No fundo, uma forte evolução das antigas Funções, visando estruturar cada vez mais o trabalho de programação, aumentando sua eficiência e qualidade através da reusabilidade e do encapsulamento.
Os dados de um Objeto são suas propriedades, e as rotinas e funções, seus métodos. Por exemplo, as propriedades de uma janela ou um botão ou um campo são a sua cor, tamanho, tipo de fonte, borda, fundo, etc. Os métodos são as rotinas que exibem a janela, a escondem, avançam ou retrocedem um registro, atualizam um registro, fazem um cálculo, etc. Os métodos são funções ou procedimentos, mas com uma diferença. Os métodos estão sempre amarrados a uma Classe. O fato é que se pode ter dois métodos com o mesmo nome um uma única aplicação com procedimentos diferentes. É claro que ao evocá-lo menciona-se o nome do objeto.
A partir da Classe é que se gera um Objeto. A Classe em si não é executada. É como se fosse uma planilha vazia. Para executar uma classe, gera-se antes, a partir dela, um Objeto, ou seja, uma Instância da Classe. O Objeto gerado passa a usar os mesmos Métodos e Propriedades da Classe. Pode-se então alterá-lo de acordo com as necessidades.
Da mesma forma, em determinadas linguagens, pode-se criar uma nova Classe herdada de uma outra já existente. Muda-se então uma determinada Propriedade ou um determinado Método, e ela passará a trabalhar de forma diferente.
É o mesmo Método, porém alterado e válido desta forma para os objetos herdados desta última classe. O exemplo do celofane explica bem como isto funciona. Tem-se um documento original e sobre ele colocam-se novos celofanes, de modo que se vê todos os tópicos do primeiro. Ao escrever-se uma alteração sobre este último celofane, tem-se uma nova visão, onde se herdou tudo do primeiro, mas adicionou-se as alterações do último. E assim vai-se criando uma hierarquia de classes, cada uma delas herdando as propriedades e os métodos de suas antecessoras. A esta característica de um Método, com um mesmo nome trabalhar de forma diferente, dependendo da Classe a que pertence, é que se dá o nome de Polimorfismo, que significa “aquele que se apresenta com muitas formas”.
Por outro lado, um Método somente altera as propriedades do Objeto a que pertence, isto para tornar o processo mais seguro e independente, ou seja, uma vez que um Objeto está funcionando, dificilmente terá problemas por interferência externa. Por vezes, esta mudança na forma de programar torna-se mais trabalhosa, mas o esforço compensa. É o que se chama Encapsulamento.
A Programação Orientada a Objetos nem sempre é bem compreendida e um dos motivos são os inúmeros termos usados pelos autores de livros para a mesma entidade. Assim, a palavra Classe é chamada por vezes de Componente, Modelo, Protótipo, Abstração. A palavra Objeto é substituída por Instância, Componente, Filho da Classe, Substantivo. A palavra Propriedade por Variável, Atributo, Característica, Dado, Adjetivo, Especificação, Entidade ou Valor. O Método é chamado também por Procedure (Procedimento), Função, Rotina, Comando, Verbo, Ação, Seletor.
Um exemplo de OOP (Object Oriented Programming) seria o caso de um sistema de Faturamento, onde temos para cada Estado do Brasil um cálculo diferenciado do ICMS. Provavelmente, a rotina CalculaICMS será evocada em vários pontos do sistema e na programação tradicional. Em cada um deles, deveria haver uma sequência de desvios condicionais, ou seja, comandos “IFs”, para definir qual função deveria ser acionada, já que é necessária uma para cada Estado.
Na OOP, já teríamos, de início, uma facilidade na criação dos 27 objetos diferentes, pois pelo recurso da herança, apenas as partes diferentes é que teriam que ser codificadas e o que fosse igual seria herdado. No sistema, em sua abertura, em uma única sequência de desvios condicionais, se determina qual o objeto/Estado deve ser evocado ao se chamar, nos vários pontos do sistema CalculaICMS. Se surgir um novo Estado, basta criar uma nova Sub-Classe e alterar o sistema um único ponto.