Você está na página 1de 13

Programao Orientada a Objetos com Object Pascal

Joo Morais

2003

SUMRIO
PARTE I Conceitos da Programao Orientada a Objetos .......................................... 3 1. Introduo........................................................................................................... 3 2. Conceitos da programao orientada a objetos ................................................. 3 2.1. Conceitos bsicos ........................................................................................... 3 2.1.1. Classe .......................................................................................................... 3 2.1.2. Objeto ........................................................................................................... 3 2.1.3. Instncia ....................................................................................................... 4 2.1.4. Herana ........................................................................................................ 4 2.1.5. Polimorfismo ................................................................................................. 4 2.2. Quanto ao contedo da classe ........................................................................ 4 2.2.1. Atributos ....................................................................................................... 4 2.2.2. Propriedades ................................................................................................ 4 2.2.3. Mtodos ........................................................................................................ 4 2.2.3.1. Mtodos Construtores (Constructor) .......................................................... 5 2.2.3.2. Mtodos Destrutores (Destructor) .............................................................. 5 2.2.3.3. Mtodos Estticos (Static) ......................................................................... 5 2.2.3.4. Mtodos Dinmicos (Dynamic) .................................................................. 5 2.2.3.5. Mtodos Virtuais (Virtual) ........................................................................... 5 2.2.3.6. Mtodos Sobrescritos (Override) ............................................................... 5 2.2.3.7. Mtodos Abstratos (Abstract) .................................................................... 6 2.3. Quanto rea da declarao .......................................................................... 6 2.3.1. Privado (Private) ........................................................................................... 6 2.3.2. Protegido (Protected) .................................................................................... 6 2.3.3. Pblico (Public) ............................................................................................. 6 2.3.4. Publicado (Published) ................................................................................... 6 PARTE II Implementao dos conceitos em Object Pascal .......................................... 7 3. Introduo........................................................................................................... 7 4. Objetos e herana de objetos ............................................................................. 7 5. Classes de Objeto e Instncias .......................................................................... 8 6. Herana, Polimorfismo e Mtodos No-Estticos............................................... 9 7. Propriedades .................................................................................................... 11 7.1. Uso dos parmetros de uma propriedade ..................................................... 11 7.2. Exemplos de uso de propriedades ................................................................ 11 8. rea da declarao de atributos e mtodos ..................................................... 12

Programao Orientada a Objetos com Object Pascal

PARTE I Conceitos da Programao Orientada a Objetos


1. Introduo
A OOP (Object Oriented Programming) revela uma forma distinta de estruturarmos nossos programas. Toda informao colocada dentro de objetos, de forma organizada, e o uso ou a manuteno destas informaes deve seguir as regras descritas pela classe do objeto em questo. Vamos a alguns exemplos prticos: a tela de login, o boto Ok, a caixa de texto em que voc digita a sua senha, so exemplos de objetos do seu programa. Por outro lado, o conceito de formulrio (a tela de login), o conceito de boto (boto Ok) e o conceito de caixa de texto (caixa aonde se digita a senha) so exemplos de classes. H tambm classes de objetos no visuais, mas que precisam existir para que o programa possa funcionar, tal como a prpria aplicao, uma tabela (arquivo de um banco de dados), entre outros. Neste ponto voc j consegue fazer uma distino entre classes e objetos. Enquanto as classes definem a estrutura, as regras e os tipos de dados que sero armazenados, os objetos so os dados que o programa ir manipular. As classes so o conceito, os objetos so a informao. A Programao Orientada a Objetos facilita a construo de grandes sistemas, pois o divide em partes bem definidas. Uma destas vantagens a reutilizao de cdigo atravs de herana. Desta forma possvel que uma equipe com vrias pessoas possa dividir um grande projeto, e cada parte deste projeto possa ser unida com as outras, sem que haja problemas com incompatibilidade.

2. Conceitos da programao orientada a objetos


Neste captulo vou apresentar os conceitos da OOP. Use-o para referncias futuras. Ao longo desta apostila, vrios conceitos voltaro a ser abordados.

2.1. Conceitos bsicos


2.1.1. Classe
o conjunto de informaes que modelam um objeto. A classe no ocupa espao em memria e no tem dados especficos do programa. Ela possui apenas as regras que iro definir o comportamento de um objeto. Exemplos de classes: o conceito de formulrio, de boto, de caixa de texto e de tabela de banco de dados.

