Formation

La programmation moderne de 4D v17 (J1 + J2 + J3)

Objectifs

L'arrivée progressive des Objets dans 4D, suivie de l'introduction d'un langage orienté objet avec la v17 et le lancement du concept ORDA, ont changé radicalement la manière dont on peut penser à présent les développements 4D. Cela va bien plus loin que la notation à points ou l'apparition de nouveaux types de variables. L’introduction d’ORDA en v17 amène une toute nouvelle façon d’approcher la base de données, en mettant fin aux limitations du mode Classic, et en permettant de se libérer des concepts tels que Sélection courante et Enregistrement courant.

La programmation orientée Objet facilite le travail en équipe, la réutilisabilité du code et des objets d'interface, le débogage, et les tests. Elle est particulièrement adaptée au développement agile.

Avec les dernières versions de 4D mais surtout la v17 et le lancement du concept ORDA, sont apparus de nouveaux outils et objets, extrêmement puissants, mais dont l'utilisation optimale nécessite souvent un changement dans les méthodes de programmation, afin d'en tirer le meilleur parti. Il est souvent difficile, pour un développeur, d'étudier à fond les évolutions du produit, et d'essayer les différentes options et les nouvelles techniques. Chaque développeur a souvent 'le nez dans le guidon' et continue d'appliquer les techniques acquises en fonction de ses expériences passées. Mais le monde change, et il change vite.

Le but est de montrer (à l'aide d'exemples pratiques) comment s'adapter aux nouvelles possibilités offertes par 4D.

Nous verrons en particulier :

  • comment se servir des Objets Formulaires et/ou de leurs (nouvelles) propriétés, pour approcher la programmation orientée objet (OOP) de façon à accroître les possibilités de créer des outils indépendants des structures, complètement réutilisables, et simples à implémenter.
  • comment optimiser sa programmation pour utiliser la pleine puissance de ces nouveaux outils. les pièges potentiels liés à la manipulation d'objets par référence, et comment les éviter simplement. la structure interne et le fonctionnement précis des différents objets (nouveaux ou non), ainsi que les changements apportés à leur manipulation.
  • Le passage des notions de Sélection courante et Enregistrement courant, aux Entités et Sélections d'entités, qui ouvrent des perspectives étonnantes sur la simplification du code et la rapidité d’accès.
  • les concepts liés aux différents niveaux de contextes, que ce soient de process, de composants, de formulaires, de sous-formulaires, etc., ainsi que les cascades d'événements et les moyens de communication entre ces contextes.
  • etc.

Nous évoquerons l'utilisation de langages standards (PHP, JavaScript) dans la programmation 4D, pour résoudre des problèmes rares ou accéder à des méthodes n'existant pas dans 4D.

Enfin, à chaque étape, nous expliquerons le Pourquoi, ce qui permet de choisir le Comment en fonction des besoins. Par exemple, combien coûte l'utilisation de pointeurs, est-il préférable d'utiliser des pages multiples ou bien des sous-formulaires, quel est le poids réel des objets, comment choisir les index, ou mieux utiliser le cache, etc.

Les développeurs venant d'autres horizons (PHP, JavaScript) y trouveront également les techniques nécessaires pour passer de leurs environnements habituels à 4D, tout en conservant des concepts analogues.

Les bases exemples utilisées sont fournies, permettant au développeur de copier-coller directement les objets et méthodes dans les applications existantes.

3 jours
Expert
4D SAS - Le Pecq
1 650 € H.T.

Jour 1 & 2 : Maîtriser les nouveaux concepts

- Introduction
•    Présentation rapide des modes Classic et ORDA
•    Pourquoi faut-il choisir ORDA ?
 
- Rapide rappel sur la structure interne des objets 4D en mode Classic
•    Enregistrements
•    Tables d'adresses
•    Ensembles et Clusters
•    Index
•    Sélections et Sélections Nommées
•    Objets volumineux sur disque (blobs, images, multimédia, objets, gros textes)

 - Les objets sont partout
•    Objets
•    Collections
•    Entités
•    Sélections d'entités
 
- Les objets 4D en mémoire
•    Refcounting
•    Objets directs et Références, et Références, et Références, et encore Références
•    Utilisation correcte des Pointeurs et des Références
•    Objets type JSON
•    Objets type Collections
•    Notions de Classes d'objets
 
•    Member Functions

- Les Objets pour doper votre code
•    Objets en programmation
•    Objets comme paramètres
•    Tableaux et fonctions de Hash
•    Tableaux associatifs
        
- Variables : Du Statique au Dynamique
•    Noms des Objets Formulaires (Widgets)
•    Widgets et sources de données
•    Callbacks
•    Concepts sur les contextes
•    La fonction Form : Objet ou fonction ?
•    Objet et Data Source
•    Utilisation du langage objet dans les Formulaires
•    Utilisation extensive des ListBoxes
 
- La programmation moderne de 4D
•    Approche de la programmation orientée objet (OOP) dans 4D
•    Les Données, encore les Données, toujours les Données...
•    Des Paramètres partout...
•    Optimiser la programmation
•    Optimiser la gestion des tableaux
•    Différences entre Collections et Tableaux d'Objets
•    Utilisation du langage objet (notation à points ou à crochets) et de ses subtilités
•    Chaînage des commandes
•    Utilisation des Member Functions
•    Programmation Indépendante de la structure
•    Objets réutilisables
 
•    Composants : Pourquoi et comment
•    Optimiser les recherches
 
 
•    Utilisation des Collections
 
- Concepts et Vocabulaire
•    DataStores et DataClasses
•    Entités et Enregistrements
•    Champs réels et Champs virtuels : les relations en tant qu'attributs
•    Conceptualiser les données en se basant sur de nouveaux paradigmes
 
- La structure des données : du "Schemaful" au "Schemaflex"
•    Objets en tant que champs
•    Gérer les champs à structure variable
•    Ajouter en quelques clics, des champs librement paramétrables par l'utilisateur
•    Recherches, tris, et utilisation de ces champs : Aujourd'hui et demain
 
•    Les pièges des structures de données de type Key-Value Store
 
- Des nombres aux noms
•    Comment passer doucement des numéros de tables, de champs, de process, d'enregistrements, à des identifiants sous forme de noms : Pourquoi et comment ?

- Du 32 bits au 64 bits
•    Pourquoi faut-il passer en 64 bits ?
•    Le nouveau gestionnaire de mémoire
•    Les problèmes liés aux ressources sur Mac et Windows : PICT, cicn, STR#
 
- Du CALL PROCESS au CALL FORM
•    Se débarrasser de l'événement Sur appel extérieur
•    Se débarrasser de l'événement Sur minuteur
•    Se débarrasser des Process de CallBack
•    Multiplier les fenêtres sans multiplier les process
 
- Des Process aux Workers
•    Similarités & différences entre Process et Worker
•    Avantages des Workers
 
- Du Coopératif au Préemptif
•    Se préparer au Multithreading v16
•    Programmation parallèle et asynchrone
•    Comprendre les contextes des process, des workers, des fenêtres, et des formulaires
•    Les techniques de Messaging, Slicing, Chunking, sans (trop) de casse-têtes
•    Comment survivre à l'absence de variables inter-process ?
•    Utilisation des Objets et Collections partagées
•    Utilisation de Storage
•    Se préparer aux futures évolutions
 
- Multi-User & Record Locking
•    Verrouillage des enregistrements ou verrouillage des entités
•    Analyse de la chaîne des références de l'entité au disque en passant par le cache
 
- Pessimstic vs Optimistic Locking
•    Un choix cornélien : Verrouillage optimiste ou pessimiste ? Ca dépend...
 
 
- Enhanced Optimistic Locking
•    Comment utiliser au mieux les nouvelles possibilités apportées par ORDA
 
•    Problèmes et solutions
 
- Questions diverses

Jour 3 : Introduction aux langages Objets, aux technologies web de 4D, à la programmation multibases et aux bases de données distribuées

Cette journée est plus spécifiquement consacrée à l'intégration des bases 4D dans l'environnement moderne qui comprend les réseaux, le Web et ses services, les bases distribuées, le Big Data, le Cloud, etc.

- Utilisation de PHP et Javascript dans 4D :
•    Pourquoi, Quand, et Comment
•    Exemples pratiques et simples
•    Utilisation de scripts PHP
•    Exemple simple de greffage de PHP sur 4D
•    Exemple simple de greffage de Javascript sur 4D
•    Introduction aux échanges de données avec 4D
 
- 4D, le Web, et les Web Area
•    Utilisation des services
 
•    Interface 'à la Web"

- Programmation Multi-Base avec 4D :
•    Pourquoi, Quand, et Comment
•    Ouvertures simultanées, gestion des conflits, conversions de données
•    Bases de données distribuées, analyse des distributions, effets de la redondance et de la dénormalisation
•    Résilience augmentée et Exigences des clients

- Introduction à l'accès à 4D par REST :
•    Portage rapide d'un accès à une application 4D sur le Web (Tablettes, smartphones)
•    Adaptation de la structure
•    Connexion REST
•    Appel des méthodes 4D
•    Gestion des sélections sur mobile
•    Gestion du multi-utilisateur (Optimistic et Pessimistic Locking)
•    4D pour iOS : Première approche
 
- Questions diverses

 

Public : Développeurs 4D ou venant d'autres horizons.

Pré-requis : Bonne expérience du développement.
 

22 oct 19 - 24 oct 19
4D SAS - Le Pecq
S’enregistrer
14 jan 20 - 16 jan 20
4D SAS - Le Pecq
S’enregistrer