4D v16

Programación genérica (sin punteros)

Inicio

 
4D v16
Programación genérica (sin punteros)

Programación genérica (sin punteros)    


 

 


Además de las manipulaciones explicadas en el vídeo, también debe tener en cuenta que:

Estos ejercicios están configurados para mostrar una manera específica de hacer las cosas.

En función de sus propios hábitos y normas de desarrollo de su empresa, puede utilizar diferentes formas de organización, de nombrar a los campos y variables, de establecer un orden para pasar parámetros,etc.
Si piensa que otro modo es más adecuado, pruébelo y compare sus ventajas e inconvenientes. De esta manera usted puede confiar en su propia experiencia.

Un método puede recibir hasta 32 parámetros (de $1 a $32). Sin embargo, es inusual utilizar más de 7 u 8 parámetros.

Use y abuse de la programación genérica.

La siguiente sección cubre el uso de punteros, complementando lo que veremos aquí.

La programación genérica también le permite reducir el tamaño de su código mediante la concentración de una serie de funciones dentro del mismo método en el que pasa varios parámetros.
Para configurar la programación genérica correctamente, tenga en cuenta estas observaciones:

  • Tan pronto como escriba varias líneas de código similares a las anteriores, es probable que haya una solución genérica que pueda implementar.
  • (Más adelante) cuando dude en crear un método genérico: créelo, ¡No se arrepentirá!
  • No todo puede ser genérico. A veces, tratar de hacer las cosas demasiado genéricas puede traer pérdidas de productividad (el código no es fácil de leer, es difícil de mantener, ocupa demasiada memoria, aumenta el tiempo de procesamiento,...)

En este vídeo, vamos a aprender a llamar a los métodos y a utilizar parámetros.

Cubriremos los parámetros de tipo puntero más adelante.

El objetivo de la programación genérica es optimizar el desarrollo y facilitar el mantenimiento y la portabilidad.

Ya usamos una llamada simple a un método (sin parámetros) en el método de base "On Startup" donde llamamos el método NAVIGATION.

En las primeras lecciones de programación, vimos cómo configurar los botones en función de la página seleccionada en el formulario navigation.

Ahora vamos a optimizar esta programación para conservar un solo método utilizable para todos los botones de navegación (All, Query, Order by, etc...).

  • Mostramos el Explorador
  • Vamos a crear un nuevo método
  • Un método proyecto que vamos a llamar NAVIGATION_FUNCTIONS.

Recibirá 2 parámetros:

  • - El primero concierne a la acción a realizar en forma de texto (Buscar, Ordenar, etc.)
  • - El segundo corresponde a la página donde se ocurre el clic (1, 2, 3 y así sucesivamente)

Llamamos a este método de la siguiente manera:

En un botón, llamamos a NAVIGATION_FUNCTIONS

  • El texto correspondiente a la acción que queremos realizar
  • y aquí, como segundo parámetro, la página respectiva.

NAVIGATION_FUNCTIONS("All";FORM Get current page)
Así que queremos usar las funciones de navegación relativas al elemento "All" y pasando como segundo parámetro el número de la página a procesar.

Hay dos formas de escribir los parámetros del método que se va a llamar, es decir, el método NAVIGATION_FUNCTIONS:

  • El primer parámetro será un texto: C_TEXT($1)
  • El segundo será un entero largo: C_LONGINT($2)

Notará que para nombrar los parámetros, se utiliza la sintaxis $1, $2, ... $n para recuperar cada parámetro.

Para hacer que su método sea fácil de leer, le sugerimos crear variables locales con nombres explícitos, donde se asigna el valor de los parámetros recibidos. Por lo tanto, es mejor escribir:

 C_TEXT($1;$Action)

ya que podemos declarar varias variables en una directiva de compilación C_TEXT para las variables simples.
Aquí una segunda variable será el número de página:

 C_LONGINT($2;$PageNum)

y para recuperar el valor de $1  en $Action y el valor de $2 en $PageNum, puede escribir:

 $Action:=$1
 $PageNum:=$2

El resto del método es una adaptación de lo que se describió en las secciones anteriores, adaptación de la acción a la petición y la configuración en función de la página y por lo tanto de la tabla elegida:

Vamos a utilizar:

  • un Case of

:($Action="All")

  • y aquí vamos a recuperar el código del botón "All"
  • cortar
  • y adaptarlo en el método.

¿Cuál es la información que necesitamos reemplazar?:

  • FORM Get current page ya no es necesario ya que es enviado por el método llamante. Vamos a remplazarlo por $PageNum
  • El resto por el momento no es necesario modificarlo.

Cuando cubrimos los punteros, vamos a remplazar lo que tenemos aquí por un método más genérico.

Podemos hacer lo mismo con el botón Query.

  • - Aquí arrastramos el código manteniendo presionada la tecla ALT para copiarlo
  • - Luego vamos a tener una acción "All" y una acción "Query"
  • - Vamos a copiar el código del botón "All"
  • - Lo pegamos en el botón "Query"
  • - Remplazamos la acción aquí
  • - Copiamos el código del botón "Query"
  • - Lo cerramos
  • - Regresar al método aquí

y, como lo hicimos antes, reemplazamos FORM Get current page por la variable que hemos recibido.

Vamos a poner un punto de ruptura y comprobar que vamos a este método cuando se ejecuta el formulario:

Si hacemos clic en "Todos", vemos que el método que se está ejecutando, pero en lo que estamos especialmente interesados es en el apilamiento de los métodos:

  • la última llamada se encuentra en la parte superior
  • la anterior en la parte inferior.

Si hacemos doble clic en este método aparece el código que nos trae a este punto y podemos ver que el método NAVIGATIONS_FUNCTIONS se llamó (con los parámetros: "All", FORM Get current page). El método fue recibido. Aquí recibió los siguientes parámetros: $1 = "All", $2 = el número de página, aquí es la página 1.

Luego, $Action es "All" de manera que vamos a esta parte
Luego $PageNum es 1, por lo que utilizaremos ALL RECORDS de la tabla Interventions para determinar el número de registros correspondiente.

Luego vamos a:

  • Eliminar el punto de ruptura
    Ejecutar el método
    Cuando llegamos a Technician, si buscamos aquellos cuyo nombre contenga "bon", encontraremos BONAPARTE.
    y si pedimos "All"

Así podemos ver que nuestro método funciona correctamente, se llama y recibe los parámetros necesarios.

 
 

 
PROPIEDADES 

Producto: 4D
Tema: Programación genérica (sin punteros)

 
HISTORIA 

 
ARTICLE USAGE

Autoformación ( 4D v16)