2.1.2. Objeto
a informao em memria, e segue as regras definidas pela classe que o criou. Ao criar uma classe, voc cria diversas regras que definem o comportamento de parte do seu programa, e a partir destas regras, voc pode criar objetos, que iro armazenar estas informaes. Exemplos de objetos: ao criar regras que explicam como um boto ou uma tabela de banco de dados deve funcionar (as classes), pode-se criar objetos que iro armazenar as informaes do programa, tal como o comportamento que determinado boto ter ao ser clicado, e a localizao da tabela do banco de dados.
Arquivo de Object Pascal

Programao Orientada a Objetos com Object Pascal

2.1.3. Instncia
Instncia um sinnimo de objeto. Quando voc cria um boto Ok para o seu formulrio, costuma-se dizer que voc cria uma instncia da classe Boto. Todo objeto precisa ser criado, precisa ser instanciado para que possa ser utilizado.

2.1.4. Herana
um conceito muito importante da programao orientada a objetos, e trata da reutilizao do cdigo. bastante comum existirem classes de objetos com caractersticas em comum, e o conceito de herana, alm de evitar a repetio do cdigo, ajuda na depurao do programa e na criao de classes mais complexas e funcionais. Um bom exemplo j abordado - as classes que criam objetos visuais (botes, formulrios, etc.), e as classes que criam objetos no visuais (aplicao, tabela do banco de dados, etc.). Todos os objetos visuais possuem informaes em comum, tal como as coordenadas de posicionamento na tela, tamanho, etc. Estas informaes podem ser agrupadas em uma classe genrica e passadas s classes-filha atravs do conceito de herana.

2.1.5. Polimorfismo
Uma importante caracterstica da programao orientada a objetos, e permite que determinada rotina, em uma classe genrica, possua implementaes distintas em classes herdeiras. Exemplo de polimorfismo: o boto e a caixa de texto precisam de uma rotina que faa o seu desenho na tela. Mas como utilizar uma rotina para criar desenhos distintos? O polimorfismo cuidar disto. Neste ponto voc me pergunta - se eu tenho desenhos distintos em classes distintas, eu posso simplesmente abandonar o conceito de herana e o conceito de polimorfismo, e criar rotinas separadas em cada classe. Mas a eu te respondo - o polimorfismo e a herana so os grandes destaques da programao orientada a objetos, eles simplificam e muito a construo de sistemas complexos. A segunda parte desta apostila dar nfase a estes conceitos.

2.2. Quanto ao contedo da classe


2.2.1. Atributos
So as informaes que podem ser gravadas em um objeto, ou seja, so as variveis declaradas na classe.

2.2.2. Propriedades
possvel criar uma estrutura que funcione como uma varivel (recebendo e retornando dados), e controlada por um par de rotinas. Em uma propriedade, pode-se definir um procedimento que ir receber a informao, e/ou definir uma funo que ir retornar a informao. Propriedades so especialmente teis para proteger as informaes dentro do objeto e/ou executar alguma instruo quando a informao alterada ou recuperada. Propriedades so definidas com a palavra reservada property frente do nome da propriedade.

2.2.3. Mtodos
So as rotinas da classe, e podem ser dos seguintes tipos:

Arquivo de Object Pascal

Programao Orientada a Objetos com Object Pascal

2.2.3.1. Mtodos Construtores (Constructor)


o mtodo executado no momento de criao da instncia da classe. Dentro da sua declarao, pode-se colocar a inicializao de variveis, entre outros processos que prepara o objeto para ser utilizado. Outra atribuio aos mtodos construtores ligar o objeto recm criado aos demais mtodos deste objeto. Toda classe deve ter ao menos um mtodo construtor, e apenas um deve ser executado, uma nica vez, antes de qualquer outro. Mtodos construtores so definidos com a palavra reservada constructor frente do nome do mtodo.

2.2.3.2. Mtodos Destrutores (Destructor)


o mtodo executado para destruir o objeto e liberar a memria at ento alocada. Toda classe precisa de um e apenas um mtodo destrutor. Este deve ser o ltimo mtodo a ser executado. Mtodos destrutores so definidos com a palavra reservada destructor frente do nome do mtodo, e devem ser declarados como sobrescritos.

2.2.3.3. Mtodos Estticos (Static)


Este o tipo de mtodo tradicional. Ele declarado como procedimento ou funo e no recebe qualquer sufixo. A localizao deste mtodo definido em tempo de compilao (vide mtodos Dinmicos e mtodos Virtuais).

