Docstoc

OBJECT PASCAL

Document Sample
OBJECT PASCAL Powered By Docstoc
					  UNIVERSIDADE FEDERAL DE PERNAMBUCO
        CENTRO DE INFORMÁTICA
PARADIGMAS DE LINGUAGENS COMPUTACIONAIS




BRUNO EDSON MARTINS DE ALBUQUERQUE FILHO
    MARCELO RODRIGUES NUNES MENDES
        PABLO DE SANTANA BARBOSA




           OBJECT PASCAL



                            Trabalho apresentado sobre
                              a história e características
                            da linguagem Object Pascal
                              aos professores Hermano
                                Perrelli e Luis Menezes.




         Recife, 20 de maio de 2004.
                               OBJECT PASCAL


1. Introdução
        Nas páginas a seguir descreveremos resumidamente a linguagem Object Pascal. Não
poderíamos, no entanto, deixar de falar um pouco sobre o ambiente de desenvolvimento
integrado (IDE) Delphi. Como veremos no restante deste artigo, há uma relação muito
estreita entre essa linguagem e o IDE. O nosso objetivo aqui é dar uma visão geral dessa
linguagem, procurando dar ênfase nas origens dela. O artigo começa com a descrição da
origem da linguagem Object Pascal (e do Delphi). A seguir veremos características que
tornam essa linguagem tão diferente da conhecida linguagem estruturada Pascal. Depois
falaremos sobre a especificação e a utilização da Object Pascal.

2. Origem

2.1 Pascal e Object Pascal

        Pascal foi definida em 1970 pelo Prof. Niklaus Wirth do Swiss Federal Institute of
Technology (Zurich), como extensão do ALGOL (linguagem de programação voltada para
computação científica). Em um congresso em Zurich, um comitê internacional designou o
ALGOL como uma linguagem independente de plataforma. Isto deu mais liberdade para as
características que eles poderiam colocar na linguagem, mas também tornou mais difícil a
escrita de compiladores para ela. A carência de compiladores em muitas plataformas,
combinada com sua carência de ponteiros e muitos tipos de dados básicos tais como
caracteres, fez com que ALGOL não fosse amplamente aceito, o que fez com que essa
linguagem acabasse quase totalmente abandonada, exceto como linguagem para descrição
de algoritmos.
        A especificação formal de Pascal foi publicada em 1971. O nome da linguagem foi
dado em homenagem ao filósofo e matemático francês Blaise Pascal que inventou uma
máquina de calcular mecânica. Pascal é bastante orientado a dados, dando ao programador
a capacidade de definir tipos de dados personalizados. Com esta liberdade veio a rígida
checagem de tipos, que garantiu que tipos não se misturariam. Pascal pretendia ser uma
linguagem educacional, e foi amplamente adotada como tal. Pascal é de escrita mais livre,
diferente de FORTRAN, assim os estudantes não tinham que se preocupar com formatação.
Além disso, Pascal se parece muito com uma linguagem natural, tornando muito fácil o
entendimento do código escrito com ele.
        Object Pascal é a extensão orientada a objetos da linguagem Pascal que foi
desenvolvida pela Apple em parceria com Wirth, inventor de Pascal. Ela descende de uma
tentativa anterior de produzir uma versão orientada a objetos de Pascal, chamada ClasCal,
que foi inicialmente utilizada nos computadores Lisa da Apple. Na realidade existiram
poucas modificações na sintaxe de Object Pascal em relação a Pascal. Um novo tipo de
dados foi adicionado, o objeto. Em adição, É possível especificar uma lista de
procedimentos e funções, referenciados como métodos, para um tipo de objeto particular.
Estes métodos definem as ações que aquele objeto deste tipo pode realizar. Como
adiantamos na introdução essa linguagem tem uma estreita relação com o IDE Delphi,
entenderemos como isso ocorre na próximo seção onde descreveremos de maneira breve a
história da evolução do Turbo Pascal ao Delphi.

2.2 Borland Pascal

       Com o lançamento, em novembro de 1983, do Turbo Pascal 1.0, a Borland iniciou
sua jornada no mundo das Ferramentas e ambientes de desenvolvimento. Na criação do
Turbo Pascal a Borland licenciou um núcleo de compilador, desenvolvido por Anders
Hejlsberg, mais rápido e barato que os existentes na época. Turbo Pascal introduziu um
ambiente de desenvolvimento integrado (IDE), onde era possível editar o código, executar
o compilador, observar os erros e voltar para as linhas que contém esses erros. O
compilador Turbo Pascal foi um dos mais vendidos em todos tempos, o que tornou a
linguagem popular em PC’s.

2.3 Delphi

        Delphi foi uma proposta da Borland para uma nova geração de ambiente de
desenvolvimento visual para Windows, baseado na linguem de programação Object Pascal.
Após o desenvolvimento de Turbo Pascal 1.0, Anders se tornou o arquiteto de todas as
versões do compilador Turbo Pascal e das primeiras três versões de Delphi. Como arquiteto
chefe da Borland, Hejlsberg secretamente tornou Turbo Pascal numa aplicação de
desenvolvimento de linguagem orientada a objeto, completa e com um ambiente realmente
visual com suporte para acesso a banco de dados, assim se originou o Delphi.

