4D v16

Programação genérica (sem ponteiros)

Página Inicial

 
4D v16
Programação genérica (sem ponteiros)

Programação genérica (sem ponteiros)    


 

 

Além das manipulações explicadas no vídeo, também se deve ter em conta que:

Estes exercícios estão configurados para mostrar uma maneira específica de fazer as coisas.

Em função de seus próprios hábitos e normas de desenvolvimento de sua empresa, pode utilizar diferentes formas de organização, de nomear aos campos e variáveis, de estabelecer uma ordem para passar parâmetros, etc.
Se pensa que outro modo é mais adequado, prove e compare suas vantagens e inconvenientes. Desta maneira você pode confiar em sua própria experiência.

Um método pode receber até 32 parâmetros (de $1 a $32). No entanto, é incomum utilizar mais de 7 ou 8 parâmetros.

Use e abuse da programação genérica.

A seguinte seção cobre o uso de ponteiros, complementando o que veremos aqui.

A programação genérica também lhe permite reduzir o tamanho de seu código mediante a concentração de uma série de funções dentro do mesmo método nos quais passam vários parâmetros.
Para configurar a programação genérica corretamente, leve em conta estas observações:

  • Tão rápido como escreva várias linhas de código similares às anteriores, é provável que exista uma solução genérica que possa implementar.
  • (Más adiante) quando duvide em criar um método genérico: acredite, ¡Não se arrependerá!
  • Nem tudo pode ser genérico. Às vezes, tratar de fazer as coisas exageradamente genéricas pode trazer perdas de produtividade (o código não é fácil de ler, é difícil de manter, ocupa muita memória, aumenta o tempo de processamento,...)

Neste vídeo, vamos a aprender a chamar aos métodos e a utilizar parâmetros.

Cobriremos os parâmetros de tipo ponteiro mais a frente.

O objetivo da programação genérica é otimizar o desenvolvimento e facilitar a manutenção e a portabilidade.

Já usamos uma chamada simples a um método (sem parâmetros) no método de base "On Startup" onde chamamos o método NAVIGATION.

Nas primeiras lições de programação, vimos como configurar os botões em função da página selecionada no formulário navigation.

Agora vamos a otimizar esta programação para conservar somente um método utilizável para todos os botões de navegação (All, Query, Order by, etc...).

  • Mostramos o Explorador
  • Vamos a criar um novo método
  • Um método projeto que vamos a chamar NAVIGATION_FUNCTIONS.

Receberá 2 parâmetros:

  • - O primeiro concerne à ação a realizar em forma de texto (Pesquisar, Ordenar, etc.)
  • - O segundo corresponde à página onde ocorre o clique (1, 2, 3 e assim sucessivamente)

Chamamos a este método da seguinte maneira:

Em um botão, chamamos a NAVIGATION_FUNCTIONS

  • O texto correspondente à ação que queremos realizar
  • E aqui, como segundo parâmetro, a respectiva página.

NAVIGATION_FUNCTIONS("All";FORM Get current page)
Assim que queremos usar as funções de navegação relativas ao elemento "All" e passando como segundo parâmetro e o número da página a processar.

Há duas formas de escrever os parâmetros do método que vai ser chamado, ou seja, o método NAVIGATION_FUNCTIONS:

  • O primeiro parâmetro será um texto: C_TEXT($1)
  • O segundo será um inteiro longo: C_LONGINT($2)

Notará que para nomear os parâmetros, se utiliza a sintaxes $1, $2, ... $n para recuperar cada parâmetro.

Para fazer que seu método seja fácil de ler, lhe sugerimos criar variáveis locais com nomes explícitos, onde é assinalado o valor dos parâmetros recebidos. Portanto, é melhor escrever:

 C_TEXT($1;$Action)

Já que podemos declarar várias variáveis em uma diretiva de compilação C_TEXT para as variáveis simples.
Aqui uma segunda variável será o número de página:

 C_LONGINT($2;$PageNum)

y para recuperar o valor de $1  em $Action e o valor de $2 em $PageNum, pode escrever:

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

O resto do método é uma adaptação do que se descreveu nas seções anteriores, adaptação da ação à petição e a configuração em função da página e, portanto da tabela escolhida:

Vamos a utilizar:

  • um Case of

:($Action="All")

  • E aqui vamos a recuperar o código do botão "All"
  • Recortar
  • E o adaptar no método.

Qual é a informação que necessitamos substituir?:

  • FORM Get current page já não é necessário já que é enviado pelo método que é chamado. Vamos a substituí-lo por $PageNum
  • O resto pelo momento não é necessário ser modificado.

Quando cobrimos os ponteiros, vamos a substituir o que temos aqui por um método mais genérico.

Podemos fazer o mesmo com o botão Query.
  • - Aqui arrastamos o código mantendo pressionada a tecla ALT para que seja copiado
  • - Logo vamos a ter uma ação "All" e uma ação "Query"
  • - Vamos a copiar o código do botão "All"
  • - E é colado no botão "Query"
  • - Substituímos a ação aqui
  • - Copiamos o código do botão "Query"
  • - E é fechado
  • - Regressar ao método aqui

E, como o realizamos antes, substituímos FORM Get current page pela variável que recebemos.

Vamos a colocar um ponto de ruptura e comprovar que vamos a este método quando se executa o formulário:

Se fizermos clique em "Todos", vemos que o método que se está executando, mas no que estamos especialmente interessados é no empilhamento dos métodos:

  • A última chamada se encontra na parte superior
  • A anterior na parte inferior.

Se fizermos duplo clique neste método aparece o código que é traído a este ponto e podemos ver que o método NAVIGATIONS_FUNCTIONS foi chamado (com os parâmetros: "All", FORM Get current page).O método foi recebido. Aqui recebeu os seguintes parâmetros: $1 = "All", $2 = o número de página, aqui é a página 1.

Logo, $Action é "All" de maneira que vamos a esta parte
Logo $PageNum é 1, pelo que vamos a utilizar ALL RECORDS da tabela Interventions para determinar o número de registros correspondente.

Logo vamos a:

  • Eliminar o ponto de ruptura
    Executar o método
    Quando chegamos a Technician, se buscamos aqueles cujo nome contenha "bom", encontraremos BONAPARTE.
    e se pedimos "All"

Assim podemos ver que nosso método funciona corretamente, é chamado e recebe os parâmetros necessários.

 
 

 
PROPRIEDADES 

Produto: 4D
Tema: Programação genérica (sem ponteiros)

 
HISTÓRIA 

 
ARTICLE USAGE

Autoformação ( 4D v16)