2.2.3.4. Mtodos Dinmicos (Dynamic)


Mtodos dinmicos so aqueles ligados em tempo de execuo, conforme a classe do objeto que o chamou. Para que se faa valer o Polimorfismo, necessrio um tratamento diferenciado para mtodos semelhantes - enquanto classes genricas criam a chamada para determinada tarefa, as classes herdeiras implementam esta tarefa. Para que isto funcione corretamente, o mtodo na classe genrica dever ser dinmico. Mtodos dinmicos so definidos com a palavra reservada dynamic , logo aps a declarao completa do mtodo.

2.2.3.5. Mtodos Virtuais (Virtual)


Tem funcionamento idntico aos mtodos dinmicos, exceto que, mtodos dinmicos possuem uma implementao que favorece o tamanho do cdigo, e mtodos virtuais favorecem o tempo de execuo. Por este motivo, procure sempre declarar seus mtodos no-estticos como Virtuais. Mtodos virtuais so definidos com a palavra reservada virtual logo aps a declarao completa do mtodo.

2.2.3.6. Mtodos Sobrescritos (Override)


Os mtodos sobrescritos so as implementaes de mtodos dinmicos ou virtuais. Criar um mtodo dinmico ou virtual em uma classe genrica um pr-requisito para criar mtodos sobrescritos nas classes herdeiras. Os mtodos sobrescritos iro sobrepor as implementaes herdadas, porm, de forma inteligente. Com esta tcnica possvel utilizar uma classe genrica para chamar um mtodo implementado em uma classe herdeira.
Arquivo de Object Pascal

Programao Orientada a Objetos com Object Pascal


Este conjunto de mtodos (dinmico, virtual e sobrescrito) o grande segredo para trabalhar com herana, e especialmente com polimorfismo. Este assunto ser abordado com exemplos ao longo desta apostila. Mtodos sobrescritos so definidos com a palavra reservada override, logo aps a declarao completa do mtodo.

2.2.3.7. Mtodos Abstratos (Abstract)


So mtodos cuja implementao ser feita apenas atravs dos herdeiros da classe. Utiliza-se em conjunto com mtodos virtuais ou dinmicos. Pode ser necessrio criar um mtodo to genrico em uma classe, que ele sequer possui implementao, sequer possui um cdigo. Para no criar um mtodo que simplesmente possui um begin seguido de um end, declara-se o mtodo como abstrato e dispensa-se a necessidade de implementao. Importante: no se deve criar instncia de classes com algum mtodo abstrato. A instncia dever ser criada atravs de uma classe herdeira que tenha todos estes mtodos devidamente implementados. Mtodos abstratos so definidos com a palavra reservada abstract, logo aps a declarao Dynamic ou Virtual.

2.3. Quanto rea da declarao


2.3.1. Privado (Private)
A rea privada de uma classe contm declaraes que no esto acessveis, nem fora da classe, nem para seus herdeiros. til para guardar informaes que precisam ter o contedo preservado ou protegido. Uma rea privada iniciada com a palavra reservada private.

2.3.2. Protegido (Protected)


rea cuja declarao visvel apenas pela prpria classe e seus herdeiros. No visvel fora da classe. Uma rea protegida iniciada com a palavra reservada protected.

2.3.3. Pblico (Public)


Indica declaraes visveis em qualquer local, seja dentro ou fora da classe. Uma rea pblica iniciada com a palavra reservada public.

2.3.4. Publicado (Published)


Declarao pblica de propriedades e eventos. utilizado em programao visual, e indica o que est visvel para o programador em tempo de projeto. til para programao de componentes, portanto, est fora do escopo desta apostila. Uma rea publicada iniciada com a palavra reservada published.

Arquivo de Object Pascal

Programao Orientada a Objetos com Object Pascal

PARTE II Implementao dos conceitos em Object Pascal


3. Introduo
A primeira implementao do Turbo Pascal orientado a objetos ocorreu em sua verso 5.5. Isto foi em meados de 1989. lgico que nem todos estes conceitos existiam neste compilador, por exemplo, o conceito de propriedade e o conceito de classe, como existe nas verses mais modernas dos compiladores Pascal. Esta apostila ir abordar a sintaxe do Free Pascal, do Delphi e demais compiladores compatveis com estes.

4. Objetos e herana de objetos


Veja o exemplo abaixo:
type TForm_ok = Object Top, Left: Integer; Visible: boolean; constructor Create; destructor Destroy; procedure Show; procedure Hide; botao_ok: TButton; end; var Form_ok: TForm_ok;

