Classe X Record

Delphi

10/09/2008

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

Curtidas 0

Melhor post

Adoniram

Adoniram

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.


GOSTEI 1

Mais Respostas

Brunodsr

Brunodsr

10/09/2008

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.


GOSTEI 0
Armindo

Armindo

10/09/2008

Obrigado


GOSTEI 0
POSTAR