Fórum Classe X Record #363679

10/09/2008

0

Qual(is) a(s) principal(is) diferença(s) entre classe ou record no Delphi 7?

Ambos são muito parecidos na sua aplicabilidade, correto?

O que devo levar em consideração ao utilizar um ou outro?

Obrigado


Armindo

Armindo

Responder

Post mais votado

10/09/2008

As classes são completamente diferente de records. Os records são estruturas fixas onde o foco é o armazenamento de dados para sua manipulação. As classes são mais dinâmicas onde o foco é o comportamento.
Eles são muito diferentes um do outro. No uso de classes vc tem flexibilidade e manutebilidade de código bem maiores.

Também não adianta vc utilizar classes, caso vc vá programar com elas da mesma forma que vc programa com records. Você vai estar não vai estar utilizando todos os recursos que a programação orientada a objetos pode te oferecer.


Adoniram

Adoniram
Responder

Gostei + 1

Mais Posts

10/09/2008

Brunodsr

Errado brother.. a usabilidade não é parecida não. Servem para coisas distintas.

Use um record como repositório de dados. Use uma classe apenas se existirem ações atreladas a ela ou se você quiser manipular alguns dados ou encapsular dados/métodos. Ex.:

[b:5e74807d5e]Digamos que vc queira guardar uma série de dados de um cliente:[/b:5e74807d5e]

Se não haverá qualquer regra para armazenar estes dados e se todos eles serão disponibilizados ´puramente´ e ainda nenhuma ação relacionada com eles será tomada, use um record.

TCliente = record
  ID: Integer;
  Nome: String;
  ...
  ...
end;


Já se você quer definir regras de atribuição de valores ou mesmo quer esconder valores e definir ações para esse repositório, você deve usar uma classe. É mais prático e mais seguro.

  //Classe responsavel pelo cadastro de clientes
  Cliente = class
  private
    fNome :String;
    fCPF : String;
    fIdade: Integer;
    //Funções de leitura/escrita em propriedades da classe
    procedure setCPF(nCPF:String);
    function getCPF:string;
    procedure setNome(sNome:String);
    procedure setIdade(nIdade: integer);
    //Funcoes para validacao privadas para a classe
    Function ValidaCPF(nCPF:String):Boolean;
    Function FormataCPF(nCPF:String; Formatacao: Formatacao):String;
  public
    property Nome: string read fNome write setNome;
    property CPF : String read getCPF write setCPF;
    property Idade: integer read fIdade write setIdade;
    //Funcoes para validacao publicas para a classe
    Function ClassificaCPF(nCPF: String):classificacao;
  end;


Com essa classe, eu consigo proteger os seus atributos e exibir os dados da forma que eu achar mais conveniente. Além do mais, posso ter funções específicas pertencentes a essa classe.

Espero ter ajudado.


Responder

Gostei + 0

10/09/2008

Armindo

Obrigado


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar