Você está na página 1de 7

UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE INFORMTICA PARADIGMAS DE LINGUAGENS COMPUTACIONAIS

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

OBJECT PASCAL

Trabalho apresentado sobre a histria e caractersticas da linguagem Object Pascal aos professores Hermano Perrelli e Luis Menezes.

Recife, 20 de maio de 2004.

OBJECT PASCAL
1. Introduo
Nas pginas a seguir descreveremos resumidamente a linguagem Object Pascal. No poderamos, no entanto, deixar de falar um pouco sobre o ambiente de desenvolvimento integrado (IDE) Delphi. Como veremos no restante deste artigo, h uma relao muito estreita entre essa linguagem e o IDE. O nosso objetivo aqui dar uma viso geral dessa linguagem, procurando dar nfase nas origens dela. O artigo comea com a descrio da origem da linguagem Object Pascal (e do Delphi). A seguir veremos caractersticas que tornam essa linguagem to diferente da conhecida linguagem estruturada Pascal. Depois falaremos sobre a especificao e a utilizao 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 extenso do ALGOL (linguagem de programao voltada para computao cientfica). Em um congresso em Zurich, um comit internacional designou o ALGOL como uma linguagem independente de plataforma. Isto deu mais liberdade para as caractersticas que eles poderiam colocar na linguagem, mas tambm tornou mais difcil a escrita de compiladores para ela. A carncia de compiladores em muitas plataformas, combinada com sua carncia de ponteiros e muitos tipos de dados bsicos tais como caracteres, fez com que ALGOL no fosse amplamente aceito, o que fez com que essa linguagem acabasse quase totalmente abandonada, exceto como linguagem para descrio de algoritmos. A especificao formal de Pascal foi publicada em 1971. O nome da linguagem foi dado em homenagem ao filsofo e matemtico francs Blaise Pascal que inventou uma mquina de calcular mecnica. Pascal bastante orientado a dados, dando ao programador a capacidade de definir tipos de dados personalizados. Com esta liberdade veio a rgida checagem de tipos, que garantiu que tipos no 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 no tinham que se preocupar com formatao. Alm disso, Pascal se parece muito com uma linguagem natural, tornando muito fcil o entendimento do cdigo escrito com ele. Object Pascal a extenso 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 verso orientada a objetos de Pascal, chamada ClasCal, que foi inicialmente utilizada nos computadores Lisa da Apple. Na realidade existiram poucas modificaes na sintaxe de Object Pascal em relao a Pascal. Um novo tipo de dados foi adicionado, o objeto. Em adio, possvel especificar uma lista de procedimentos e funes, referenciados como mtodos, para um tipo de objeto particular. Estes mtodos definem as aes que aquele objeto deste tipo pode realizar. Como adiantamos na introduo essa linguagem tem uma estreita relao com o IDE Delphi,

entenderemos como isso ocorre na prximo seo onde descreveremos de maneira breve a histria da evoluo do Turbo Pascal ao Delphi. 2.2 Borland Pascal Com o lanamento, em novembro de 1983, do Turbo Pascal 1.0, a Borland iniciou sua jornada no mundo das Ferramentas e ambientes de desenvolvimento. Na criao do Turbo Pascal a Borland licenciou um ncleo de compilador, desenvolvido por Anders Hejlsberg, mais rpido e barato que os existentes na poca. Turbo Pascal introduziu um ambiente de desenvolvimento integrado (IDE), onde era possvel editar o cdigo, executar o compilador, observar os erros e voltar para as linhas que contm esses erros. O compilador Turbo Pascal foi um dos mais vendidos em todos tempos, o que tornou a linguagem popular em PCs. 2.3 Delphi Delphi foi uma proposta da Borland para uma nova gerao de ambiente de desenvolvimento visual para Windows, baseado na linguem de programao Object Pascal. Aps o desenvolvimento de Turbo Pascal 1.0, Anders se tornou o arquiteto de todas as verses do compilador Turbo Pascal e das primeiras trs verses de Delphi. Como arquiteto chefe da Borland, Hejlsberg secretamente tornou Turbo Pascal numa aplicao 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. Histria do Delphi Tudo comeou com a primeira verso do Delphi. Na poca, a estratgia baseada em formulrios e orientada a objetos, o compilador extremamente rpido, o timo suporte a banco de dados, a ntima integrao com a programao Windows e a tecnologia de componentes atraram a ateno da comunidade de desenvolvedores de software. O elemento, mais importante desse produto, no entanto, era a sua linguagem, Object Pascal, a fundao de todo o resto. O Delphi 2 apresentou novas caractersticas, como: objetos de mltiplos registros, suporte automao OLE, o tipo de dados variante, um suporte e uma integrao melhores com o Windows 95, o tipo de dados string longa e a herana visual de formulrios. O Delphi 3 incluiu a tecnologia de viso de cdigo, o suporte depurao DLL, os modelos de componentes, o TeeChart, o Decision Cube, a tecnologia WebBroker, os pacotes de componentes, os ActiveForms e uma grande integrao 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 adies e melhorias nas classes bsicas da VCL. O Delphi 5 incluiu mais aperfeioamentos ao IDE, suporte estendido a bancos de dados (com os conjuntos de dados especficos ADO e Interbase), uma verso melhorada do MIDAS com suporte Internet, a ferramenta de controle de verso TeamSource, capacidades de converso, 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 execuo estendida, o mecanismo de bancos de dados dbExpress, servios da Web, mais aperfeioamentos no

