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...)