Ir para conteúdo
  • Cadastre-se

Método do Objeto X Método de Classe


Ver Solução Respondido por Daniel Simoes,

Recommended Posts

  • Membro Pro Verificado
Postado

Olá a todos,

Fiquei com uma dúvida em relação ao vídeo abaixo, no minuto 3:52.

O autor mostra a diferença entre Métodos de Objeto e Métodos de Classe, porém ele faz uma coisa que eu nunca tinha visto... Ele consegue acessar um Método de Objeto sem instanciar ele, apenas usando a variável, isso no minuto 3:52.

Eu sempre achei que era necessário instanciar um objeto para usar um Método de Objeto (que não é class function ou class procedure).

Então qual a vantagem de usar o class function ou class procedure ao invés de fazer como no minuto 3:52 do vídeo.

Desde já agradeço a atenção

  • Consultores
Postado

Bom dia

creio que a forma da explicação não tenha ficado claro.

mas tu pode ter uma function ou procedure e fazer o acesso delas usando o class , mas nada dentro dela pode fazer referencia a classe

 

se tu por acaso possuir algo

type
  TMinha = class
  private
     X: integer;
  public
     class function teste:boolean;
  end;

///na sua implementação pode acessar a X

class function  TMinha.teste:boolean;
begin
// a X aqui não acessa.
end;

é para algo especifico

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Membro Pro Verificado
Postado
1 minuto atrás, Juliomar Marchetti disse:

Bom dia

creio que a forma da explicação não tenha ficado claro.

mas tu pode ter uma function ou procedure e fazer o acesso delas usando o class , mas nada dentro dela pode fazer referencia a classe

 

se tu por acaso possuir algo

type
  TMinha = class
  private
     X: integer;
  public
     class function teste:boolean;
  end;

///na sua implementação pode acessar a X

class function  TMinha.teste:boolean;
begin
// a X aqui não acessa.
end;

é para algo especifico

Oi... 

Sim ... isso eu tinha entendido... Eu fiquei intrigado em como ele pode acessar a função MENSAGEM da classe TTeste sem instancia-la, apenas usando a variável Teste do tipo TTeste. Agora que sei que isso é possível, em que situação isso seria usado?

  • Consultores
Postado
21 minutos atrás, bnobre disse:

em que situação isso seria usado?

vai depender do seu código meu amigo

sua analise de onde vai precisar chamar sem precisar instanciar a classe um método dela, seja function ou proceduer

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Membro Pro Verificado
Postado
4 minutos atrás, Juliomar Marchetti disse:

vai depender do seu código meu amigo

sua analise de onde vai precisar chamar sem precisar instanciar a classe um método dela, seja function ou proceduer

Sim, mas como eu costumo usar class function ou class procedure para não precisar instanciar o objeto, não me atentei que era possível fazer usando métodos de objeto normais e menos ainda vejo porque usar essa técnica ao invés de class function ou class procedure.

  • Consultores
Postado
5 minutos atrás, bnobre disse:

Sim, mas como eu costumo usar class function ou class procedure para não precisar instanciar o objeto, não me atentei que era possível fazer usando métodos de objeto normais e menos ainda vejo porque usar essa técnica ao invés de class function ou class procedure.

cuidado com a premissa de que se preciso apertar um parafuso tenho um martelo, não vou usar o martelo , mas sim vou providenciar uma chave para apertar ele. 

só porque existe a class não devo usar ela em todos. é só em metodos que vou precisar chamar sem instanciar. (exemplo uma conversão de enumerador para string etc.)

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Membro Pro Verificado
Postado
19 minutos atrás, Juliomar Marchetti disse:

cuidado com a premissa de que se preciso apertar um parafuso tenho um martelo, não vou usar o martelo , mas sim vou providenciar uma chave para apertar ele. 

só porque existe a class não devo usar ela em todos. é só em metodos que vou precisar chamar sem instanciar. (exemplo uma conversão de enumerador para string etc.)

Concordo...

Porém da mesma maneira que vou usar métodos de classe apenas em métodos aonde não preciso realmente instanciar o objeto (pois o método não fará nenhuma referência a propriedades ou outros métodos do objeto), não vejo porque nesse caso usar em substituição um método de objeto usando apenas a variável sem instancia-la (conforme trecho que relatei do vídeo). Ou estou equivocado?

  • Fundadores
  • Solution
Postado

Em teoria você pode chamar um método sem precisar instanciar a classe... Mas não conseguirá acessar variáveis ou objetos internos da Classe (pois eles ainda não foram criados)

Eu acho Class Function totalmente desnecessário... e percebo muito programador fazendo mal uso dela...

Pela orientação Objeto... o único método que faz sentido atuar como uma Classe Function, é construtor (geralmente o 'Create')...

  • Curtir 1
  • Obrigado 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...