Fórum Dúvidas ao instanciar objetos #470648
20/02/2014
0
1º
teste := TTeste.Create(self);
teste.MostraMsg;
2º
TTeste.Create(self).MostraMsg;
3º
TTeste(self).MostraMsg;
Devjunior
Curtir tópico
+ 0Posts
21/02/2014
Joel Rodrigues
Quando você cria uma variável e atribui a ela uma instância de uma classe (objeto), você poderá utilizá-la em vários pontos do código, acessando-a pelo seu nome (como "teste", no seu exemplo).
Ou seja, a partir do momento em que o objeto foi instanciado, você pode acessar seus campos e métodos diretamente:
teste.FacaIsso(); teste.FacaAquilo(); teste.Nome := 'Objeto de teste';
Já quando você acessa um método/campo a partir do próprio construtor da classe, você só poderá fazer uma única chamada/acesso àquele objeto. Se você repetir o procedimento para acessar outro campo/método, estará criando uma nova instância do objeto.
Essa segunda forma é útil quando você só vai realmente precisar de um acesso às propriedades daquele objeto, não sendo necessário acessá-lo posteriormente.
Gostei + 0
21/02/2014
Rad Informatica
Estou iniciando em POO, criação de classes e etc, e estão aparecendo algumas dúvidas ao analisar componentes e exemplos em meus estudos, então tenho mais uma pergunta.
Na segunda forma, quando informo 'Self' ao criar, não tem problema, pois ele será destruído junto com quem chamou.
Na terceira forma, ao debugar, notei que o construtor não é executado, e mesmo passando 'nil' ao criar, ao sair o objeto já está desalocado (utilizei o ReportMemoryLeaksOnShutdown := True para verificar). Isto significa que a terceira forma é melhor para fazer esses acessos rápidos ou isso tem algum custo para a aplicação?
Gostei + 0
22/02/2014
Marco Salles
Mas se vc deixar por conta do Proprietário , a memória do sistema pode ir aumentando ... O Seu uso tem que ser pensado
de uma lida em
http://www.activedelphi.com.br/forum/viewtopic.php?t=50111&highlight=self+nil+application&sid=8262c9ed293c9bd1fdbc3a76bbfcc68b
No terceiro Método , o mensagem é um MÈDODO de Classe , aplicado a classe e não a Instacia da classe ... Pesquise sobre Métodos de Classe
Gostei + 0
24/02/2014
Devjunior
Gostei + 0
24/02/2014
Marco Salles
[]sds
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)