Neste exemplo est sendo declarado um formulrio fictcio. As declaraes constructor e destructor indicam os procedimentos de abertura e encerramento do objeto. Quero chamar a ateno para uma particularidade deste objeto - a redundncia. Este um exemplo bem simples, mas uma implementao completa de um formulrio se estenderia a vrios outros dados e mtodos, seria totalmente invivel repetir tudo isto para cada janela que quisssemos criar. Veja este segundo exemplo:
type TForm = Object Top, Left: integer; Visible: boolean; constructor Create; destructor Destroy; procedure Show; procedure Hide; end; TForm_ok = Object(TForm) botao_ok: TButton; end; var Form_ok: TForm_ok;

Arquivo de Object Pascal

Programao Orientada a Objetos com Object Pascal


Aqui foi utilizado um conceito da OOP - a herana. Temos, primeiramente, uma definio de tipo objeto - o TForm. O TForm apenas uma estrutura que ir definir as caractersticas do objeto, e no o objeto em si. como o Integer do Pascal, ele no guarda nmeros, mas utilizado na clusula var para criar variveis que guardem nmeros inteiros. Em seguida h uma nova definio de tipo objeto, que chamamos de TForm_ok. Mas afinal, qual a diferena entre eles? O primeiro, TForm, um tipo genrico, contm as informaes necessrias para criar um formulrio vazio. O segundo, TForm_ok, herda todas as caractersticas do TForm e acrescenta um objeto boto. Por ltimo, cria-se uma varivel, Form_ok. Este sim, o nosso objeto. Dentro da estrutura do Form_ok h todas as informaes de um formulrio (posio, tamanho, etc.), o endereo em memria dos seus mtodos (mostrar, esconder, destruir) que so ligados ao objeto pelo construtor e temos tambm as informaes do boto, criado na implementao do tipo objeto TForm_ok.

5. Classes de Objeto e Instncias


Vou colocar uma nova referncia ao nosso exemplo:
type TForm = Object Top, Left: integer; Visible: boolean; constructor Create; destructor Destroy; procedure Show; procedure Hide; end; PForm_ok = ^TForm_ok; TForm_ok = Object(TForm) botao_ok: TButton; end; var Form_ok: PForm_ok;

Ocorreram duas diferenas importantes neste exemplo. Note a declarao do tipo PForm_ok, e note tambm a nova declarao da varivel objeto Form_ok. Vou falar da diferena entre objeto (citado no exemplo anterior) e classe (comentado no incio da apostila). No primeiro exemplo, a varivel Form_ok era o prprio objeto. Bastava, ento, declarar esta varivel (na rea var) para que ela ocupasse o seu espao na memria. A classe uma estrutura que aponta para o objeto alocado na memria. um ponteiro para objeto. Uma varivel do tipo classe possui sempre o mesmo tamanho, independente do tamanho da sua estrutura. Isto possvel porque esta varivel indica apenas a localizao do objeto na memria. Mas ento, para qu complicar tanto? H alguns bons motivos para funcionar desta maneira, e o mais importante deles que cria-se uma instncia (leia-se - roubada memria do computador) apenas quando for necessrio, e depois a memria pode ser liberada ainda com o programa em funcionamento. Desta forma, vrios programas podem compartilhar a memria do computador, harmnica e economicamente.

Arquivo de Object Pascal

Programao Orientada a Objetos com Object Pascal


Tendo entendido este conceito de classe como um ponteiro para objeto (tenha certeza de t-lo compreendido), vou repassar o que foi feito no ltimo exemplo: PForm_ok = ^TForm_ok; esta instruo cria um tipo "apontamento para o tipo objeto TForm_ok". Vamos a outro exemplo:
var Form_ok: PForm_ok; begin new(Form_ok, Create); Form_ok^.Show; dispose(Form_ok, Destroy); end;

