Verdana size=2>
Clique aqui para ler todos os artigos desta edição
Visão Geral da Programação Orientada a Objetos para "Programadores Estruturados"
por Fábio Galuppo
À exceção de algumas características empregadas por linguagens de programação (por exemplo, o Visual Basic 6), tais como “orientação a eventos” e “programação baseada em objetos”, notamos que a maior parte do desenvolvimento nesses ambientes segue o paradigma da programação estruturada. Se compararmos os paradigmas de programação existentes no mercado, percebemos o avanço e a necessidade da orientação a objetos em relação à programação estruturada. Essa necessidade é constatada principalmente nos projetos onde se adotam notações UML para documentação. De fato, projetos que antes eram implementados com linguagens de programação “estruturadas”, como Visual Basic, C, Clipper e COBOL, cada vez mais dão lugar a linguagens orientadas a objetos: Visual Basic.NET, C++, Java, Delphi e C#.
Mas, afinal, qual é a vantagem da orientação a objetos? Na verdade, são duas: a reutilização do código e a sua organização através de objetos que simulam alguma coisa real, como, por exemplo, um objeto que represente um arquivo (com operações como criar, apagar, mover e atributos como nome_do_arquivo e data_de_criação).
Revisão de alguns conceitos
Ao analisarmos o Visual Basic 6, por exemplo, observamos que seus usuários o consideram uma linguagem baseada em objetos, pois ela oferece suporte a eventos, classes e propriedades, dentre outros itens. O Visual Basic 6 apresenta essas características principalmente por ser uma ferramenta “COM-Enabled”, ou seja, ela oferece suporte a COM (o modelo de componentes criado pela Microsoft). O COM é baseado em interfaces binárias, mas seu suporte é limitado no que se refere às características da orientação a objetos. Essas interfaces só oferecem suporte a funções (métodos) e simulam eventos (connection points) e propriedades (pares get e set).
Conforme mencionado anteriormente, embora a classe COM possa conter métodos, propriedades e eventos, ela oferece suporte a poucas características da orientação a objetos (tais como encapsulamento e polimorfismo). Por exemplo, ela não suporta características como herança de implementação nem características pertinentes às classes, como sobrecarga de método (o Visual Basic retorna Ambigous Name). Veja um exemplo na Listagem 1.
Listagem 1. Exemplo de métodos e propriedades
Private X_ As Integer, Y_ As Integer
Public Event Moving()
'Public Sub Move(ByVal value As Integer) 'Sobrecarga não é permitida!
Public Sub Move(ByVal left As Integer, ByVal top As Integer)
X_ = X_ + left
Y_ = T_ + top
RaiseEvent Moving
End Sub
Public Property Let X(ByVal value As Integer)
X_ = value
End Property
Public Property Get X() As Integer
X_ = value
End Property
Public Property Let Y(ByVal value As Integer)
Y_ = value
End Property
Public Property Get Y() As Integer
Y = Y_
End Property
A “orientação a eventos” é outra característica predominante no Visual Basic 6, pois a linguagem suporta eventos originados de classes COM, bem como do próprio Windows (como o clique de um botão).
No Visual Basic 6, a “programação baseada em objetos” pode ser percebida de duas maneiras. Uma delas consiste em considerar um controle do tipo botão de comando (CommandButton) como um objeto. Assim, o Visual Basic pode oferecer suporte a uma enorme variedade de controles (built-in e ActiveX). A segunda consiste na especificação de funções bem definidas, que possam ser reutilizadas e conectadas entre si por meio de handlers (semelhante ao tratamento dado pelas APIs do Windows). Por exemplo, CreateFile gera um HANDLE, que por sua vez nos permite gravar dados em um arquivo por intermédio da função WriteFile e, por fim, fechar o arquivo com CloseHandle. Esta última maneira pode ser considerada a transição entre a programação estruturada e a programação orientada a objetos. Verifique o trecho a seguir, que oferece uma seqüência de instruções para a manipulação de um arquivo.
Open "c:\temp\testexyz.txt" For Output As #1
Write #1, "Teste"
Close #1
Open "c:\temp\testexyz.txt" For Input As #1
Dim line as String
Input #1, line
Call MsgBox(line)
Close #1
A Listagem 2 ...