História do Delphi

       Tudo começou com a primeira versão do Delphi. Na época, a estratégia baseada em
formulários e orientada a objetos, o compilador extremamente rápido, o ótimo suporte a
banco de dados, a íntima integração com a programação Windows e a tecnologia de
componentes atraíram a atenção da comunidade de desenvolvedores de software. O
elemento, mais importante desse produto, no entanto, era a sua linguagem, Object Pascal, a
fundação de todo o resto. O Delphi 2 apresentou novas características, como: objetos de
múltiplos registros, suporte à automação OLE, o tipo de dados variante, um suporte e uma
integração melhores com o Windows 95, o tipo de dados string longa e a herança visual de
formulários. O Delphi 3 incluiu a tecnologia de visão de código, o suporte à depuração
DLL, os modelos de componentes, o TeeChart, o Decision Cube, a tecnologia WebBroker,
os pacotes de componentes, os ActiveForms e uma grande integração com o COM. O
Delphi 4 incluiu o editor AppBrowser, novos recursos do Windows 98, melhor suporte a
OLE e COM, componentes de bancos de dados estendidos e muitas adições e melhorias nas
classes básicas da VCL. O Delphi 5 incluiu mais aperfeiçoamentos ao IDE, suporte
estendido a bancos de dados (com os conjuntos de dados específicos ADO e Interbase),
uma versão melhorada do MIDAS com suporte à Internet, a ferramenta de controle de
versão TeamSource, capacidades de conversão, o conceito de quadros e componentes
novos. O Delphi 6 adicionou todo esse suporte a recursos para o desenvolvimento
independente de plataforma com a CLX, uma biblioteca de tempo de execução estendida, o
mecanismo de bancos de dados dbExpress, serviços da Web, mais aperfeiçoamentos no
IDE e muitas classes e componentes. Por fim, chegamos ao Delphi 7. Essa versão tornou
mais robustas algumas dessas novas tecnologias com aperfeiçoamentos e correções (como
por exemplo, no SOAP e no DataSnap) além de oferecer suporte a tecnologias mais
recentes (como os temas do Windows XP e UDDI). Outra novidade é o fato de pela
primeira vez, a Borland fornecer um compilador que não vise o processador Intel, mas sim
a plataforma CIL do .NET.
        Como podemos ver, o Delphi possui muitos recursos, e apesar de ser uma ótima
ferramenta e, até certo ponto, simples de usar, trata-se de um ambiente complexo de
programação que envolve muitos elementos. O leitor iniciante pode até ficar assustado com
tantas siglas e tantas tecnologias envolvidas. No entanto, no restante do texto, procuramos
fazer uma introdução às principais características da programação Delphi, focando
principalmente na orientação a objetos. Para maiores detalhes, consultar as referências no
final desse artigo.

3. Características

        A linguagem Object Pascal possui muitas semelhanças com a linguagem Pascal.
Basicamente a estrutura básica da sintaxe não foi modificada. No entanto, há uma mudança
radical no paradigma da linguagem Object Pascal: A essa linguagem foram acrescentadas
características orientadas a objeto que mudam radicalmente o estilo de programação. Aqui
serão analisadas justamente essas novas características. Não será, portanto, discutido nesse
documento a parte básica da linguagem, vinda de Pascal.
        Podemos citar as seguintes características como as mais importantes extensões que
foram acrescentadas à linguagem Pascal para obter a linguagem Object Pascal:
    1. Definição de novos tipos por meio das palavras reservadas type e class.
    2. Encapsulamento – É obtido usando os modificadores de acesso: public, protected e
        private. Outro recurso poderoso que a linguagem apresenta para a obtenção de
        encapsulamento são as propriedades.
    3. Herança
    4. Polimorfismo (Dynamic Binding) – o método a ser chamado é conhecido apenas em
        tempo de execução, dependendo do tipo do objeto para o qual o método foi
        chamado. Obtemos polimorfismo com o uso das palavras reservadas virtual (ou
        dynamic) e override.
    5. Métodos abstratos. Uma característica interessante de Object Pascal é que, ao
        contrário da maioria das outras linguagens orientadas a objeto, é permitido criar
        instâncias de classes com métodos abstratos (embora não seja permitido chamar tais
        métodos, o que geraria uma exceção).
    6. Exceções – O mecanismo de exceções de Object Pascal baseia-se em quatro
        palavras reservadas: try, except, finally, raise.
    7. Suporte a Multithreading.

4. Implementação

        Aplicações em Delphi são compostas por um arquivo de projeto (.DPR), Forms e
Units. Um Form é uma janela na qual podem ser acrescentados componentes de interface
gráfica. Uma Unit é um arquivo do tipos .PAS, que guarda o código das Forms ou a
definição de tipos e funções.
4.1 Estrutura Geral de uma Unit

         Uma Unit se divide em duas seções:
