Programação Orientada a
Objetos em Delphi
Programação Estruturada

“Dividir para Conquistar”
Subdividir
o problema em módulos,
procedimentos, funções, sub-rotinas
Criação de bibliotecas de funções

Problema:
“Dados e funções que operavam sobre
estes dados eram tratados como entidades
distintas.”
Exemplo 1
type
TContribuinte = record
salario, imposto : double;
end;
var
Contribuinte : TContribuinte
procedure Calcula_Inposto(var contr: TContribuinte)
...
end.
Exemplo1 (Continuação...)
Exemplo1 (Continuação...)
Programa Exemplo 1

Os dados estão armazenados no “record”
TContribuinte

A função que manipula os dados é o
“procedure” Calcula_Imposto

Passagem de parâmetros por referência
(var), uma vez que os dados e a função são
entidades distintas
Contribuinte é uma variável global

Definição de uma Classe

Em Object Pascal:
type
Classe_1 = Class
Atributo_1 : tipo_1;
...
function Metodo_1(...) : tipo_metodo1;
procedure Metodo_2(...);
...
end;
Implementação dos Métodos

Na seção Implementation da unit:
function Classe_1.Metodo_1(...): tipo_metodo1;
begin
...
end;
procedure Classe_1.Metodo_2(...);
begin
...
end;
Exemplo 2
type
TContribuinte = Class
salario, imposto : double;
procedure Calcula_Imposto;
end;
procedure TContribuinte.Calcula_Inposto();
...
end.
“Criando” a Classe

Antes de usarmos uma classe esta
deve ser instanciada e as ações
necessárias para inicializa-la devem
ser executadas.
Método Create:
Contribuinte = TContribuinte.Create;
“Destruindo” a Classe

A memória alocada deve ser depois
liberada e as ações necessárias
executadas para liberar a classe.
Método Destroy:
Contribuinte.Destroy;
Exemplo2 (Continuação...)
Programa Exemplo 2

Os dados e a função que manipula os
dados estão declarados na classe
TContribuinte;

Não é necessária a passagem de
parâmetros por referência.
Herança de Classes

Permite que se definam novas classes a
partir de uma ou mais classes-base.

Classe TApplication do Delphi.
Herança

Em Object Pascal:
type
Classe_1 = Class(Classe_Base)
Atributo_1 : tipo_1;
...
function Metodo_1(...) : tipo_metodo1;
procedure Metodo_2(...);
...
end;
Exemplo 3
type
TContribuinte = Class
imposto : double;
procedure Calcula_Imposto;
end
TPessoa_Fisica = Class(TContribuinte)
salario,inss : double;
procedure Calcula_Imposto;
end;
TPessoa_Juridica = Class(TContribuinte)
rendimentos : double;
procedure Calcula_Imposto;
end;
Exemplo3 (Continuação...)
Exemplo3 (Continuação...)
Exemplo3 (Continuação...)
Download

end