Aqui temos trs clssicos exemplos de programao com alocao dinmica: alocar (new), acessar (Form.Show) e liberar (dispose). O termo alocao dinmica indica que foi reservado memria para os dados enquanto o programa estava em execuo. O procedimento new do Pascal aloca espao na memria, suficiente para guardar a estrutura indicada. O primeiro parmetro indica quem recebe o endereo da estrutura, e o segundo indica o mtodo construtor. Observao importante: nunca acesse um objeto que no foi instanciado. Na melhor das hipteses, voc ser presenteado com uma mensagem de erro, nada amigvel, informando uma violao de acesso memria. No DOS, como no h proteo da memria, a sua sesso poder ser encerrada sem maior cerimnia. O conceito "ponteiro para objeto" continua valendo at hoje, mas implementado de forma mais limpa e dedutvel. Nosso ltimo exemplo fica assim:
type TForm_ok = class(TForm) Botao_ok: TButton; end; var Form_ok: TForm_ok; begin Form_ok:=TForm_ok.Create(self); Form_ok.Show; Form_ok.Destroy; end;

A palavra reservada class e o conceito de classe veio fazer companhia ao Object Pascal apenas no Free Pascal, no Delphi e em outros compiladores Pascal modernos. A nica diferena estrutural da class para o ponteiro a objeto ao referenciar mtodos e atributos, em que dispensado o uso do circunflexo - o compilador sempre saber quando voc est se referindo ao objeto ou ao seu endereo. No v ficar com raiva de mim por ter feito voc estudar ponteiros. Se voc no entende como as coisas realmente funcionam, no poder dizer que conhece o assunto ;-)

6. Herana, Polimorfismo e Mtodos No-Estticos


Observe este outro exemplo:

Arquivo de Object Pascal

Programao Orientada a Objetos com Object Pascal


type TControle = class(TObject) X, Y: integer; procedure Desenha; virtual; abstract; end; TBotao = class(TControle) procedure Desenha; override; end; TEdit = class(TControle) procedure Desenha; override; end; procedure TBotao.Desenha; begin // Mtodos para desenho de um boto end; procedure TEdit.Desenha; begin // Mtodos para desenho de uma caixa de texto end;

Agora, analise a seguinte situao: visualize uma tela qualquer do Windows ou qualquer outro ambiente, com diversos Rtulos (Labels), Caixas de Texto, Botes, etc. Voc j sabe que cada um deles um objeto, e que pertence a uma determinada classe. Tambm fcil deduzir que estes desenhos no aparecem na tela por mgica. Cada objeto deve possuir um mtodo responsvel por seu desenho. De forma simplificada, isto funciona assim: o sistema operacional ordena que determinada janela seja atualizada (redesenhada), ento esta janela percorre a lista de controles que possui, e ordena que cada controle seja redesenhado. Esta lista de controles possui o endereo de cada objeto TControle. Volte a observar o exemplo - h um mtodo para cada um dos tipos de controle que foram implementados. Na tradicional programao procedural, a implementao fica assim:
if Controle is TEdit then DesenhaEdit else if Controle is TBotao then DesenhaBotao;

Veja aqui a importncia do polimorfismo na programao orientada a objetos: precisamos de um mtodo virtual (abstrato, ou com alguma implementao padro) que funcione como uma referncia para o mtodo correto. Veja agora, uma tpica implementao orientada a objetos:
Controle.Desenha;

Internamente, ela funciona como o exemplo "procedural", colocado anteriormente. Perceba que Controle, por pertencer classe TControle, pode referenciar tanto um TEdit como um TBotao. Como o mtodo Desenha virtual, o programa ir determinar, em tempo de execuo, qual implementao ser executada. Para ajudar a ilustrar as explicaes, verifique estes trechos de cdigo:
var Controle: TControle;

Arquivo de Object Pascal

10

Programao Orientada a Objetos com Object Pascal


begin Controle:=TBotao.Create; Controle.Desenha; // executa o mtodo TBotao.Desenha Controle.Destroy; Controle:=TEdit.Create; Controle.Desenha; // executa o mtodo TEdit.Desenha Controle.Destroy; end;

7. Propriedades
Propriedades so muito teis para manter a integridade das informaes do objeto, de forma simples e transparente ao usurio da classe. Ao usurio, uma propriedade funciona como uma varivel, por outro lado, permite ao programador da classe criar regras e aes que ocorrem no momento da leitura ou escrita dos dados. Sintaxe da declarao de uma propriedade:
property <nome_propriedade>[ [<var_indice>] ]:<tipo> [read <funo ou varivel>] [write <funo ou varivel>] [default];

7.1. Uso dos parmetros de uma propriedade


O read e o write de uma propriedade servem para modificar, respectivamente, a ao que dever ser tomada no momento da leitura e da escrita do valor da propriedade. Aps a palavra reservada read ou write, pode-se utilizar um mtodo ou uma varivel. A varivel poder ser utilizada quando a leitura ou alterao do valor no requer qualquer tratamento ou ao, do contrrio, se utiliza uma funo (read) ou uma procedure (write) Propriedades so tratadas como variveis simples. Para leitura:
variavel:=obj.propriedade;