- Seção de Interface: aqui estão variáveis e definições de tipos. Essa é a parte visível da
Unit às outras Units. Tipos definidos aqui podem ser usados em qualquer outra Unit que a
utilize (por meio da cláusula ‘uses’).
- Seção de Implementação: Essa seção só é acessada de dentro da própria Unit. Nela estão
as definições (implementações) das funções e procedimentos declarados na seção de
interface.
*obs. Em Object Pascal duas ou mais classes podem ser definidas na mesma Unit. Como os
especificadores de acesso restringem o acesso apenas a código fora da Unit, se mais de uma
classe for definida na mesma Unit, uma poderá acessar livremente a implementação da
outra, independentemente dos modificadores de acesso.

4.2 A RTL e a biblioteca de classes do Delphi

        Muitos recursos que os programadores Delphi têm à sua disposição vêm da RTL
(Run Time Library – Biblioteca de Tempo de Execução) da linguagem Object Pascal. Essa
biblioteca contém uma série de funções úteis agrupadas em Units.
        O real poder da programação visual do Delphi, no entanto, está na sua enorme
biblioteca de classes. Nela encontramos centenas de classes, com milhares de métodos.
Essas classes podem ser usadas diretamente no código pelo programador ou
implicitamente, no projetista visual de formulários. Hoje, a biblioteca está dividida em
RTL, mencionada anteriormente, que contém classes e componentes não visuais, VCL
(Visual Component Library), que abriga os componentes visuais clássicos do Windows e a
CLX (Component Library for Cross-Platform), que contém componentes para várias
plataformas.

4.3 Um exemplo de programa em Delphi

       O exemplo a seguir foi tirado do site http://www.marcocantu.com/md7/default.htm.
Esse é o site de um dos livros que foi usado como referência na construção desse artigo.
Nele você poderá encontrar todos os exemplos desse livro. Escolhemos esse exemplo, por
ser simples, mas ao mesmo tempo demonstrar, dentre outros, os conceitos de polimorfismo
e herança. O programa é composto basicamente de quatro arquivos: o arquivo de projeto
(.DPR), o arquivo de definição de tipos (.PAS) e os arquivos de definição do Form (.PAS e
.DFM). Só mostraremos dois deles que descrevem bem o que queremos mostrar. O
exemplo completo é fornecido em anexo.
// Arquivo AbstractAnimals.dpr
program AbstractAnimals;

uses
  Forms,
  AnimF in 'AnimF.pas' {FormAnimals},
  Anim in 'Anim.pas';

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TFormAnimals, FormAnimals);
  Application.Run;
end.



// Arquivo Anim.pas                          function TAnimal.GetKind: string;
                                             begin
unit Anim;                                     GetKind := Kind;
                                             end;
interface
                                             constructor TDog.Create;
type                                         begin
  TAnimal = class                              Kind := 'A dog';
  public                                     end;
     constructor Create;
     function GetKind: string;               function TDog.Voice: string;
     function Voice: string; virtual;        begin
abstract;                                      Voice := 'Arf Arf';
  private                                      PlaySound ('dog.wav', 0,
     Kind: string;                           snd_Async);
  end;                                       end;

  TDog = class (TAnimal)   // Herança        function TDog.Eat: string;
  public                                     begin
    constructor Create;                        Eat := 'A bone, please!';
    function Voice: string; override;        end;
    function Eat: string; virtual;
  end;                                       constructor TCat.Create;
                                             begin
  TCat = class (TAnimal)   // Herança          Kind := 'A cat';
  public                                     end;
    constructor Create;
    function Voice: string; override;        function TCat.Voice: string;
    function Eat: string; virtual;           begin
  end;                                         Voice := 'Mieow';
                                               PlaySound ('cat.wav', 0,
implementation                               snd_Async);
                                             end;
uses
  MMSystem;                                  function TCat.Eat: string;
                                             begin
constructor TAnimal.Create;                    Eat := 'A mouse, please!';
begin                                        end;
  Kind := 'An animal';
end;                                         end.
 *Vale ressaltar o fato mencionado anteriormente de que, ao chamar um método abstrato,
 (nesse caso voice da classe TAnimal) ocorrerá uma exceção.
5. Utilização

       Object Pascal é utilizado em dois ambientes de desenvolvimento, Delphi, para o
sistema operacional Windows e Kylix, para Unix e nestes ambientes é possível desenvolver
aplicações que necessitem da orientação a objetos.
       No ambiente Delphi, por ser baseada em formulários, compilável, suportar acesso a
banco de dados e conter várias bibliotecas na plataforma Windows, que é a mais utilizada,
torna-se mais simples desenvolver aplicações que possuam interface gráfica com usuário
(GUI – Grafic User Interface). Dessa forma, é utilizada, dentre outras, em aplicações em
desktop, na web e principalmente em banco de dados.

6. Referências Bibliográficas
1. Sonnino, Bruno – Desenvolvendo Aplicações com Delphi 5, MAKRON Books, 2000.
2. Cantù Marco – Dominando o Delphi 7, MAKRON Books, 2003.
3. Wikipedia, the free encyclopedia(http://en.wikipedia.org/wiki/Main_Page)
4. www.borland.com
5. http://www.mactech.com/articles/mactech/Vol.02/02.12/ObjectPascal/

				
DOCUMENT INFO