¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Diferencia entre Método Estático y Método de Instancia en BADI: ¿Cuál elegir?

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

¿En BADI cuál es la diferencia entre el Método Estático y el Método de Instancia?

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

4 Respuestas

0
Cargando...

Hola,

Los componentes de instancia existen por separado en cada instancia (objeto) de la clase y se refieren usando el selector de componente de instancia con '->'.

Los componentes estáticos solo existen una vez por clase y son válidos para todas las instancias de la clase. Se declaran con la palabra clave CLASS-

Los componentes estáticos se pueden usar sin siquiera crear una instancia de la clase y se refieren usando el selector de componente estático '=>'.

Ejemplo 1:

El programa contiene una clase C1 con el atributo estático: NUM. El método: M1 incrementa el atributo estático en 1 y muestra el valor cada vez que se llama.

En la parte principal START-OF-SELECTION, se crean dos objetos: OBJ1 y OBJ2 de la clase C1.

Primero, el atributo estático: NUM se cambia y se accede fuera de la clase usando el selector de componente de clase, '=>'.

Luego, ambos objetos OBJ1 y OBJ2 se utilizan para llamar al método: M1 que muestra el nuevo valor del atributo estático: NUM.

Que el valor del atributo estático se incremente cada vez que se llama al método M1 de diferentes objetos muestra que esta variable puede retener su valor durante todo el tiempo de ejecución.

informe ysubdel.

CLASS c1 DEFINITION.

SECCIÓN PÚBLICA.

CLASS-DATA: NUM TIPO I.

MÉTODOS: M1.

ENDCLASS.

CLASS c1 IMPLEMENTACIÓN.

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.

CREAR OBJETO: OREF1,

OREF2.

LLAMAR MÉTODO OREF1->M1.

LLAMAR MÉTODO OREF2->M1.

Ejemplo2:

Los métodos estáticos de una clase solo pueden usar atributos estáticos de esa clase. No pueden usar atributos de instancia. Pero, los métodos de instancia pueden usar ambos.

Desc:

Componente tipo estático/instancia

stnum Data estático

Instnum Data Instancia

Stmeth Método Estático

Instmeth Método Instancia

Tanto los métodos estáticos como de instancia intentan mostrar valores de los atributos estáticos e de instancia: STNUM e INSTNUM.

En la compilación, se generará un error que demostrará que el método estático STMETH no puede funcionar con el atributo de instancia INSTNUM.

INFORME YSUBDEL.

CLASS C1 DEFINITION.

SECCIÓN PÚBLICA.

CLASS-DATA: STNUM TIPO I VALOR 5.

DATA: INSTNUM TIPO I VALOR 6.

CLASS-METHODS: STMETH.

MÉTODOS: INSTMETH.

ENDCLASS.

CLASS C1 IMPLEMENTACIÓN.

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...

Gracias por tu valiosa información.

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

Método de Instancia y Estático:

Si declaras un método como estático, puedes llamar a ese método usando el nombre de la clase, ese método es independiente de ese objeto. Los declaras usando la declaración DATOS DE CLASE .

Si declaras un método como de instancia, puedes llamar a ese método usando el nombre del objeto, ese método es dependiente de ese objeto. Los declaras usando la declaración DATOS .

Atributo de Instancia y Estático:

Si declaras un atributo como estático, puedes usar ese atributo a través del nombre de la clase, ese atributo es independiente de ese objeto. Declaras métodos estáticos usando la MÉTODOS DE CLASE .

Si declaras un atributo como de instancia, puedes usar ese atributo a través del nombre del objeto, ese atributo es dependiente de ese objeto. Declaras métodos de instancia usando la MÉTODOS .

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

Métodos estáticos : estos métodos pueden ser llamados sin necesidad de crear un objeto para la clase. Estos métodos pueden ser llamados directamente usando el nombre de la clase como


cl_gui_frontend_services=>gui_download().

Métodos de instancia : Estos métodos solo pueden ser llamados usando el objeto de la clase.

Espero que esto ayude.

Gracias,

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?