Para escrita:
obj.propriedade:=<valor ou varivel>;

O uso de colchetes aps a declarao do nome, trata a propriedade como uma matriz. O valor passado pelo usurio enviado ao primeiro parmetro da procedure ou funo. O default utilizado em propriedades com ndice (colchetes), e a coloca como a propriedade padro da classe. Caso o usurio faa uma referncia classe, utilize um ndice e no indique uma propriedade especfica, a propriedade default ser utilizada.

7.2. Exemplos de uso de propriedades


TParser = class(TObject) private VExpression: string; function GetCallExpression: Extended; public property Expression: string read VExpression; property CallExpression: Extended read GetCallExpression; end;

Arquivo de Object Pascal

11

Programao Orientada a Objetos com Object Pascal


A varivel VExpression no acessvel fora da classe porque no pode ter seu contedo alterado indiscriminadamente, mas sua leitura permitida. Expression uma propriedade que permite apenas a leitura da varivel VExpression, enquanto CallExpression uma propriedade que executa uma ao para determinar o resultado da expresso.
TParser = class(TObject) private VExpression: string; procedure SetExpression(AExpression: string); public property Expression: string read VExpression write SetExpression; end;

As propriedades so teis para promover alteraes no objeto. No exemplo acima, ao fazer a leitura da propriedade Expression, a informao ser retirada diretamente da varivel VExpression. Ao fazer a escrita de um valor a esta propriedade, ser chamada a procedure SetExpression que receber o novo valor atravs do parmetro AExpression, verificar a integridade da expresso e providenciar as alteraes necessrias ao objeto, para possibilitar o clculo do resultado da expresso.
TLista = class(TObject) private VItems: TList; function GetItem(AIndex: integer): TItemLista; public property Items[AIndex: integer]: TItemLista read GetItem; default;

A propriedade Items somente leitura e utilizada para acessar os itens da varivel privada VItems. Para acessar esta propriedade:
ItemLista:=Lista.Items[i];

O contedo da varivel i passado ao parmetro AIndex da funo GetItem. A propriedade Items default, portanto, a linha acima poder ser escrita da seguinte forma:
ItemLista:=Lista[i];

8. rea da declarao de atributos e mtodos


Ao desenhar a estrutura de uma classe, conveniente manter dados e mtodos internos to reservados e escondidos quanto possvel. Uma classe bem desenhada mantm os dados vitais em reas restritas, e o acesso a estes dados feito atravs de propriedades e mtodos.
TForm = class(TObject) private VTop, VLeft: integer; procedure SetTop(ATop: integer); procedure SetLeft(ALeft: integer); public property Top: integer read VTop write SetTop; property Left: integer read VLeft write SetLeft; end;

O exemplo acima esconde as variveis VTop e VLeft de qualquer implementao fora do contexto da classe TForm. H um bom motivo para ser implementado desta forma - ao alterar a posio do formulrio, necessrio redesenh-lo em outra posio. Por isto as variveis VTop e VLeft esto em uma rea privada.

Arquivo de Object Pascal

12

Programao Orientada a Objetos com Object Pascal


TFuncao = class(TObject) protected procedure Recalc; public function CalcFuncao: Extended; virtual; abstract; end; TFuncaoInterna = class(TFuncao) public function CalcFuncao: Extended; override; end; TFuncaoExterna = class(TFuncao) public function CalcFuncao: Extended; override; end;

No exemplo acima h um mtodo declarado na rea protected da classe TFuncao, ou seja, acessvel apenas aos herdeiros desta classe. O segundo, declarado como pblico, um mtodo virtual e dever ser aperfeioado por seus herdeiros. Neste exemplo, o mtodo CalcFuncao possui implementaes distintas mas possui uma rotina em comum, chamada Recalc. O mtodo Recalc foi declarado como protegido porque parte de uma rotina, e no h qualquer interesse exceto ser chamado atravs dos herdeiros da classe.

Documento: Programao Orientada a Objetos com Object Pascal Original: Traduo: Reviso: Publicao: Joo Morais Joo Morais 27/12/2003

Todas as publicaes do Arquivo de Object Pascal so aprovadas por seus respectivos autores

Arquivo de Object Pascal

13

Você também pode gostar