Um Objeto pode ter Atributos Primários e Secundários.
Introdução
Os atributos de um Objeto são a representação do seu conhecimento, ou seja, tudo que o Objeto encapsula é representado por atributos.
Assim como uma Classe pode ter 2 tipos de construtores, um Objeto pode ter 2 tipos de atributos: Primários e Secundários.
Primários
Atributos Primários são aqueles que fazem parte do Estado do Objeto.
São os atributos inicializados pela Classe, passados ao Objeto através do construtor com a finalidade de representar uma Entidade.
Vejamos um exemplo:
Na Classe TFile
acima, há apenas 1 argumento no construtor. Esse argumento será parte do Estado do Objeto e, portanto, irá inicializar um Atributo Primário chamado FFilePath
.
Secundários
Atributos Secundários são todos os atributos que não foram inicializados pelo construtor da Classe.
São atributos de suporte tecnológico.
Vejamos um exemplo:
Nesse exemplo acima a Classe TFile
foi atualizada. Um novo atributo FStream
foi adicionado.
Esse atributo não foi passado no construtor, então ele é um Atributo Secundário.
O método Stream
irá retornar o stream do arquivo, no entanto os dados do arquivo em disco serão lidos apenas na primeira execução, pois após inicializar o atributo FStream
ele não é mais atualizado.
A Classe TDataStream
é irrelevante para o entendimento, mas veja que o path do arquivo é passado. Então essa Classe irá ler o arquivo em disco e retornar uma instância de IDataStream
.
Conclusão
Atributos Primários são inicializados através do construtor da Classe e devem ser imutáveis.
Atributos Secundários podem ou não ser inicializados através do construtor da Classe, pois eles podem ser inicializados a qualquer momento e em qualquer lugar do Objeto.
Tudo são atributos, mas saber essa diferença sutil entre Atributos Primários e Secundários é essencial para construírmos Classes melhores.
Até logo.