Avalados por :

Diferença entre Método Estático e Método de Instância em BADI: Qual escolher?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 8 Vistas
0
Cargando...

Qual é a diferença entre o Método Estático e o Método de Instância no BADI?

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá,

Os componentes de instância existem separadamente em cada instância (objeto) da classe e são referenciados usando o seletor de componente de instância com '->'.

Os componentes estáticos existem apenas uma vez por classe e são válidos para todas as instâncias da classe. Eles são declarados com a palavra-chave CLASS-

Os componentes estáticos podem ser usados sem mesmo criar uma instância da classe e são referenciados usando o seletor de componente estático '=>'.

Exemplo 1:

O programa contém uma classe C1 com o atributo estático: NUM. O método: M1 incrementa o atributo estático em 1 e exibe o valor sempre que é chamado.

Na parte principal START-OF-SELECTION, dois objetos são criados: OBJ1 e OBJ2 da classe C1.

Primeiramente, o atributo estático: NUM é alterado e acessado fora da classe usando o seletor de componente de classe, '=>'.

Em seguida, ambos os objetos OBJ1 e OBJ2 são usados para chamar o método: M1 que exibe o novo valor do atributo estático: NUM.

O fato do valor do atributo estático ser incrementado sempre que o método M1 de diferentes objetos é chamado mostra que essa variável pode manter seu valor durante toda a execução.

informe ysubdel.

CLASS c1 DEFINIÇÃO.

SEÇÃO PÚBLICA.

CLASS-DATA: NUM TIPO I.

MÉTODOS: M1.

ENDCLASS.

CLASS c1 IMPLEMENTAÇÃO.

MÉTODO m1.

num = num + 1.

write:/5 num.

ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

c1=>num = 3.

write:/5 c1=>num.

DATA: OREF1 TIPO REF A C1,

OREF2 TIPO REF A C1.

CRIAR OBJETO: OREF1,

OREF2.

CHAMAR MÉTODO OREF1->M1.

CHAMAR MÉTODO OREF2->M1.

Exemplo2:

Os métodos estáticos de uma classe só podem usar atributos estáticos dessa classe. Eles não podem usar atributos de instância. Porém, os métodos de instância podem usar ambos.

Desc:

Componente tipo estático/instância

stnum Dado estático

Instnum Dado Instância

Stmeth Método Estático

Instmeth Método Instância

Tanto os métodos estáticos quanto de instância tentam exibir valores dos atributos estáticos e de instância: STNUM e INSTNUM.

Na compilação, um erro será gerado demonstrando que o método estático STMETH não pode funcionar com o atributo de instância INSTNUM.

INFORME YSUBDEL.

CLASS C1 DEFINIÇÃO.

SEÇÃO PÚBLICA.

CLASS-DATA: STNUM TIPO I VALOR 5.

DATA: INSTNUM TIPO I VALOR 6.

CLASS-METHODS: STMETH.

MÉTODOS: INSTMETH.

ENDCLASS.

CLASS C1 IMPLEMENTAÇÃO.

MÉTODO: STMETH.

WRITE:/5 STNUM.

WRITE:/5 INSTNUM.

ENDMETHOD.

MÉTODO INSTMETH.

WRITE:/5 STNUM.

WRITE:/5 INSTNUM.

ENDMETHOD.

ENDCLASS.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Obrigado pela sua valiosa informação.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Método de Instância e Estático:

Se você declarar um método como estático, você pode chamá-lo usando o nome da classe, esse método é independente desse objeto. Você os declara usando a declaração DADOS DE CLASSE .

Se você declarar um método como de instância, você pode chamá-lo usando o nome do objeto, esse método é dependente desse objeto. Você os declara usando a declaração DADOS .

Atributo de Instância e Estático:

Se você declarar um atributo como estático, você pode usar esse atributo através do nome da classe, esse atributo é independente desse objeto. Você declara métodos estáticos usando a MÉTODOS DE CLASSE .

Se você declarar um atributo como de instância, você pode usar esse atributo através do nome do objeto, esse atributo é dependente desse objeto. Você declara métodos de instância usando a MÉTODOS .

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Métodos estáticos : estes métodos podem ser chamados sem a necessidade de criar um objeto para a classe. Estes métodos podem ser chamados diretamente usando o nome da classe como


cl_gui_frontend_services=>gui_download().

Métodos de instância : Estes métodos só podem ser chamados usando o objeto da classe.

Espero que isso ajude.

Obrigado,

Balaji

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?