IDE e muitas classes e componentes. Por fim, chegamos ao Delphi 7. Essa verso tornou mais robustas algumas dessas novas tecnologias com aperfeioamentos e correes (como por exemplo, no SOAP e no DataSnap) alm 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 no 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 programao 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 introduo s principais caractersticas da programao Delphi, focando principalmente na orientao a objetos. Para maiores detalhes, consultar as referncias no final desse artigo.

3. Caractersticas
A linguagem Object Pascal possui muitas semelhanas com a linguagem Pascal. Basicamente a estrutura bsica da sintaxe no foi modificada. No entanto, h uma mudana radical no paradigma da linguagem Object Pascal: A essa linguagem foram acrescentadas caractersticas orientadas a objeto que mudam radicalmente o estilo de programao. Aqui sero analisadas justamente essas novas caractersticas. No ser, portanto, discutido nesse documento a parte bsica da linguagem, vinda de Pascal. Podemos citar as seguintes caractersticas como as mais importantes extenses que foram acrescentadas linguagem Pascal para obter a linguagem Object Pascal: 1. Definio 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 obteno de encapsulamento so as propriedades. 3. Herana 4. Polimorfismo (Dynamic Binding) o mtodo a ser chamado conhecido apenas em tempo de execuo, dependendo do tipo do objeto para o qual o mtodo foi chamado. Obtemos polimorfismo com o uso das palavras reservadas virtual (ou dynamic) e override. 5. Mtodos abstratos. Uma caracterstica interessante de Object Pascal que, ao contrrio da maioria das outras linguagens orientadas a objeto, permitido criar instncias de classes com mtodos abstratos (embora no seja permitido chamar tais mtodos, o que geraria uma exceo). 6. Excees O mecanismo de excees de Object Pascal baseia-se em quatro palavras reservadas: try, except, finally, raise. 7. Suporte a Multithreading.

4. Implementao
Aplicaes em Delphi so compostas por um arquivo de projeto (.DPR), Forms e Units. Um Form uma janela na qual podem ser acrescentados componentes de interface

grfica. Uma Unit um arquivo do tipos .PAS, que guarda o cdigo das Forms ou a definio de tipos e funes.

4.1 Estrutura Geral de uma Unit


Uma Unit se divide em duas sees: - Seo de Interface: aqui esto variveis e definies de tipos. Essa a parte visvel da Unit s outras Units. Tipos definidos aqui podem ser usados em qualquer outra Unit que a utilize (por meio da clusula uses). - Seo de Implementao: Essa seo s acessada de dentro da prpria Unit. Nela esto as definies (implementaes) das funes e procedimentos declarados na seo 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 cdigo fora da Unit, se mais de uma classe for definida na mesma Unit, uma poder acessar livremente a implementao da outra, independentemente dos modificadores de acesso.

4.2 A RTL e a biblioteca de classes do Delphi


Muitos recursos que os programadores Delphi tm sua disposio vm da RTL (Run Time Library Biblioteca de Tempo de Execuo) da linguagem Object Pascal. Essa biblioteca contm uma srie de funes teis agrupadas em Units. O real poder da programao visual do Delphi, no entanto, est na sua enorme biblioteca de classes. Nela encontramos centenas de classes, com milhares de mtodos. Essas classes podem ser usadas diretamente no cdigo pelo programador ou implicitamente, no projetista visual de formulrios. Hoje, a biblioteca est dividida em RTL, mencionada anteriormente, que contm classes e componentes no visuais, VCL (Visual Component Library), que abriga os componentes visuais clssicos do Windows e a CLX (Component Library for Cross-Platform), que contm componentes para vrias 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 referncia na construo 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 herana. O programa composto basicamente de quatro arquivos: o arquivo de projeto (.DPR), o arquivo de definio de tipos (.PAS) e os arquivos de definio 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
unit Anim; interface type TAnimal = class public constructor Create; function GetKind: string; function Voice: string; virtual; abstract; private Kind: string; end; TDog = class (TAnimal) // Herana public constructor Create; function Voice: string; override; function Eat: string; virtual; end; TCat = class (TAnimal) // Herana public constructor Create; function Voice: string; override; function Eat: string; virtual; end; implementation uses MMSystem; constructor TAnimal.Create; begin Kind := 'An animal'; end;

function TAnimal.GetKind: string; begin GetKind := Kind; end; constructor TDog.Create; begin Kind := 'A dog'; end; function TDog.Voice: string; begin Voice := 'Arf Arf'; PlaySound ('dog.wav', 0, snd_Async); end; function TDog.Eat: string; begin Eat := 'A bone, please!'; end; constructor TCat.Create; begin Kind := 'A cat'; end; function TCat.Voice: string; begin Voice := 'Mieow'; PlaySound ('cat.wav', 0, snd_Async); end; function TCat.Eat: string; begin Eat := 'A mouse, please!'; end; end.

*Vale ressaltar o fato mencionado anteriormente de que, ao chamar um mtodo abstrato, (nesse caso voice da classe TAnimal) ocorrer uma exceo.

5. Utilizao
Object Pascal utilizado em dois ambientes de desenvolvimento, Delphi, para o sistema operacional Windows e Kylix, para Unix e nestes ambientes possvel desenvolver aplicaes que necessitem da orientao a objetos. No ambiente Delphi, por ser baseada em formulrios, compilvel, suportar acesso a banco de dados e conter vrias bibliotecas na plataforma Windows, que a mais utilizada, torna-se mais simples desenvolver aplicaes que possuam interface grfica com usurio (GUI Grafic User Interface). Dessa forma, utilizada, dentre outras, em aplicaes em desktop, na web e principalmente em banco de dados.

6. Referncias Bibliogrficas
1. Sonnino, Bruno Desenvolvendo Aplicaes 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/

Você também pode gostar