4D v16

Programmation générique (sans pointeurs)

Accueil

 
4D v16
Programmation générique (sans pointeurs)

Programmation générique (sans pointeurs)    


 

 

En complément des manipulations expliquées dans la vidéo, il faut noter que :

La manière dont ces exercices sont mis en œuvre vous présente "une" manière de faire.

En fonction de vos habitudes, des normes de développement dans votre entreprise, vous trouverez des organisations différentes, un système de nommage des champs et des variables, un ordre pour passer les paramètres, etc.
Si vous “ressentez” une autre manière de faire, mettez-la en œuvre et comparez les avantages et inconvénients de chacune des solutions. C’est aussi comme cela que se forge l’expérience.

Une méthode peut recevoir jusque 32 paramètres notés $1 à $32 (NB : Il est cependant rare d'utiliser plus de 7 ou 8 paramètres.)

Usez et abusez de la programmation générique.

Le prochain chapitre concerne l’utilisation de pointeurs, c’est-à-dire un complément à ce que nous venons de voir.

La programmation générique vous permet également de diminuer la taille de votre code en concentrant toute une série de fonctions dans une même méthode à laquelle vous passez quelques paramètres.
Pour bien mettre en œuvre les méthodes génériques, retenez ces quelques constations :

  • Dès que j’écris pour la deuxième fois des lignes qui se ressemblent... il y a certainement une solution générique à envisager
  • (Plus tard) lorsque vous hésiterez à créer une méthode générique : créez-la, vous ne le regretterez jamais !
  • Tout ne peut pas être générique. Parfois, chercher à rendre trop générique engendre des pertes de productivité (perte de lisibilité, difficulté de maintenance, surchargement mémoire, augmentation des temps de traitement, ...)

Bonjour,

dans cette vidéo nous allons apprendre à appeler des méthodes et utiliser les paramètres.

Nous aborderons le passage de paramètres de type pointeurs ultérieurement.

L'objectif de cette programmation générique est d'optimiser le développement, de faciliter la maintenance et la portabilité.

Nous avons déjà utilisé l'appel simple d'une méthode (c-à-d sans paramètre) dans la méthode base "Sur Ouverture" où nous avions appelé la méthode NAVIGATION.

Nous avons vu dans les premières leçons de programmation comment paramétrer les boutons en fonction de la page sélectionnée dans le formulaire navigation.

Nous allons maintenant optimiser cette programmation pour ne conserver qu'une seule méthode utilisable par tous les boutons de navigation (Toutes, Chercher, Trier, etc ...).

  • On affiche l'explorateur
  • nous allons créer une nouvelle méthode
  • une méthode projet que nous allons appeler NAVIGATION_FONCTIONS.

Elle va recevoir 2 paramètres :

  • - Le premier concernera l'action à réaliser sous forme de texte (Chercher, Trier...)
  • - Le deuxième correspondant à la page sur laquelle on se trouve au moment du clic (1, 2, 3 et ainsi de suite . ..)

L'appel à cette méthode se fera de la manière suivante :

Dans un bouton nous appellerons NAVIGATION_FONCTIONS

  • Le texte correspondant à l'action que nous souhaitons réaliser
  • et ici comme 2è paramètre la page concernée

NAVIGATION_FONCTIONS("Toutes";Form lire page courante)
Donc nous souhaitons utiliser les fonctions de navigation concernant l'item "Toutes" et en passant comme 2è paramètre le numéro de la page à traiter.

Le typage des paramètres dans la méthode qui va être appelée, c'est à dire cette méthode NAVIGATION_FONCTIONS se fait de cette manière là :

  • Le 1er paramètre sera un texte C_TEXTE($1)
  • le 2è sera un entier long C_ENTIER LONG($2)

Vous remarquez que pour nommer les paramètres on utilise la syntaxe $1, $2, ... $n pour récupérer chacun des paramètres.

Pour des questions de lisibilité de vos méthode, je vous conseille de créer des variables locales avec des noms explicites auxquelles vous affectez la valeur des paramètres reçus. Il est donc préférable d'écrire :

 C_TEXT($1;$Action)

puisqu'on peut déclarer plusieurs variables dans une directive de compilation type C_TEXTE pour les variables simples
ici, une 2è variable qui sera le numéro de page

 C_LONGINT($2;$NumPage)


et pour récupérer dans $Action la valeur de $1 et dans $Numpage la valeur de $2, il suffit d'écrire ceci.
 $Action:=$1
 $NumPage:=$2


Le reste de la méthode est une adaptation de ce que nous avons déjà écrit dans les précédents chapitres, à savoir adapter l’action à la demande et la paramétrer en fonction de la page, donc de la table choisie :

Nous allons utiliser :

  • un au cas ou

:($Action="Toutes")

  • et là nous allons récupérer le code du bouton "Toutes"
  • couper
  • et l'adapter dans la méthode.

Quelles sont les informations à remplacer :

  • Le FORM Lire page courante n'a plus de raison d'être puisqu'il nous est envoyé par la méthode appelante. Nous allons donc le remplacer par $Numpage
  • Le reste pour l'instant n'a pas besoin d'être modifié.


Lorsque nous aborderons les pointeurs, bien évidemment nous remplacerons ce qui est ici par une méthode bien plus générique.

Nous pouvons faire la même chose avec le bouton chercher.

  • - Là je glisse le bout de code en appuyant sur ALT pour le dupliquer
  • - nous aurons donc une action "Toutes", une action "Chercher"
  • - nous allons copier le code du bouton "Toutes"
  • - venir le coller sur le bouton "Chercher"
  • - remplacer l'action ici
  • - recopier le code du bouton "Chercher"
  • - le refermer
  • - repasser sur la méthode ici

et remplacer comme tout à l'heure Form lire page courante par la variable que nous avons reçue.

Nous allons mettre un point d'arrêt et vérifier que nous passons bien dans cette méthode lors de l'exécution du formulaire :

Si on clique sur "toutes", nous voyons la méthode en cours d'exécution mais surtout ce qui est intérressant c'est l'empilement des méthodes :
  • la dernière appelée est en haut
  • la précédente en bas.

Si on double-clique sur cette méthode apparaît le code qui nous a permis d'arriver ici et on voit bien que la méthode NAVIGATIONS_FONCTIONS (avec les paramètres "Toutes", FORM lire page courante) a bien été appelée. La méthode a été reçue. Ici elle a reçu les paramètres qui sont $1 "Toutes", $2 le numéro de page c'est à dire la page 1.

Ensuite $Action vaut "Toutes" donc on est censé passer dans cette partie
ensuite $Numpage vaut 1 nous allons donc TOUT SELECTIONNER de la table Interventions et déterminer le nombre d'enregistrements concernés.

Je vais :

  • enlever le point d'arrêt
    exécuter la méthode
    en venant sur technicien si on cherche ceux dont le nom contient bon nous trouvons bien BONAPARTE.
    et si on demande toutes

donc notre méthode fonctionne bien elle est bien appelée et reçoit les paramètres.
 

 
 

 
PROPRIÉTÉS 

Produit : 4D
Thème : Programmation générique (sans pointeurs)

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

Autoformation ( 4D v16)